diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-22 19:34:43 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-22 19:34:43 +0330 |
commit | f79290084948f3cf140395c270c07cf29ca58e8d (patch) | |
tree | d716526678782153f3617bbf78984b4c4ebed380 /src/vm/runner/runner.h | |
parent | d2ab53c625d386a4fbc6a9d5a5eb29faab1b3f0c (diff) |
Better errors
Added variables
Diffstat (limited to 'src/vm/runner/runner.h')
-rw-r--r-- | src/vm/runner/runner.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/vm/runner/runner.h b/src/vm/runner/runner.h index e81aed7..d2df5d7 100644 --- a/src/vm/runner/runner.h +++ b/src/vm/runner/runner.h @@ -2,6 +2,11 @@ #include <compiler/code_generator/code_generator.h> +typedef struct RunnerVariable { + SizedString const *name; + void *value; +} RunnerVariable; + typedef void (*BuiltinFunction)(void ***restrict stack, size_t *restrict stack_inserted); @@ -9,10 +14,28 @@ extern const BuiltinFunction BUILTIN_FUNCTIONS[]; extern const char *BUILTIN_FUNCTION_NAMES[]; extern const size_t BUILTIN_FUNCTIONS_SIZE; -extern bool runner(Instructions instructions); +extern bool runner(SourceCode code); +extern bool _runner(Instructions instructions); extern bool runInstruction(Instruction instruction, void ***restrict stack, size_t *restrict stack_size, - size_t *restrict stack_inserted); + size_t *restrict stack_inserted, + RunnerVariable ***restrict variables, + size_t *restrict variables_size, + size_t *restrict variables_inserted); + +extern RunnerVariable *getRunnerVariable(const SizedString *varName, + RunnerVariable ***restrict variables, + size_t *restrict variables_inserted); +extern void setRunnerVariable(void *value, const SizedString *varName, + RunnerVariable ***restrict variables, + size_t *restrict variables_size, + size_t *restrict variables_inserted); + +extern void *popFromStack(void ***restrict stack, + size_t *restrict stack_inserted); +extern void pushToStack(void *value, void ***restrict stack, + size_t *restrict stack_size, + size_t *restrict stack_inserted); extern void print(void ***restrict stack, size_t *restrict stack_inserted); |