From 51d2adcd843ae3829d71383aab63c1be10fc4cf4 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Thu, 19 Sep 2019 10:19:46 +0200 Subject: [PATCH] Plug function evaluation so that the following example compiles `` let f : N-> R, x -> ((x*x)); R y = f(0); `` --- src/language/ASTNodeDataTypeBuilder.cpp | 3 +++ src/language/ASTNodeExpressionBuilder.cpp | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index cfdc0187c..b30adf664 100644 --- a/src/language/ASTNodeDataTypeBuilder.cpp +++ b/src/language/ASTNodeDataTypeBuilder.cpp @@ -170,6 +170,9 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) << ") and " << n.children[1]->string() << " (" << dataTypeName(type_1) << ')' << std::ends; throw parse_error(message.str(), n.begin()); } + } else if (n.is<language::function_evaluation>()) { + std::cout << rang::fgB::red << "returned type of function evaluation is incorrect" << rang::style::reset << "\n"; + n.m_data_type = ASTNodeDataType::double_t; } } } diff --git a/src/language/ASTNodeExpressionBuilder.cpp b/src/language/ASTNodeExpressionBuilder.cpp index f7157005e..9f0a6f7eb 100644 --- a/src/language/ASTNodeExpressionBuilder.cpp +++ b/src/language/ASTNodeExpressionBuilder.cpp @@ -28,7 +28,13 @@ ASTNodeExpressionBuilder::_buildExpression(ASTNode& n) ASTNodeAffectationExpressionBuilder{n}; } else if (n.is<language::let_declaration>()) { - std::cerr << rang::fgB::red << "\"Let expression\" is not defined correctly" << rang::style::reset << '\n'; + std::cerr << rang::fgB::red << "\"let expression\" is not defined correctly (declaration should be removed)" + << rang::style::reset << '\n'; + n.m_node_processor = std::make_unique<FakeProcessor>(); + return; + + } else if (n.is<language::function_evaluation>()) { + std::cerr << rang::fgB::red << "\"function evaluation\" is not defined yet" << rang::style::reset << '\n'; n.m_node_processor = std::make_unique<FakeProcessor>(); return; -- GitLab