diff options
| author | hachem <im@hachem.wtf> | 2026-08-30 04:59:36 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-30 04:59:36 +0200 |
| commit | 4ffc0c48d0823bcc48bf88aed67324b6266810c5 (patch) | |
| tree | 063423b929c62999c0413fd426664a2757b5683a /src/parser/ast.h | |
| parent | dd6f0ff9bf51c4085bc9cde4955a2a6b5f83cde7 (diff) | |
add: parse assignment statements into procedures
Diffstat (limited to 'src/parser/ast.h')
| -rw-r--r-- | src/parser/ast.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/parser/ast.h b/src/parser/ast.h index 665bfd2..83483e9 100644 --- a/src/parser/ast.h +++ b/src/parser/ast.h @@ -1,6 +1,7 @@ #pragma once #include <stddef.h> +#include <stdbool.h> #include "lexer/lexer.h" @@ -22,12 +23,38 @@ struct Param struct Token reg; }; +enum StatementKind +{ + STATEMENT_ASSIGN, +}; + +struct AssignStatement +{ + bool target_deref; + struct Token target; + struct Token op; + struct Token value; +}; + +struct Statement +{ + enum StatementKind kind; + union + { + struct AssignStatement assign; + }; +}; + struct ProcDecl { struct Token name; struct Param* params; size_t param_count; size_t param_capacity; + + struct Statement* body; + size_t body_count; + size_t body_capacity; }; struct Program @@ -52,4 +79,5 @@ void add_data(struct Program* program, struct DataDecl decl); struct ProcDecl create_proc(void); void add_param(struct ProcDecl* proc, struct Param param); +void add_statement(struct ProcDecl* proc, struct Statement statement); void add_proc(struct Program* program, struct ProcDecl decl); |
