aboutsummaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorc+12023-05-30 07:43:00 -0400
committerc+12023-05-30 07:43:00 -0400
commit81406518603f07f65d51c694e56143edc05d7df5 (patch)
treea9e27f348a43d11a6f0df66463f9cb153938251f /src/tree.c
parent5e273897bde728e84a7f34d552258ece7e4a4b33 (diff)
AST stuff
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c54
1 files changed, 34 insertions, 20 deletions
diff --git a/src/tree.c b/src/tree.c
index b7677d3..10d564a 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -1,34 +1,48 @@
#include "include/tree.h"
+
+prim_t* prim_init(int type) {
+ prim_t* prim = calloc(1, sizeof(struct PRIM_STRUC));
+
+ prim->type = type;
+ prim->is_mutable = 0;
+
+ switch(type) {
+ case STR:
+ prim->val.prim_str.len = NULL;
+ prim->val.prim_str.val = NULL;
+ break;
+ case INT:
+ prim->val.prim_int.val = NULL;
+ default:
+ prim->val.prim_unkwn.val = NULL;
+ }
+
+ return prim;
+}
+
+
tree_t* tree_init(int type) {
tree_t* tree = calloc(1, sizeof(struct TREE_STRUC));
tree->type = type;
switch (type) {
- case TREE_VAR_DEF:
- tree->data.var_def.name = NULL;
- tree->data.var_def.val = NULL;
- tree->data.var_def.is_const = 0;
- break;
- case TREE_VAR:
- tree->data.var.name = NULL;
+ case TREE_PRIM:
+ tree->oftype.prim.val = NULL;
break;
- case TREE_FN_DEF:
- tree->data.fn_def.name = NULL;
- tree->data.fn_def.val = NULL;
- tree->data.fn_def.argv = NULL;
- tree->data.fn_def.argsize = 0;
+ case TREE_SUBTREE:
+ tree->oftype.subtree.size = 0;
+ tree->oftype.subtree.val = NULL;
break;
- case TREE_FN_CALL:
- tree->data.fn_call.name = NULL;
- tree->data.fn_call.argv = NULL;
- tree->data.fn_call.argsize = 0;
+ case TREE_DEF:
+ tree->oftype.def.args = NULL;
+ tree->oftype.def.name = NULL;
+ tree->oftype.def.val = NULL;
break;
- case TREE_STR:
- tree->data.str.val = NULL;
- tree->data.subtree.val = NULL;
- tree->data.subtree.size = 0;
+ case TREE_CALL:
+ tree->oftype.call.args = NULL;
+ tree->oftype.call.name = NULL;
break;
}