diff options
-rw-r--r-- | src/bytecode/compiler.h | 19 | ||||
-rw-r--r-- | src/bytecode/errors.h | 1 |
2 files changed, 20 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); |
diff --git a/src/bytecode/errors.h b/src/bytecode/errors.h index c54d1f4..7b3446e 100644 --- a/src/bytecode/errors.h +++ b/src/bytecode/errors.h | |||
@@ -5,6 +5,7 @@ typedef enum ErrorType { | |||
5 | ERR_TYPE_OK, | 5 | ERR_TYPE_OK, |
6 | ERR_TYPE_LEXER, | 6 | ERR_TYPE_LEXER, |
7 | ERR_TYPE_PARSER, | 7 | ERR_TYPE_PARSER, |
8 | ERR_TYPE_COMPILER, | ||
8 | ERR_TYPE_RUNTIME, | 9 | ERR_TYPE_RUNTIME, |
9 | } ErrorType; | 10 | } ErrorType; |
10 | 11 | ||