diff --git a/src/ast.c b/src/ast.c index d53ab49..65ac611 100644 --- a/src/ast.c +++ b/src/ast.c @@ -26,6 +26,7 @@ void ast_node_free(ast_node_t *node) { if (node->children) { for (size_t i = 0; i < node->len; ++i) ast_node_free(node->children[i]); + free(node->children); } ast_node_free_value(node); diff --git a/src/ast.h b/src/ast.h index e64fb0e..6e6b5cc 100644 --- a/src/ast.h +++ b/src/ast.h @@ -17,7 +17,6 @@ typedef enum node_id { NODE_INSTRUCTION, NODE_OPERANDS, NODE_OPERAND, - NODE_REGISTER, NODE_IMMEDIATE, NODE_MEMORY, NODE_NUMBER, @@ -28,6 +27,10 @@ typedef enum node_id { NODE_REGISTER_OFFSET, NODE_PLUS_OR_MINUS, + // Validated primitives + NODE_REGISTER, + NODE_SECTION, + // Primitive nodes NODE_IDENTIFIER, NODE_DECIMAL,