diff options
author | Tom Willemse | 2021-10-11 00:13:15 -0700 |
---|---|---|
committer | Tom Willemse | 2021-10-11 00:13:15 -0700 |
commit | 7bd9934a4be7c22b8f464ab7a1cc243801b5957c (patch) | |
tree | 220c128d448c1f82fdae86560e6016b42bb7a403 /clox/src/vm.c | |
parent | fcbea5f617edb6e3dfa68eb31efa402b4916c032 (diff) | |
download | crafting-interpreters-7bd9934a4be7c22b8f464ab7a1cc243801b5957c.tar.gz crafting-interpreters-7bd9934a4be7c22b8f464ab7a1cc243801b5957c.zip |
Chapter 21.3
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r-- | clox/src/vm.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c index 709f3d1..5e35abd 100644 --- a/clox/src/vm.c +++ b/clox/src/vm.c @@ -115,6 +115,16 @@ static InterpretResult run() { case OP_POP: pop(); break; + case OP_GET_GLOBAL: { + ObjString *name = READ_STRING(); + Value value; + if (!tableGet(&vm.globals, name, &value)) { + runtimeError("Undefined variable '%s'.", name->chars); + return INTERPRET_RUNTIME_ERROR; + } + push(value); + break; + } case OP_DEFINE_GLOBAL: { ObjString *name = READ_STRING(); tableSet(&vm.globals, name, peek(0)); |