diff options
author | c+1 | 2023-11-18 23:14:24 -0500 |
---|---|---|
committer | c+1 | 2023-11-18 23:14:24 -0500 |
commit | 000658c8405f93bf8ce1e03a9055e6944e730534 (patch) | |
tree | 9d49aefb841a413351a3c0168497a93053062000 /src/tree.c | |
parent | 2cc68205a1c0b746ad405607940e7183c4fb09b0 (diff) |
I honestly don't remember. Parser stuff. Probably.
Diffstat (limited to 'src/tree.c')
-rw-r--r-- | src/tree.c | 50 |
1 files changed, 37 insertions, 13 deletions
@@ -8,6 +8,10 @@ tree_t* tree_init(int type) { tree->type = type; switch (tree->type) { + case TREE_TYPE_BLOCK: + tree->data.block.val = NULL; + tree->data.block.nxt = NULL; + break; case TREE_TYPE_LINT: tree->data.lint.val = 0; break; @@ -44,21 +48,41 @@ void tree_destroy(tree_t* tree) { free(tree); } -tree_targ_t* tree_targ_init(tree_t* tree) { - tree_targ_t* targ; +void tree_print(tree_t* tree, int nest) { + char* spaces; + int i; - targ = emalloc(sizeof(tree_targ_t)); - targ->tree = tree; - targ->nxt = NULL; + for (spaces = ecalloc(nest + 1, sizeof(char)), i = 0; i < nest; spaces[i++] = ' '); + spaces[i] = '\0'; - return targ; -} +#define NEST(TEXT) log_raw("%s" TEXT "\n", spaces); -void tree_targ_destroy(tree_targ_t* targ) { - if (targ->nxt) { - tree_targ_destroy(targ->nxt); - targ->nxt = NULL; + if (!tree) { + NEST("NULL"); + return; } - free(targ); -} + switch (tree->type) { + case TREE_TYPE_BLOCK: + NEST("[block]"); + NEST(" - val:"); + tree_print(tree->data.block.val, nest + 3); + NEST(" - nxt:"); + tree_print(tree->data.block.nxt, nest + 3); + break; + case TREE_TYPE_LINT: + log_raw("%s[lint]: %d\n", spaces, tree->data.lint.val); + break; + case TREE_TYPE_LSTR: + log_raw("%s[lstr]: %s\n", spaces, tree->data.lstr.val); + break; + case TREE_TYPE_TAG: + case TREE_TYPE_DARG: + case TREE_TYPE_CARG: + case TREE_TYPE_DEF: + case TREE_TYPE_CAL: + NEST("??"); + break; + } + +} |