Category:LSL Operators

From Second Life Wiki
Revision as of 03:19, 9 January 2010 by Void Singer (talk | contribs) (updating)
Jump to navigation Jump to search

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*
++ -- Increment/Decrement Right to Left
(type)
~
!
-
Typecast
Bitwise NOT
Logical NOT
Negation
Right to Left
/
%
*
|
^
Division
Modulus
Multiplication
Bitwise OR
Bitwise eXclusive OR
Left to Right
+
-
Addition/Concatenation
Subtraction
Left to Right
<< >> Bitwise Shift Left/Right Left to Right
< >
<= >=
Less/Greater Than
Less/Greater Than or Equal
Left to Right
== != Equivalent/NOT Equivalent Left to Right
& Bitwise AND Left to Right?
^ Bitwise eXclusive OR Left to Right?
| Bitwise OR Left to Right?
&& || Logical AND / OR Left to Right
=
+= -= /= %= *=
Assignment
Additive/Subtractive/Divisive/Modulo/Multiplicative Assignment
Right to Left*


  • both the Comma and the Assignment Operators are special cases

Commas promote operators 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>

Pages in category "LSL Operators"

This category contains only the following page.