aboutsummaryrefslogtreecommitdiff
path: root/src/include/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/tree.h')
-rw-r--r--src/include/tree.h48
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;