X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=codea%2Ftree.h;h=2e38ed4d5be5b283c8283c328888da862d2e70bb;hb=c2a8a36f40f5dd2bdb26b07c4f9fc61801abbe3d;hp=0d46c38ecccddc96288d61fcb3b7704adfba694a;hpb=f099a294f64b898e145c535b45de00895c8fbbd7;p=uebersetzerbau-ss10.git diff --git a/codea/tree.h b/codea/tree.h index 0d46c38..2e38ed4 100644 --- a/codea/tree.h +++ b/codea/tree.h @@ -10,28 +10,17 @@ typedef struct burm_state *STATEPTR_TYPE; #endif enum { - O_RET=1, - O_NOT, - O_SUB, - O_MUL, - O_OR, - O_LESS, - O_EQ, - O_ID, - O_ADD + O_RET=1, O_NULL, O_SUB, O_MUL, + O_OR=5, O_LESS, O_EQ, O_ID, O_ADD, + O_NUM=10, O_FIELD, O_MTWO, O_MFOUR, O_MEIGHT, + O_MONE=15 }; static char *o_names[] = { - "", - "O_RET", - "O_NOT", - "O_SUB", - "O_MUL", - "O_OR", - "O_LESS", - "O_EQ", - "O_ID", - "O_ADD" + "", "O_RET", "O_NULL", "O_SUB", "O_MUL", + "O_OR", "O_LESS", "O_EQ", "O_ID", "O_ADD", + "O_NUM", "O_FIELD", "O_MTWO", "O_MFOUR", "O_MEIGHT", + "O_MONE" }; struct treenode { @@ -42,8 +31,9 @@ struct treenode { long val; char *reg; struct treenode *parent; - int skip; int param_index; + int exprcount; + int soffset; }; typedef struct treenode *treenodep; @@ -55,6 +45,10 @@ typedef struct treenode *treenodep; #define STATE_LABEL(p) ((p)->label) #define PANIC printf -struct treenode *new_node(int op, struct treenode *l, struct treenode *r); +struct treenode *new_node(int op, struct treenode *l, struct treenode *r, int exprcount); +struct treenode *new_number(long val, int exprcount); +struct treenode *new_param(int op, char *name, struct treenode *l, struct treenode *r, int param_index, int exprcount); +struct treenode *new_field(char *name, struct treenode *l, struct treenode *r, int soffset, int exprcount); +void write_tree(struct treenode *node, int ident); #endif