aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r--clox/src/vm.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c
index d9e5248..eb79661 100644
--- a/clox/src/vm.c
+++ b/clox/src/vm.c
@@ -81,6 +81,19 @@ static InterpretResult run() {
}
InterpretResult interpret(const char *source) {
- compile(source);
- return INTERPRET_OK;
+ Chunk chunk;
+ initChunk(&chunk);
+
+ if (!compile(source, &chunk)) {
+ freeChunk(&chunk);
+ return INTERPRET_COMPILE_ERROR;
+ }
+
+ vm.chunk = &chunk;
+ vm.ip = vm.chunk->code;
+
+ InterpretResult result = run();
+
+ freeChunk(&chunk);
+ return result;
}