diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-08 09:24:16 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-08 09:24:16 +0330 |
commit | 6345e8434dbb58172f4649e2e0997089bef7552c (patch) | |
tree | 7f0e91dcdd39db809b0e67e868c1b0b7c35d18e1 /src/runner/runner.c | |
parent | 964c7178a371f79123d54a43671375f5c0ceb7e4 (diff) |
add arguments
Diffstat (limited to 'src/runner/runner.c')
-rw-r--r-- | src/runner/runner.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/runner/runner.c b/src/runner/runner.c index 23cbca0..50d87df 100644 --- a/src/runner/runner.c +++ b/src/runner/runner.c @@ -18,14 +18,18 @@ bool runAstTree(AstTreeRoot *root) { AstTree *main = variable->value; AstTreeFunction *mainFunction = main->metadata; - return runAstTreeFunction(mainFunction) == &AST_TREE_VOID_VALUE; + return runAstTreeFunction(mainFunction, NULL, 0) == &AST_TREE_VOID_VALUE; } } printLog("main function is not found"); return false; } -AstTree *runAstTreeFunction(AstTreeFunction *function) { +AstTree *runAstTreeFunction(AstTreeFunction *function, AstTree **arguments, + size_t arguments_size) { + for (size_t i = 0; i < arguments_size; ++i) { + function->arguments.data[i]->value = calcAstTreeValue(arguments[i]); + } for (size_t i = 0; i < function->scope.expressions_size; ++i) { AstTree expr = function->scope.expressions[i]; switch (expr.token) { @@ -96,11 +100,10 @@ AstTree *calcAstTreeValue(AstTree *tree) { } case AST_TREE_TOKEN_FUNCTION_CALL: { AstTreeFunctionCall *metadata = tree->metadata; - if (metadata->parameters_size != 0) { - UNREACHABLE; - } else if (metadata->function->token == AST_TREE_TOKEN_VARIABLE) { + if (metadata->function->token == AST_TREE_TOKEN_VARIABLE) { AstTreeVariable *variable = metadata->function->metadata; - return runAstTreeFunction(variable->value->metadata); + return runAstTreeFunction(variable->value->metadata, metadata->parameters, + metadata->parameters_size); } else { UNREACHABLE; } |