summaryrefslogtreecommitdiff
path: root/src/runner/runner.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runner/runner.c')
-rw-r--r--src/runner/runner.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/runner/runner.c b/src/runner/runner.c
index 7d1879d..b96f1a8 100644
--- a/src/runner/runner.c
+++ b/src/runner/runner.c
@@ -40,27 +40,30 @@ void runnerVariableSetValueWihtoutConstCheck(AstTreeVariable *variable,
variable->value = value;
}
-bool runAstTree(AstTreeRoot *root) {
+bool runAstTree(AstTreeRoots roots) {
static const char MAIN_STR[] = "main";
static const size_t MAIN_STR_SIZE =
(sizeof(MAIN_STR) / sizeof(*MAIN_STR)) - sizeof(*MAIN_STR);
AstTreeVariable *mainVariable = NULL;
- for (size_t i = 0; i < root->variables.size; ++i) {
- AstTreeVariable *variable = root->variables.data[i];
- size_t name_size = variable->name_end - variable->name_begin;
- if (name_size == MAIN_STR_SIZE &&
- strncmp(variable->name_begin, MAIN_STR, MAIN_STR_SIZE) == 0 &&
- variable->type->token == AST_TREE_TOKEN_TYPE_FUNCTION) {
- if (mainVariable != NULL) {
- printLog("Too many main variables");
- return false;
+ for (size_t i = 0; i < roots.size; ++i) {
+ AstTreeRoot *root = roots.data[i];
+ for (size_t i = 0; i < root->variables.size; ++i) {
+ AstTreeVariable *variable = root->variables.data[i];
+ size_t name_size = variable->name_end - variable->name_begin;
+ if (name_size == MAIN_STR_SIZE &&
+ strncmp(variable->name_begin, MAIN_STR, MAIN_STR_SIZE) == 0 &&
+ variable->type->token == AST_TREE_TOKEN_TYPE_FUNCTION) {
+ if (mainVariable != NULL) {
+ printLog("Too many main variables");
+ return false;
+ }
+ mainVariable = variable;
+ }
+ if (!variable->isConst) {
+ runnerVariableSetValueWihtoutConstCheck(variable, variable->initValue);
}
- mainVariable = variable;
- }
- if (!variable->isConst) {
- runnerVariableSetValueWihtoutConstCheck(variable, variable->initValue);
}
}