diff options
| author | hachem <im@hachem.wtf> | 2026-09-04 20:00:52 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-04 20:00:52 +0200 |
| commit | 9283b46a08a1c58c321b6c7ebad1353725c3bc47 (patch) | |
| tree | 5fba917f42bdbaf86f27abc01577b3c1b232e409 /src/parser/ast.h | |
| parent | 56ba8b2a373dd1386950592bda9c68ff9f25c203 (diff) | |
feat: add if/else blocks
if now guards a { } block or bare statement with an optional else (and
now else-if chaining). The branch body becomes a statement list; a bare
guarded statement is a list of length one.
Diffstat (limited to 'src/parser/ast.h')
| -rw-r--r-- | src/parser/ast.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/parser/ast.h b/src/parser/ast.h index c439747..75d0bdd 100644 --- a/src/parser/ast.h +++ b/src/parser/ast.h @@ -135,6 +135,9 @@ struct IfStatement struct Token comparison; struct Expr* right; struct Statement* body; + size_t body_count; + struct Statement* else_body; + size_t else_count; }; struct CallStatement @@ -230,3 +233,4 @@ void add_statement(struct ProcDecl* proc, struct Statement statement); void add_proc(struct Program* program, struct ProcDecl decl); void free_expr(struct Expr* expr); +void free_statement(struct Statement* statement); |
