forked from fluffos/fluffos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparse_tree
95 lines (73 loc) · 1.66 KB
/
parse_tree
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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