diff options
Diffstat (limited to 'src/include/tree.h')
-rw-r--r-- | src/include/tree.h | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/src/include/tree.h b/src/include/tree.h index 34e8e4f..1cf029c 100644 --- a/src/include/tree.h +++ b/src/include/tree.h @@ -19,19 +19,41 @@ typedef struct TREE_STRUC { TREE_SUBTREE, } type; - char* var_def_name; - struct TREE_STRUC* var_def_val; - - char* var_name; - - char* fn_call_name; - struct TREE_STRUC** fn_call_argv; - size_t fn_call_argsize; - - char* str_val; - - struct TREE_STRUC* subtree_val; - size_t subtree_size; + union tree_union { + + struct var_def_struc { + char* name; + struct TREE_STRUC* val; + int is_const; + } var_def; + + struct var_struc { + char* name; + } var; + + struct fn_def_struc { + char* name; + struct TREE_STRUC** val; + struct TREE_STRUC** argv; + size_t argsize; + } fn_def; + + struct fn_call_struc { + char* name; + struct TREE_STRUC** argv; + size_t argsize; + } fn_call; + + struct str_struc { + char* val; + } str; + + struct subtree_struc { + struct TREE_STRUC* val; + size_t size; + } subtree; + + } data; } tree_t; |