summaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
authorJohnny Richard <johnny@johnnyrichard.com>2023-04-30 03:11:00 -0300
committerJohnny Richard <johnny@johnnyrichard.com>2023-04-30 17:40:01 +0200
commitb1f7b0cccc6986ca107d9eeb1c7d5e5e5a32dc49 (patch)
treefb1eb8192c3f6da14796d59831030dd23935edcd /src/ast.c
parent090da456910429708ef7ee202b627e3dbce17819 (diff)
gas: Compile variable expression with scope support
This patch adds the variable compilation and uses a scope (a stack of map) to lookup for identities. Today we use a vector + ref_entry structs in order to achieve the scope implementation. The ref_entry lacks memory management, we are still no sure who will be the owner of the pointer. We also want to replace the scope a hashtable_t type as soon as we get one. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com> Co-authored-by: Carlos Maniero <carlosmaniero@gmail.com>
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/ast.c b/src/ast.c
index 1131bbf..55b65fa 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -54,17 +54,14 @@ ast_node_destroy(ast_node_t *node)
case AST_VARIABLE_DECLARATION:
ast_node_destroy(node->data.variable_declaration.value);
break;
- case AST_LITERAL:
- break;
case AST_RETURN_STMT:
ast_node_destroy(node->data.return_stmt.argument);
break;
+ case AST_LITERAL:
case AST_IDENTIFIER:
- break;
case AST_UNKOWN_NODE:
+ case AST_VARIABLE:
break;
- default:
- assert(false && "unmapped free strategy");
}
free(node);
}