aboutsummaryrefslogtreecommitdiffstats
path: root/src/treewalk/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/treewalk/parser.h')
-rw-r--r--src/treewalk/parser.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/treewalk/parser.h b/src/treewalk/parser.h
new file mode 100644
index 0000000..3834c75
--- /dev/null
+++ b/src/treewalk/parser.h
@@ -0,0 +1,22 @@
1#ifndef BDL_PARSER_H
2#define BDL_PARSER_H
3
4typedef struct Visitor {
5 Token *tokens;
6 size_t current;
7} Visitor;
8
9// Mimics the functionality in the Scanner functions, but for entire tokens.
10Token next_token(Visitor *visitor);
11Token peek_token(const Visitor *visitor);
12bool has_next_token(const Visitor *visitor);
13
14// Parse a token into a fixnum object.
15Object * parse_fixnum(Token tok);
16
17// Recursive descent parser. If an object is not a list the parsing is handled
18// by the parse_tree function.
19Object * parse_list(Visitor *vs);
20Object * parse_tree(Visitor *vs);
21
22#endif // BDL_PARSER_H