aboutsummaryrefslogtreecommitdiff
path: root/tree.h
diff options
context:
space:
mode:
authorTucker Evans <tuckerevans24@gmail.com>2019-07-14 13:24:52 -0400
committerTucker Evans <tuckerevans24@gmail.com>2019-07-14 13:24:52 -0400
commit9a71e795dc14c401e501125865b2a15fe59f617b (patch)
tree5d5c51d36089cf18c70084d77600dbe5366b1b67 /tree.h
parenta4f0f79d1dd02121ab1600a9f98941de0d07efcf (diff)
Add parse tree
Diffstat (limited to 'tree.h')
-rw-r--r--tree.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/tree.h b/tree.h
new file mode 100644
index 0000000..b7349af
--- /dev/null
+++ b/tree.h
@@ -0,0 +1,27 @@
+#ifndef TREE_H
+#define TREE_H
+
+typedef struct parse_tree {
+ int type;
+ union {
+ int ival; /* NUM */
+ float rval; /* RNUM */
+ char *sval; /* ID */
+ int opval; /* RELOP: LT LE GT GE EQ NE
+ ADDOP: PLUS MINUS OR
+ MULOP: MUL DIV
+ */
+ } attr;
+ struct parse_tree *l, *r;
+} ptree;
+
+void aux_tree_print(ptree*, int);
+void print_tree(ptree*);
+
+ptree* mktree(int, ptree*, ptree*);
+ptree* mkid(char*);
+ptree* mkinum(int);
+ptree* mkrnum(float);
+ptree* mkop(int, int, ptree*, ptree*);
+
+#endif