#endif
enum {
- O_RETURN=1
+ O_RET=1,
+ O_NOT,
+ O_SUB,
+ O_MUL,
+ O_OR,
+ O_LESS,
+ O_EQ,
+ O_ID,
+ O_ADD,
+ O_NUM
};
-static char o_names[100][100] = {
+static char *o_names[] = {
"",
- "O_RETURN"
+ "O_RET",
+ "O_NOT",
+ "O_SUB",
+ "O_MUL",
+ "O_OR",
+ "O_LESS",
+ "O_EQ",
+ "O_ID",
+ "O_ADD",
+ "O_NUM"
};
struct treenode {
struct treenode *parent;
int skip;
int param_index;
+ int exprcount;
};
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, struct treenode *l, struct treenode *r, int param_index, int exprcount);
+void write_tree(struct treenode *node, int ident);
#endif