diff options
author | 2021-10-21 19:51:01 -0700 | |
---|---|---|
committer | 2021-10-21 19:51:01 -0700 | |
commit | 26b418d25485f67b06fa70f3c32c151c26572f13 (patch) | |
tree | 01ebd410985d88a4a3aaec9267d6519da2ffa35b /clox/src/vm.c | |
parent | 7bd9934a4be7c22b8f464ab7a1cc243801b5957c (diff) | |
download | crafting-interpreters-26b418d25485f67b06fa70f3c32c151c26572f13.tar.gz crafting-interpreters-26b418d25485f67b06fa70f3c32c151c26572f13.zip |
Chapter 21
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r-- | clox/src/vm.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c index 5e35abd..80e11c3 100644 --- a/clox/src/vm.c +++ b/clox/src/vm.c @@ -119,8 +119,8 @@ static InterpretResult run() { ObjString *name = READ_STRING(); Value value; if (!tableGet(&vm.globals, name, &value)) { - runtimeError("Undefined variable '%s'.", name->chars); - return INTERPRET_RUNTIME_ERROR; + runtimeError("Undefined variable '%s'.", name->chars); + return INTERPRET_RUNTIME_ERROR; } push(value); break; @@ -131,6 +131,15 @@ static InterpretResult run() { pop(); break; } + case OP_SET_GLOBAL: { + ObjString *name = READ_STRING(); + if (tableSet(&vm.globals, name, peek(0))) { + tableDelete(&vm.globals, name); + runtimeError("Undefined variable '%s'.", name->chars); + return INTERPRET_RUNTIME_ERROR; + } + break; + } case OP_EQUAL: { Value b = pop(); Value a = pop(); |