From 76821f9d76282419823f3c85b042ad72863d4077 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sun, 24 Oct 2021 14:14:31 +0200 Subject: Add set! keyword and OP --- src/bytecode/compiler.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/bytecode/compiler.h') diff --git a/src/bytecode/compiler.h b/src/bytecode/compiler.h index e2d5819..b1cdfb9 100755 --- a/src/bytecode/compiler.h +++ b/src/bytecode/compiler.h @@ -91,7 +91,7 @@ compile_list_binary_op(Chunk *chunk, Visitor *vs, Token start, Ops op) { } parse_tree(chunk, vs); if (tok.type == TOKEN_SYMBOL) { - add_code(chunk, OP_GET_GLOBAL, tok.line, tok.column); + add_code(chunk, OP_GET, tok.line, tok.column); } n++; } @@ -127,7 +127,7 @@ compile_list_unary_op(Chunk *chunk, Visitor *vs, Token start, Ops op) { } parse_tree(chunk, vs); if (tok.type == TOKEN_SYMBOL) { - add_code(chunk, OP_GET_GLOBAL, tok.line, tok.column); + add_code(chunk, OP_GET, tok.line, tok.column); } add_code(chunk, op, start.line, start.column); n++; @@ -183,7 +183,7 @@ compile_list_simple_op(Chunk *chunk, Visitor *vs, Token start, Ops op) { } void -compile_define_op(Chunk *chunk, Visitor *vs, Token start) { +compile_declare_op(Chunk *chunk, Visitor *vs, Token start, Ops op) { Token name = peek_token(vs); if (name.type != TOKEN_SYMBOL) { error_push((Error){ @@ -216,7 +216,7 @@ compile_define_op(Chunk *chunk, Visitor *vs, Token start) { } parse_tree(chunk, vs); if (expr.type == TOKEN_SYMBOL) { - add_code(chunk, OP_GET_GLOBAL, expr.line, expr.column); + add_code(chunk, OP_GET, expr.line, expr.column); } if (peek_token(vs).type != TOKEN_RPAREN) { error_push((Error){ @@ -228,7 +228,7 @@ compile_define_op(Chunk *chunk, Visitor *vs, Token start) { return; } next_token(vs); - add_code(chunk, OP_DEF, start.line, start.column); + add_code(chunk, op, start.line, start.column); } void @@ -260,7 +260,8 @@ parse_list(Chunk *chunk, Visitor *vs, Token start) { case TOKEN_PRINT: { compile_list_unary_op(chunk, vs, start, OP_PRINT); } break; case TOKEN_DISPLAY: { compile_list_unary_op(chunk, vs, start, OP_DISPLAY); } break; case TOKEN_NEWLINE: { compile_list_simple_op(chunk, vs, start, OP_NEWLINE); } break; - case TOKEN_DEF: { compile_define_op(chunk, vs, start); } break; + case TOKEN_DEF: { compile_declare_op(chunk, vs, start, OP_DEF); } break; + case TOKEN_SET: { compile_declare_op(chunk, vs, start, OP_SET); } break; default: { error_push((Error){ .type = ERR_TYPE_COMPILER, -- cgit v1.2.1