diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-22 09:59:31 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-22 09:59:31 +0200 |
commit | eeff5e273f22aa28e81ab080e9ffdce85ac394b8 (patch) | |
tree | 71d11c76be7c0bb649099bb55e6181f9b7c6c8a8 /src/treewalk/parser.h | |
parent | 5bd694fc7071bfb76b9f65c89d253b2b4e18cf63 (diff) | |
download | bdl-eeff5e273f22aa28e81ab080e9ffdce85ac394b8.tar.gz bdl-eeff5e273f22aa28e81ab080e9ffdce85ac394b8.zip |
Prepare skeleton for bytecode interpreter
Diffstat (limited to 'src/treewalk/parser.h')
-rw-r--r-- | src/treewalk/parser.h | 22 |
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 | |||
4 | typedef struct Visitor { | ||
5 | Token *tokens; | ||
6 | size_t current; | ||
7 | } Visitor; | ||
8 | |||
9 | // Mimics the functionality in the Scanner functions, but for entire tokens. | ||
10 | Token next_token(Visitor *visitor); | ||
11 | Token peek_token(const Visitor *visitor); | ||
12 | bool has_next_token(const Visitor *visitor); | ||
13 | |||
14 | // Parse a token into a fixnum object. | ||
15 | Object * 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. | ||
19 | Object * parse_list(Visitor *vs); | ||
20 | Object * parse_tree(Visitor *vs); | ||
21 | |||
22 | #endif // BDL_PARSER_H | ||