Skip to content

parse_tree

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
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