diff options
| author | Mistivia <i@mistivia.com> | 2025-06-17 09:12:35 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-06-17 09:12:35 +0800 |
| commit | 6f1cfbda4a519ad8a232d126539a2732ab43c671 (patch) | |
| tree | fe33602e4dd8419b216ca755ea91c63c72ffa65b /src/parser.h | |
init
Diffstat (limited to 'src/parser.h')
| -rw-r--r-- | src/parser.h | 35 |
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 + |
