codea: bug mit addq regel gefixt
[uebersetzerbau-ss10.git] / codea / tree.h
index 0d46c38ecccddc96288d61fcb3b7704adfba694a..f33d1e06edbc84d9afec504ebc1ddcf041c38a5a 100644 (file)
@@ -11,27 +11,31 @@ typedef struct burm_state *STATEPTR_TYPE;
 
 enum {
        O_RET=1,
-       O_NOT,
+       O_NULL,
        O_SUB,
        O_MUL,
        O_OR,
        O_LESS,
        O_EQ,
        O_ID,
-       O_ADD
+       O_ADD,
+       O_NUM,
+       O_FIELD
 };
 
 static char *o_names[] = {
        "",
        "O_RET",
-       "O_NOT",
+       "O_NULL",
        "O_SUB",
        "O_MUL",
        "O_OR",
        "O_LESS",
        "O_EQ",
        "O_ID",
-       "O_ADD"
+       "O_ADD",
+       "O_NUM",
+       "O_FIELD"
 };
 
 struct treenode {
@@ -44,6 +48,8 @@ struct treenode {
        struct treenode *parent;
        int skip;
        int param_index;
+       int exprcount;
+       int soffset;
 };
 
 typedef struct treenode *treenodep;
@@ -55,6 +61,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