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/vm.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/bytecode/vm.h') diff --git a/src/bytecode/vm.h b/src/bytecode/vm.h index de025c1..51a6f44 100755 --- a/src/bytecode/vm.h +++ b/src/bytecode/vm.h @@ -160,7 +160,17 @@ vm_interpret(VM *vm, Chunk *chunk) { Object name = array_pop(vm->stack); ht_insert(vm->globals, name, value); } break; - case OP_GET_GLOBAL: { + case OP_SET: { + Object value = array_pop(vm->stack); + Object name = array_pop(vm->stack); + Object *prev = ht_lookup(vm->globals, name); + if (prev == NULL) { + SYMBOL_NOT_FOUND_ERR(); + return; + } + ht_insert(vm->globals, name, value); + } break; + case OP_GET: { Object name = array_pop(vm->stack); Object *value = ht_lookup(vm->globals, name); if (value == NULL) { -- cgit v1.2.1