aboutsummaryrefslogtreecommitdiff
path: root/src/parser/ast.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/ast.h')
-rw-r--r--src/parser/ast.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/parser/ast.h b/src/parser/ast.h
index 30dd1e7..665bfd2 100644
--- a/src/parser/ast.h
+++ b/src/parser/ast.h
@@ -16,6 +16,20 @@ struct DataDecl
struct Token value;
};
+struct Param
+{
+ struct Token name;
+ struct Token reg;
+};
+
+struct ProcDecl
+{
+ struct Token name;
+ struct Param* params;
+ size_t param_count;
+ size_t param_capacity;
+};
+
struct Program
{
struct ConstDecl* consts;
@@ -25,9 +39,17 @@ struct Program
struct DataDecl* data_decls;
size_t data_count;
size_t data_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 ProcDecl create_proc(void);
+void add_param(struct ProcDecl* proc, struct Param param);
+void add_proc(struct Program* program, struct ProcDecl decl);