aboutsummaryrefslogtreecommitdiff
path: root/src/parser/ast.c
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-30 13:42:31 +0200
committerhachem <im@hachem.wtf>2026-08-30 13:42:31 +0200
commitdeed096e783fca21b1773fa84c28be139a3c57ad (patch)
tree6ea3743f5d26a130c25c2df1af1d33a0c916348e /src/parser/ast.c
parent9e979a49b041a9d0e8ba6f8fee50bd11520169af (diff)
add: parse conditional expressions
Diffstat (limited to 'src/parser/ast.c')
-rw-r--r--src/parser/ast.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/parser/ast.c b/src/parser/ast.c
index 97cdb6d..9bdf4d1 100644
--- a/src/parser/ast.c
+++ b/src/parser/ast.c
@@ -25,8 +25,20 @@ void free_expr(struct Expr* expr)
static void free_statement(struct Statement* statement)
{
- if (statement->kind == STATEMENT_ASSIGN)
- free_expr(statement->assign.value);
+ switch (statement->kind)
+ {
+ case STATEMENT_ASSIGN:
+ free_expr(statement->assign.value);
+ break;
+ case STATEMENT_IF:
+ free_expr(statement->branch.left);
+ free_expr(statement->branch.right);
+ free_statement(statement->branch.body);
+ free(statement->branch.body);
+ break;
+ default:
+ break;
+ }
}
void free_proc(struct ProcDecl* proc)