X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=gesamt%2Ftree.h;h=e7fd68f9297d8ae2e6771dd12b19963fef0ed5bc;hb=e01d4b5591d2684af59e9dbb30330da9aa145794;hp=b99b8d2a251b40806cbbd799943f36830ddde3e9;hpb=dc9777f5c4d517c8c4f2888449250c8f187f2fa6;p=uebersetzerbau-ss10.git diff --git a/gesamt/tree.h b/gesamt/tree.h index b99b8d2..e7fd68f 100644 --- a/gesamt/tree.h +++ b/gesamt/tree.h @@ -13,14 +13,16 @@ enum { 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, O_ASSIGN, O_IF, O_BOOL, O_CALL + O_MONE=15, O_ASSIGN, O_IF, O_BOOL, O_CALL, + O_ARG=20, O_NOTHING, O_EXPR }; static char *o_names[] = { "", "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", "O_ASSIGN", "O_IF", "O_BOOL", "O_CALL" + "O_MONE", "O_ASSIGN", "O_IF", "O_BOOL", "O_CALL", + "O_ARG", "O_NOTHING", "O_EXPR" }; struct treenode { @@ -33,6 +35,8 @@ struct treenode { struct treenode *parent; int param_index; int soffset; + int paramges; + int vars; }; typedef struct treenode *treenodep; @@ -48,7 +52,10 @@ struct treenode *new_node(int op, struct treenode *l, struct treenode *r); struct treenode *new_number(long val); struct treenode *new_param(int op, char *name, struct treenode *l, struct treenode *r, int param_index); struct treenode *new_field(char *name, struct treenode *l, struct treenode *r, int soffset); -struct treenode *new_call(char *name, struct treenode *l, struct treenode *r); +struct treenode *new_call(char *name, struct treenode *l, struct treenode *r, int paramges, int vars); +struct treenode *new_arg(struct treenode *l, struct treenode *r, int soffset); +struct treenode *new_nothing(void); void write_tree(struct treenode *node, int ident); +void just_calls(struct treenode *node); #endif