diff options
| author | hachem <im@hachem.wtf> | 2026-09-08 12:00:49 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-08 12:00:49 +0200 |
| commit | 9d47486aac9cd1a4422b78ee273b7a27bf7b733a (patch) | |
| tree | a015067fe963f3a24e8f37a8b9cd581540b3bb8c /src/parser/ast.h | |
| parent | 21be45a904a0afc767214298721bd2bbce19a054 (diff) | |
refactor: flatten src and migrate to meson
Diffstat (limited to 'src/parser/ast.h')
| -rw-r--r-- | src/parser/ast.h | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/src/parser/ast.h b/src/parser/ast.h deleted file mode 100644 index 288bddf..0000000 --- a/src/parser/ast.h +++ /dev/null @@ -1,245 +0,0 @@ -#pragma once - -#include <stddef.h> -#include <stdint.h> -#include <stdbool.h> - -#include "lexer/lexer.h" - -enum StoreSize -{ - STORE_SIZE_NONE, - STORE_SIZE_BYTE, - STORE_SIZE_WORD, - STORE_SIZE_DWORD, - STORE_SIZE_QWORD, -}; - -struct ConstDecl -{ - struct Token name; - struct Expr* value; -}; - -struct DataDecl -{ - struct Token name; - struct Token value; -}; - -struct EnumDecl -{ - struct Token name; - struct Token* members; - size_t member_count; - size_t member_capacity; -}; - -struct StructField -{ - struct Token name; - enum StoreSize size; -}; - -struct StructDecl -{ - struct Token name; - struct StructField* fields; - size_t field_count; - size_t field_capacity; -}; - -struct Param -{ - struct Token name; - struct Token reg; -}; - -enum ExprKind -{ - EXPR_PRIMARY, - EXPR_UNARY, - EXPR_BINARY, - EXPR_MEMBER, - EXPR_DEREF, -}; - -struct PrimaryExpr -{ - struct Token token; -}; - -struct UnaryExpr -{ - struct Token op; - struct Expr* operand; -}; - -struct BinaryExpr -{ - struct Expr* left; - struct Token op; - struct Expr* right; -}; - -struct MemberExpr -{ - struct Expr* object; - struct Token member; -}; - -struct DerefExpr -{ - bool is_signed; - enum StoreSize size; - struct Expr* address; -}; - -struct Expr -{ - enum ExprKind kind; - union - { - struct PrimaryExpr primary; - struct UnaryExpr unary; - struct BinaryExpr binary; - struct MemberExpr member; - struct DerefExpr deref; - }; -}; - -enum StatementKind -{ - STATEMENT_ASSIGN, - STATEMENT_LABEL, - STATEMENT_GOTO, - STATEMENT_SYSCALL, - STATEMENT_IF, - STATEMENT_CALL, - STATEMENT_STACK, -}; - -struct AssignStatement -{ - bool target_deref; - enum StoreSize store_size; - struct Token target; - struct Token op; - struct Expr* value; -}; - -struct LabelStatement -{ - struct Token name; -}; - -struct GotoStatement -{ - struct Token label; -}; - -struct IfStatement -{ - struct Expr* left; - struct Token comparison; - struct Expr* right; - struct Statement* body; - size_t body_count; - struct Statement* else_body; - size_t else_count; -}; - -struct CallStatement -{ - struct Token name; - struct Expr** args; - size_t arg_count; - size_t arg_capacity; -}; - -struct StackStatement -{ - struct Token name; - struct Expr* size; -}; - -struct Statement -{ - enum StatementKind kind; - union - { - struct AssignStatement assign; - struct LabelStatement label; - struct GotoStatement jump; - struct IfStatement branch; - struct CallStatement call; - struct StackStatement stack; - }; -}; - -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 Config -{ - uint32_t bits; - bool has_entry; - struct Token entry; - bool logical_registers; -}; - -struct Program -{ - struct Config config; - - struct ConstDecl* consts; - size_t const_count; - size_t const_capacity; - - struct DataDecl* data_decls; - size_t data_count; - size_t data_capacity; - - struct EnumDecl* enums; - size_t enum_count; - size_t enum_capacity; - - struct StructDecl* structs; - size_t struct_count; - size_t struct_capacity; - - struct ProcDecl* procs; - size_t proc_count; - size_t proc_capacity; -}; - -struct Program create_program(void); -void free_program(struct Program* program); -void add_const(struct Program* program, struct ConstDecl decl); -void add_data(struct Program* program, struct DataDecl decl); - -struct EnumDecl create_enum(void); -void add_enum_member(struct EnumDecl* decl, struct Token member); -void add_enum(struct Program* program, struct EnumDecl decl); - -struct StructDecl create_struct(void); -void add_struct_field(struct StructDecl* decl, struct StructField field); -void add_struct(struct Program* program, struct StructDecl decl); - -struct ProcDecl create_proc(void); -void free_proc(struct ProcDecl* proc); -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); - -void free_expr(struct Expr* expr); -void free_statement(struct Statement* statement); |
