From 9bb350e99370009a18df3c3b8f512d2c11168978 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 22 Oct 2021 15:35:28 +0200 Subject: Add visitor to compiler --- src/bytecode/compiler.h | 19 +++++++++++++++++++ src/bytecode/errors.h | 1 + 2 files changed, 20 insertions(+) (limited to 'src/bytecode') 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); Chunk * compile(Token *tokens); +Token +peek_token(const Visitor *visitor) { + return visitor->tokens[visitor->current]; +} + +Token +next_token(Visitor *visitor) { + return visitor->tokens[visitor->current++]; +} + +bool +has_next_token(const Visitor *visitor) { + return visitor->current < array_size(visitor->tokens); +} + Chunk * compile(Token *tokens) { Chunk *chunk = NULL; chunk = chunk_init(); + // error_push((Error){ + // .type = ERR_TYPE_COMPILER, + // .value = ERR_UNKNOWN, + // }); size_t const_a = add_constant(chunk, 7); add_code(chunk, OP_CONSTANT, 1, 1); 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 { ERR_TYPE_OK, ERR_TYPE_LEXER, ERR_TYPE_PARSER, + ERR_TYPE_COMPILER, ERR_TYPE_RUNTIME, } ErrorType; -- cgit v1.2.1