From a76181288ae27b85521838ee87352727c3cba2f8 Mon Sep 17 00:00:00 2001
From: Ferenc Szontágh <szf@fsociety.hu>
Date: Fri, 18 Apr 2025 10:15:12 +0000
Subject: [PATCH] call function when variable defined
---
src/Interpreter/ExpressionBuilder.hpp | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/src/Interpreter/ExpressionBuilder.hpp b/src/Interpreter/ExpressionBuilder.hpp
index 5ee96d7..602f603 100644
--- a/src/Interpreter/ExpressionBuilder.hpp
+++ b/src/Interpreter/ExpressionBuilder.hpp
@@ -9,6 +9,7 @@
#include "Interpreter/IdentifierExpressionNode.hpp"
#include "Interpreter/LiteralExpressionNode.hpp"
#include "Interpreter/UnaryExpressionNode.hpp" // <-- új include
+#include "Interpreter/CallExpressionNode.hpp"
#include "Parser/ParsedExpression.hpp"
namespace Parser {
@@ -35,6 +36,16 @@
auto operand = buildExpressionFromParsed(expr->rhs); // rhs az operandus
return std::make_unique<Interpreter::UnaryExpressionNode>(expr->op, std::move(operand));
}
+ case Kind::Call:
+ {
+ // Build argument expressions
+ std::vector<std::unique_ptr<Interpreter::ExpressionNode>> callArgs;
+ callArgs.reserve(expr->args.size());
+ for (const auto &arg : expr->args) {
+ callArgs.push_back(buildExpressionFromParsed(arg));
+ }
+ return std::make_unique<Interpreter::CallExpressionNode>(expr->name, std::move(callArgs));
+ }
}
throw std::runtime_error("Unknown ParsedExpression kind");
--
Gitblit v1.9.3