diff options
Diffstat (limited to 'src/bytecode/compiler.h')
-rw-r--r-- | src/bytecode/compiler.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/bytecode/compiler.h b/src/bytecode/compiler.h index 283d7a6..6991a86 100644 --- a/src/bytecode/compiler.h +++ b/src/bytecode/compiler.h | |||
@@ -16,10 +16,29 @@ bool has_next_token(const Visitor *visitor); | |||
16 | 16 | ||
17 | Chunk * compile(Token *tokens); | 17 | Chunk * compile(Token *tokens); |
18 | 18 | ||
19 | Token | ||
20 | peek_token(const Visitor *visitor) { | ||
21 | return visitor->tokens[visitor->current]; | ||
22 | } | ||
23 | |||
24 | Token | ||
25 | next_token(Visitor *visitor) { | ||
26 | return visitor->tokens[visitor->current++]; | ||
27 | } | ||
28 | |||
29 | bool | ||
30 | has_next_token(const Visitor *visitor) { | ||
31 | return visitor->current < array_size(visitor->tokens); | ||
32 | } | ||
33 | |||
19 | Chunk * | 34 | Chunk * |
20 | compile(Token *tokens) { | 35 | compile(Token *tokens) { |
21 | Chunk *chunk = NULL; | 36 | Chunk *chunk = NULL; |
22 | chunk = chunk_init(); | 37 | chunk = chunk_init(); |
38 | // error_push((Error){ | ||
39 | // .type = ERR_TYPE_COMPILER, | ||
40 | // .value = ERR_UNKNOWN, | ||
41 | // }); | ||
23 | size_t const_a = add_constant(chunk, 7); | 42 | size_t const_a = add_constant(chunk, 7); |
24 | add_code(chunk, OP_CONSTANT, 1, 1); | 43 | add_code(chunk, OP_CONSTANT, 1, 1); |
25 | add_code(chunk, const_a, 1, 1); | 44 | add_code(chunk, const_a, 1, 1); |