X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=codea%2Ftree.h;h=f88851f0d32076977f87bf17d6af5e6a0d932a53;hb=a22dd19b88fd2fd2b377c005abd1cad02a24ca60;hp=38347ce289e9d2552fcd8fa2191a296a72159442;hpb=777a3cb3a801b3ab86e9a77fe045676ed498e350;p=uebersetzerbau-ss10.git diff --git a/codea/tree.h b/codea/tree.h index 38347ce..f88851f 100644 --- a/codea/tree.h +++ b/codea/tree.h @@ -11,7 +11,7 @@ typedef struct burm_state *STATEPTR_TYPE; enum { O_RET=1, - O_NOT, + O_NULL, O_SUB, O_MUL, O_OR, @@ -19,13 +19,18 @@ enum { O_EQ, O_ID, O_ADD, - O_NUM + O_NUM, + O_FIELD, + O_MTWO, + O_MFOUR, + O_MEIGHT, + O_MONE }; static char *o_names[] = { "", "O_RET", - "O_NOT", + "O_NULL", "O_SUB", "O_MUL", "O_OR", @@ -33,7 +38,12 @@ static char *o_names[] = { "O_EQ", "O_ID", "O_ADD", - "O_NUM" + "O_NUM", + "O_FIELD", + "O_MTWO", + "O_MFOUR", + "O_MEIGHT", + "O_MONE" }; struct treenode { @@ -46,6 +56,8 @@ struct treenode { struct treenode *parent; int skip; int param_index; + int exprcount; + int soffset; }; typedef struct treenode *treenodep; @@ -57,8 +69,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_number(long val); -struct treenode *new_param(int op, struct treenode *l, struct treenode *r, int param_index); +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