152b7c1a215407923784d22c04b7f01a312e6ded
[uebersetzerbau-ss10.git] / codea / tree.h
1 #ifndef __TREE_H
2 #define __TREE_H
3
4 #define TREENULL (struct treenode *)NULL
5 #define TREESIZE (sizeof(struct treenode))
6 #define TREECAST struct treenode *
7
8 #ifndef BFEHAX
9 typedef struct burm_state *STATEPTR_TYPE;
10 #endif
11
12 enum {
13         O_RETURN=1
14 };
15
16 static char o_names[100][100] = {
17         "",
18         "O_RETURN"
19 };
20
21 struct treenode {
22         int op;
23         struct treenode *kids[2];
24         STATEPTR_TYPE label;
25         char *name;
26         long val;
27         char *reg;
28         struct treenode *parent;
29         int skip;
30         int param_index;
31 };
32
33 typedef struct treenode *treenodep;
34
35 #define NODEPTR_TYPE treenodep
36 #define OP_LABEL(p) ((p)->op)
37 #define LEFT_CHILD(p) ((p)->kids[0])
38 #define RIGHT_CHILD(p) ((p)->kids[1])
39 #define STATE_LABEL(p) ((p)->label)
40 #define PANIC printf
41
42 struct treenode *new_node(int op, struct treenode *l, struct treenode *r);
43
44 #endif