Variable Assignment:
x = --> =x
x += --> +=x
x -= --> -=x
x++ --> ++x
x-- --> --x
Note: The current version of slang does not distguish between the
post and pre-increment operators. A future version may make a
distinction and assignment statements may return a value.
Function Definition: define f (arg1, ..., argN) { statements }
--> ( [ arg1 arg2 ... argN ] =argN ... =arg1 rpn-statements ) f
Variable Declaration: variable x1, ... xN;
--> [ x1 ... xN ]
Structure Definition: struct {f1, ... fN}
--> "f1" ... "fN" N struct
Structure Typedef: typedef struct { f1, ... fN } Type_Name ;
--> __typedef f1 ... fN ] "Type_Name"
Multiple Assignment Expression: (x1, ..., xN) = expression
--> rpn-expression =xN ... =x1
Note: If xj is missing, it will be replaced by `pop'
Function call: f (x1, ..., xN)
--> __arg x1 ... xN __earg f
Note: if xj is missing, it will be replaced by NULL
Array reference: X [x1, .., xN]
--> __arg x1 ... xN X __aget
Note: __earg is implicit
Array assignment: X [x1, ... xN] ASSIGNMENT-OP
--> __arg x1 ... xN X RPN-ASSIGNMENT-OP
ASSIGNMENT-OP:
= --> __aput
++ --> __aput_plusplus
-- --> __aput_minusminus
+= --> __aput_pluseqs
-= --> __aput_minuseqs
Note: __earg is implicit
Structure Reference: X.a --> "a" X .
Structure Assignment: X.a ASSIGNMENT-OP expression;
--> rpn-expression "a" X RPN-ASSIGNMENT-OP
ASSIGNMENT-OP --> RPN-ASSIGNMENT-OP:
= --> __struct_eqs
+= --> __struct_pluseqs
-= --> __struct_minuseqs
-- --> __struct_minusminus
++ --> __struct_plusplus
Variable Alias: &x --> __alias x