summaryrefslogtreecommitdiff
path: root/include/parser/proc.h
diff options
context:
space:
mode:
authorQuinn Stephens <quinn@osmora.org>2024-11-03 19:12:47 -0500
committerQuinn Stephens <quinn@osmora.org>2024-11-03 19:12:47 -0500
commit063c40584ae78a396b558a5e2a08e3d871450c0b (patch)
tree1acca2d57ba421530b1cfd2a23f0658e35e7ebae /include/parser/proc.h
parent71b10c1c765196a771ce05216395d6b78892a735 (diff)
[compiler] Parse and print procedure declarations
Signed-off-by: Quinn Stephens <quinn@osmora.org>
Diffstat (limited to 'include/parser/proc.h')
-rw-r--r--include/parser/proc.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/parser/proc.h b/include/parser/proc.h
new file mode 100644
index 0000000..0cc8471
--- /dev/null
+++ b/include/parser/proc.h
@@ -0,0 +1,34 @@
+/*
+ * Procedure parser.
+ * Copyright (c) 2023-2024, Quinn Stephens and the OSMORA team.
+ * Provided under the BSD 3-Clause license.
+ */
+
+#ifndef _PARSER_PROC_H
+#define _PARSER_PROC_H
+
+#include "list.h"
+#include "hashmap.h"
+#include "parser/var.h"
+
+struct parameter {
+ struct variable var;
+ struct list_entry list_entry;
+};
+
+struct procedure {
+ struct hashmap_entry hashmap_entry;
+
+ char *name;
+ size_t name_len;
+
+ struct hashmap vars;
+ struct list params;
+
+ struct type *ret_typ;
+ int ret_n_ptrs;
+};
+
+void parse_proc(struct parser *ctx);
+
+#endif /* !_PARSER_PROC_H */