general / parse_tree

Edit on Github

NODE_TERNARY_OP: l.expr: first arg r.expr: NODE_BINARY_OP

NODE_BINARY_OP: v.number: opcode l.expr, r.expr: arguments

NODE_UNARY_OP: v.number: opcode r.expr: argument

NODE_OPCODE: v.number: opcode

NODE_OPCODE_1: v.number: opcode l.number: param

NODE_OPCODE_2: v.number: opcode l.number: param1 r.number: param2

NODE_UNARY_OP_1: r.expr: argument v.number: opcode l.number: param

NODE_BINARY_OP_1: r.expr, l.expr: args v.number: opcode type: param

NODE_TERNARY_OP_1: l.expr: first arg r.expr: NODE_BINARY_OP type: param

NODE_RETURN: r.expr: return value (may be zero)

NODE_LAND_LOR: l.expr, r.expr: expressions v.number: F_LAND, F_LOR

NODE_BRANCH_LINK: l.expr, r.expr: expressions

NODE_CALL, NODE_CALL_1: r.expr: expr_list v.number: opcode l.number: param (short)

NODE_CALL_2: r.expr: expr_list v.number: opcode l.number: param2 « 16 + param (short)

NODE_TWO_VALUES: l.expr, r.expr: two values ;)

NODE_CONTROL_JUMP: v.number: (CJ_BREAK, CJ_BREAK_SWITCH, CJ_CONTINUE)

NODE_PARAMETER: v.number: index

NODE_PARAMETER_LVALUE: v.number: index

NODE_IF: v.expr: condition l.expr: statement r.expr: else statement

NODE_LOOP: type: if non-zero, do test at top of loop v.expr: block l.expr: inc r.expr: test

NODE_FOREACH: l.expr: first var r.expr: second var, or zero v.expr: the expression

NODE_LVALUE_EFUN: l.expr: binary/ternary expression with builtin args r.expr: lvalue list

NODE_EFUN: r.expr: expr_list v.number: opcode ( + 1024 if void valued efun is used) l.number: num args