From 81406518603f07f65d51c694e56143edc05d7df5 Mon Sep 17 00:00:00 2001 From: c+1 Date: Tue, 30 May 2023 07:43:00 -0400 Subject: AST stuff --- src/tree.c | 54 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 20 deletions(-) (limited to 'src/tree.c') 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; } -- cgit v1.2.3