summaryrefslogtreecommitdiff
path: root/src/runner/runner.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/runner/runner.h')
-rw-r--r--src/runner/runner.h25
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);