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