Difference between revisions of "Category:LSL Operators"

From Second Life Wiki
Jump to navigation Jump to search
(→‎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)
Line 92: Line 92:
Assigment operators Demote all precedences to the Left of them (but obey all precedences below above increment/decrement.
Assigment operators Demote all precedences to the Left of them (but obey all precedences below above increment/decrement.
<lsl>//-- example:
<lsl>//-- example:
integer a;
integer a = 0;


default{
default{
Line 100: Line 100:
}</lsl>
}</lsl>


=== Right To Left ====
=== Right To Left ===


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

Revision as of 16:50, 10 January 2010

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 = 0;

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.