diff options
Diffstat (limited to 'src/runner/runner.h')
-rw-r--r-- | src/runner/runner.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/runner/runner.h b/src/runner/runner.h index 71c720b..ac36e84 100644 --- a/src/runner/runner.h +++ b/src/runner/runner.h @@ -3,10 +3,29 @@ #include "compiler/ast-tree.h" #include <stdint.h> +typedef struct RunnerVariable { + AstTreeVariable *variable; + AstTree *value; +} RunnerVariable; + +typedef struct RunnerVariables { + RunnerVariable **data; + size_t size; +} RunnerVariables; + +typedef struct RunnerVariablePages { + RunnerVariables **data; + size_t size; +} RunnerVariablePages; + +void runnerVariablePush(RunnerVariables *variables,AstTreeVariable *variable); +void runnerVariableSetValue(RunnerVariablePages *pages,AstTreeVariable *variable,AstTree *value); +AstTree* runnerVariableGetValue(RunnerVariablePages *pages,AstTreeVariable *variable); + bool runAstTree(AstTreeRoot *root); -AstTree *runAstTreeFunction(AstTreeFunction *function, AstTree **arguments, - size_t arguments_size); +AstTree *runAstTreeFunction(AstTree *tree, AstTree **arguments, + size_t arguments_size,RunnerVariablePages *pages); -AstTree *calcAstTreeValue(AstTree *tree); +AstTree *calcAstTreeValue(AstTree *tree,RunnerVariablePages *pages); AstTree *deepCopyAstTree(AstTree *tree); |