From c409b8aaf6b6f63bd68a3356e146ab80b2ec8c4b Mon Sep 17 00:00:00 2001 From: A404M Date: Wed, 25 Sep 2024 19:47:29 +0330 Subject: fixed multiple variable definition bug tried to implement import --- src/vm/runner/runner.c | 13 +++++++------ src/vm/runner/runner.h | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'src/vm') diff --git a/src/vm/runner/runner.c b/src/vm/runner/runner.c index 4fcea52..3dcab9b 100644 --- a/src/vm/runner/runner.c +++ b/src/vm/runner/runner.c @@ -16,8 +16,8 @@ const char *BUILTIN_FUNCTION_NAMES[] = { const size_t BUILTIN_FUNCTIONS_SIZE = sizeof(BUILTIN_FUNCTIONS) / sizeof(BuiltinFunction); -bool runner(SourceCode code) { - Instructions instructions = codeGenerator(code); +bool runner(SourceCode *sourceCode) { + Instructions instructions = codeGenerator(sourceCode); if (instructions.size != ERROR_SIZE) { bool ranSuccess = _runner(instructions); deleteInstructions(instructions); @@ -44,7 +44,7 @@ bool _runner(Instructions instructions) { } } - for(size_t i = 0;i < variables_size;++i){ + for (size_t i = 0; i < variables_inserted; ++i) { free(variables[i]); } @@ -88,8 +88,9 @@ bool runInstruction(Instruction instruction, void ***restrict stack, switch (instruction.command) { case COMMAND_PUSH_IDENTIFIER: { const CommandPushIdentifierOperand *operand = instruction.operand; - pushToStack(getRunnerVariable(operand, variables, variables_inserted)->value, - stack, stack_size, stack_inserted); + pushToStack( + getRunnerVariable(operand, variables, variables_inserted)->value, + stack, stack_size, stack_inserted); return true; } case COMMAND_PUSH_STRING: { @@ -123,7 +124,7 @@ bool runInstruction(Instruction instruction, void ***restrict stack, RunnerVariable *getRunnerVariable(const SizedString *varName, RunnerVariable ***restrict variables, size_t *restrict variables_inserted) { - for (size_t i = *variables_inserted - 1; i != (typeof(i))-1; ++i) { + for (size_t i = *variables_inserted - 1; i != (typeof(i))-1; --i) { RunnerVariable *variable = (*variables)[i]; if (variable->name->size == varName->size && strncmp(varName->str, variable->name->str, varName->size) == 0) { diff --git a/src/vm/runner/runner.h b/src/vm/runner/runner.h index d2df5d7..80ef571 100644 --- a/src/vm/runner/runner.h +++ b/src/vm/runner/runner.h @@ -14,7 +14,7 @@ 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 *code); extern bool _runner(Instructions instructions); extern bool runInstruction(Instruction instruction, void ***restrict stack, -- cgit v1.2.3