diff options
Diffstat (limited to 'src/vm/runner')
-rw-r--r-- | src/vm/runner/runner.c | 16 | ||||
-rw-r--r-- | src/vm/runner/runner.h | 3 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/vm/runner/runner.c b/src/vm/runner/runner.c index 9836ad0..742ec16 100644 --- a/src/vm/runner/runner.c +++ b/src/vm/runner/runner.c @@ -4,8 +4,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <utils/memory/memory.h> -#include <utils/types.h> const BuiltinFunction BUILTIN_FUNCTIONS[] = { print, @@ -26,6 +24,20 @@ bool runner(SourceCode *sourceCode) { return false; } +bool runnerWithPrint(SourceCode *sourceCode) { + Instructions instructions = codeGeneratorWithPrint(sourceCode); + if (instructions.size != ERROR_SIZE) { + printf("----generated code:\n"); + printInstructions(instructions); + printf("----running:\n"); + bool ranSuccess = _runner(instructions); + deleteInstructions(instructions); + return ranSuccess; + } + fprintf(stderr,"error in code generator\n"); + return false; +} + bool _runner(Instructions instructions) { size_t stack_size = 0; void **stack = a404m_malloc(stack_size * sizeof(void *)); diff --git a/src/vm/runner/runner.h b/src/vm/runner/runner.h index 80ef571..71fde6d 100644 --- a/src/vm/runner/runner.h +++ b/src/vm/runner/runner.h @@ -14,7 +14,8 @@ extern const BuiltinFunction BUILTIN_FUNCTIONS[]; extern const char *BUILTIN_FUNCTION_NAMES[]; extern const size_t BUILTIN_FUNCTIONS_SIZE; -extern bool runner(SourceCode *code); +extern bool runner(SourceCode *souceCode); +extern bool runnerWithPrint(SourceCode *souceCode); extern bool _runner(Instructions instructions); extern bool runInstruction(Instruction instruction, void ***restrict stack, |