Chris@0: Mathematical operators Chris@0: ----- Chris@0: > $b; Chris@0: $a ** $b; Chris@0: Chris@0: // associativity Chris@0: $a * $b * $c; Chris@0: $a * ($b * $c); Chris@0: Chris@0: // precedence Chris@0: $a + $b * $c; Chris@0: ($a + $b) * $c; Chris@0: Chris@0: // pow is special Chris@0: $a ** $b ** $c; Chris@0: ($a ** $b) ** $c; Chris@0: ----- Chris@0: array( Chris@0: 0: Expr_BitwiseNot( Chris@0: expr: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: comments: array( Chris@0: 0: // unary ops Chris@0: ) Chris@0: ) Chris@0: 1: Expr_UnaryPlus( Chris@0: expr: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: ) Chris@0: 2: Expr_UnaryMinus( Chris@0: expr: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: ) Chris@0: 3: Expr_BinaryOp_BitwiseAnd( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: comments: array( Chris@0: 0: // binary ops Chris@0: ) Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: comments: array( Chris@0: 0: // binary ops Chris@0: ) Chris@0: ) Chris@0: 4: Expr_BinaryOp_BitwiseOr( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 5: Expr_BinaryOp_BitwiseXor( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 6: Expr_BinaryOp_Concat( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 7: Expr_BinaryOp_Div( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 8: Expr_BinaryOp_Minus( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 9: Expr_BinaryOp_Mod( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 10: Expr_BinaryOp_Mul( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 11: Expr_BinaryOp_Plus( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 12: Expr_BinaryOp_ShiftLeft( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 13: Expr_BinaryOp_ShiftRight( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 14: Expr_BinaryOp_Pow( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: 15: Expr_BinaryOp_Mul( Chris@0: left: Expr_BinaryOp_Mul( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: comments: array( Chris@0: 0: // associativity Chris@0: ) Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: comments: array( Chris@0: 0: // associativity Chris@0: ) Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: comments: array( Chris@0: 0: // associativity Chris@0: ) Chris@0: ) Chris@0: 16: Expr_BinaryOp_Mul( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_BinaryOp_Mul( Chris@0: left: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: ) Chris@0: ) Chris@0: 17: Expr_BinaryOp_Plus( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: comments: array( Chris@0: 0: // precedence Chris@0: ) Chris@0: ) Chris@0: right: Expr_BinaryOp_Mul( Chris@0: left: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: ) Chris@0: comments: array( Chris@0: 0: // precedence Chris@0: ) Chris@0: ) Chris@0: 18: Expr_BinaryOp_Mul( Chris@0: left: Expr_BinaryOp_Plus( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: ) Chris@0: 19: Expr_BinaryOp_Pow( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: comments: array( Chris@0: 0: // pow is special Chris@0: ) Chris@0: ) Chris@0: right: Expr_BinaryOp_Pow( Chris@0: left: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: ) Chris@0: comments: array( Chris@0: 0: // pow is special Chris@0: ) Chris@0: ) Chris@0: 20: Expr_BinaryOp_Pow( Chris@0: left: Expr_BinaryOp_Pow( Chris@0: left: Expr_Variable( Chris@0: name: a Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: b Chris@0: ) Chris@0: ) Chris@0: right: Expr_Variable( Chris@0: name: c Chris@0: ) Chris@0: ) Chris@0: )