Category:LSL Operators

From Second Life Wiki
Revision as of 16:46, 10 January 2010 by Strife Onizuka (talk | contribs) (→‎Operator Precedence (Order of Operations): All of the bytecode operators in LSO are backwards, which is why it's Right to Left. Only list expressions and function parameters are executed left to)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Page recreated to house the future revision of the LSL_Operators page into categorized Content. Please do not delete.

if you're looking for the current version, it may be found at LSL_Operators.

Operator Precedence (Order of Operations)

current rough draft of precedence

Operator Description Associativity
()
[]
Parenthesis
List Constructor
Inner to Outer
then
Right to Left
, Comma Left to Right[1]
++ -- Increment/Decrement Right to Left
(type)
~
!
-
Typecast
Bitwise NOT
Logical NOT
Negation
Right to Left
/
%
*
|
^
Division
Modulus
Multiplication
Bitwise OR
Bitwise eXclusive OR
Right to Left
+
-
Addition/Concatenation
Subtraction
Right to Left
<< >> Bitwise Shift Left/Right Right to Left
< >
<= >=
Less/Greater Than
Less/Greater Than or Equal
Right to Left
== != Equivalent/NOT Equivalent Right to Left
& Bitwise AND Right to Left
^ Bitwise eXclusive OR Right to Left
| Bitwise OR Right to Left
&& || Logical AND / OR Right to Left
=
+= -= /= %= *=
Assignment
Additive/Subtractive/Divisive/Modulo/Multiplicative Assignment
Right to Left[1]
  1. ^ Both the Comma and the Assignment Operators are special cases. Commas promote all Operators to the left. However within parenthesis and brackets obey those respective precedences.

<lsl>//-- example: float a; float b; float c;

string uExample( float x, float y ){

   return (string)x + " " + (string)y;

}

default{

   state_entry(){
       string vStrReport = "\n" + (string)(++a) + " " + (string)(++a); //-- first line reports "2.000000 1.000000"
       vStrReport += "\n" + (string)[++b, " ", ++b]; //-- second line reports "1.000000 2.000000"
       vStrReport += "\n" + uExample( ++c, ++c ); //-- third line reports "1.000000 2.000000"
       llOwnerSay( vStrReport );
   }

}</lsl> Assigment operators Demote all precedences to the Left of them (but obey all precedences below above increment/decrement. <lsl>//-- example: integer a;

default{

   state_entry(){
       llOwnerSay( (string)(++a + a *= ++a) ); //-- yields  "3" instead of "4"
   }

}</lsl>

Right To Left =

  • Placeholder for commentary about the LSL compiler and LSO R2L implications.

Pages in category "LSL Operators"

This category contains only the following page.