4 #define TREENULL (struct treenode *)NULL
5 #define TREESIZE (sizeof(struct treenode))
6 #define TREECAST struct treenode *
9 typedef struct burm_state *STATEPTR_TYPE;
13 O_RET=1, O_NULL, O_SUB, O_MUL,
14 O_OR=5, O_LESS, O_EQ, O_ID, O_ADD,
15 O_NUM=10, O_FIELD, O_MTWO, O_MFOUR, O_MEIGHT,
16 O_MONE=15, O_ASSIGN, O_IF, O_BOOL
19 static char *o_names[] = {
20 "", "O_RET", "O_NULL", "O_SUB", "O_MUL",
21 "O_OR", "O_LESS", "O_EQ", "O_ID", "O_ADD",
22 "O_NUM", "O_FIELD", "O_MTWO", "O_MFOUR", "O_MEIGHT",
23 "O_MONE", "O_ASSIGN", "O_IF", "O_BOOL"
28 struct treenode *kids[2];
33 struct treenode *parent;
38 typedef struct treenode *treenodep;
40 #define NODEPTR_TYPE treenodep
41 #define OP_LABEL(p) ((p)->op)
42 #define LEFT_CHILD(p) ((p)->kids[0])
43 #define RIGHT_CHILD(p) ((p)->kids[1])
44 #define STATE_LABEL(p) ((p)->label)
47 struct treenode *new_node(int op, struct treenode *l, struct treenode *r);
48 struct treenode *new_number(long val);
49 struct treenode *new_param(int op, char *name, struct treenode *l, struct treenode *r, int param_index);
50 struct treenode *new_field(char *name, struct treenode *l, struct treenode *r, int soffset);
51 void write_tree(struct treenode *node, int ident);