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
|
/* proj2.h */
typedef struct treenode
{ /* syntax tree node struct */
int NodeKind, NodeOpType, IntVal;
struct treenode *LeftC, *RightC;
} ILTree, *tree;
tree Root;
typedef union
{
int intg;
tree tptr;
} YYSTYPE;
#define ProgramOp 100
#define BodyOp 101
#define DeclOp 102
#define CommaOp 103
#define ArrayTypeOp 104
#define TypeIdOp 105
#define BoundOp 106
#define RecompOp 107
#define ToOp 108
#define DownToOp 109
#define ConstantIdOp 110
#define ProceOp 111
#define FuncOp 112
#define HeadOp 113
#define RArgTypeOp 114
#define VArgTypeOp 115
#define StmtOp 116
#define IfElseOp 117
#define LoopOp 118
#define SpecOp 119
#define RoutineCallOp 120
#define AssignOp 121
#define ReturnOp 122
#define AddOp 123
#define SubOp 124
#define MultOp 125
#define DivOp 126
#define LTOp 127
#define GTOp 128
#define EQOp 129
#define NEOp 130
#define LEOp 131
#define GEOp 132
#define AndOp 133
#define OrOp 134
#define UnaryNegOp 135
#define NotOp 136
#define VarOp 137
#define SelectOp 138
#define IndexOp 139
#define FieldOp 140
#define SubrangeOp 141
#define ExitOp 142
#define ClassOp 143
#define MethodOp 144
#define ClassDefOp 145
#define IDNode 200
#define NUMNode 201
#define CHARNode 202
#define STRINGNode 203
#define DUMMYNode 204
#define EXPRNode 205
#define INTEGERTNode 206
#define CHARTNode 207
#define BOOLEANTNode 208
#define STNode 209
tree NullExp();
tree MakeLeaf(int, int);
tree MakeTree(int, tree, tree);
/*tree LeftChild(tree);
tree RightChild(tree); */
tree MkLeftC(tree, tree);
tree MkRightC(tree, tree);
/*
void SetNode(tree, tree);
void SetNodeOp(tree, int);
void SetLeftTreeOp(tree, int);
void SetRightTreeOp(tree, int);
void SetLeftChild(tree, tree);
void SetRightChild(tree, tree); */
|