aboutsummaryrefslogtreecommitdiff
path: root/src/parser.h
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-17 09:12:35 +0800
committerMistivia <i@mistivia.com>2025-06-17 09:12:35 +0800
commit6f1cfbda4a519ad8a232d126539a2732ab43c671 (patch)
treefe33602e4dd8419b216ca755ea91c63c72ffa65b /src/parser.h
init
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/parser.h b/src/parser.h
new file mode 100644
index 0000000..3f159b8
--- /dev/null
+++ b/src/parser.h
@@ -0,0 +1,35 @@
+#ifndef BAMBOO_LISP_PARSER_H_
+#define BAMBOO_LISP_PARSER_H_
+
+#include <stdbool.h>
+
+#include "sexp.h"
+
+typedef struct {
+
+} Parser;
+
+typedef struct {
+ SExpRef val;
+ const char *errmsg;
+} ParseResult;
+
+int parser_getchar(Parser *ctx);
+int parser_peek(Parser *ctx);
+
+ParseResult parse_sexp(Parser *ctx);
+ParseResult parse_list(Parser *ctx);
+ParseResult parse_quote(Parser *ctx);
+ParseResult parse_unquote(Parser *ctx);
+ParseResult parse_slicing_unquote(Parser *ctx);
+ParseResult parse_quasi(Parser *ctx);
+ParseResult parse_atom(Parser *ctx);
+ParseResult parse_number(Parser *ctx);
+ParseResult parse_integer(Parser *ctx);
+ParseResult parse_real(Parser *ctx);
+ParseResult parse_symbol(Parser *ctx);
+ParseResult parse_string(Parser *ctx);
+ParseResult parse_char(Parser *ctx);
+
+#endif
+