diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp index 9ab4cd7a6be344f1c9d5d2bdc4e4ddd377584135..9e187baf3233e394575e987c6725e97e183d2081 100644 --- a/src/language/ASTBuilder.cpp +++ b/src/language/ASTBuilder.cpp @@ -7,6 +7,8 @@ using namespace TAO_PEGTL_NAMESPACE; #include <pegtl/contrib/parse_tree.hpp> +#include <SymbolTable.hpp> + using namespace language; struct ASTBuilder::rearrange : parse_tree::apply<ASTBuilder::rearrange> @@ -203,7 +205,9 @@ struct ASTBuilder::simplify_stream_statement : parse_tree::apply<ASTBuilder::sim template <typename Rule> using selector = parse_tree::selector<Rule, - parse_tree::store_content::on<true_kw, + parse_tree::store_content::on<import_instruction, + module_name, + true_kw, false_kw, integer, real, @@ -266,7 +270,15 @@ template <typename InputT> std::unique_ptr<ASTNode> ASTBuilder::build(InputT& input) { - return parse_tree::parse<language::grammar, ASTNode, selector, nothing, language::errors>(input); + std::unique_ptr root_node = parse_tree::parse<language::grammar, ASTNode, selector, nothing, language::errors>(input); + + // build initial symbol tables + std::shared_ptr function_table = std::make_shared<FunctionTable>(); + std::shared_ptr symbol_table = std::make_shared<SymbolTable>(function_table); + + root_node->m_symbol_table = symbol_table; + + return root_node; } template std::unique_ptr<ASTNode> ASTBuilder::build(read_input<>& input); diff --git a/src/language/ASTModulesImporter.cpp b/src/language/ASTModulesImporter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0b4b07cd9065baf03e7f503daf00776ccb1b210c --- /dev/null +++ b/src/language/ASTModulesImporter.cpp @@ -0,0 +1,34 @@ +#include <ASTModulesImporter.hpp> + +#include <ASTSymbolTableBuilder.hpp> +#include <SymbolTable.hpp> + +#include <PEGGrammar.hpp> + +void +ASTModulesImporter::_importModule(ASTNode& import_node) +{ + Assert(import_node.is<language::import_instruction>()); + + std::cout << " * importing '" << rang::fgB::green << import_node.children[0]->string() << rang::style::reset + << "' module\n"; +} + +void +ASTModulesImporter::_importAllModules(ASTNode& node) +{ + if (node.is<language::import_instruction>()) { + this->_importModule(node); + } else { + for (auto& child : node.children) { + this->_importAllModules(*child); + } + } +} + +ASTModulesImporter::ASTModulesImporter(ASTNode& root_node) +{ + Assert(root_node.is_root()); + this->_importAllModules(root_node); + std::cout << " - loaded modules\n"; +} diff --git a/src/language/ASTModulesImporter.hpp b/src/language/ASTModulesImporter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..1d9c49c738e132ab8955b9e7d53b05ff6c3c1376 --- /dev/null +++ b/src/language/ASTModulesImporter.hpp @@ -0,0 +1,19 @@ +#ifndef AST_MODULES_IMPORTER_HPP +#define AST_MODULES_IMPORTER_HPP + +#include <ASTNode.hpp> + +class ASTModulesImporter +{ + void _importModule(ASTNode& import_node); + void _importAllModules(ASTNode& node); + + public: + ASTModulesImporter(ASTNode& root_node); + + ASTModulesImporter(const ASTModulesImporter&) = delete; + + ~ASTModulesImporter() = default; +}; + +#endif // AST_MODULES_IMPORTER_HPP diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index 035eb5c02899b9897d2eadc74580d514f18a9470..b90b5b00554612a8c0b14094aa2df1fd5fd40ab1 100644 --- a/src/language/ASTNodeDataTypeBuilder.cpp +++ b/src/language/ASTNodeDataTypeBuilder.cpp @@ -14,7 +14,12 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) n.m_data_type = ASTNodeDataType::void_t; } else { if (n.has_content()) { - if (n.is<language::true_kw>() or n.is<language::false_kw>()) { + if (n.is<language::import_instruction>()) { + n.m_data_type = ASTNodeDataType::void_t; + } else if (n.is<language::module_name>()) { + n.m_data_type = ASTNodeDataType::string_t; + + } else if (n.is<language::true_kw>() or n.is<language::false_kw>()) { n.m_data_type = ASTNodeDataType::bool_t; } else if (n.is<language::real>()) { n.m_data_type = ASTNodeDataType::double_t; diff --git a/src/language/ASTNodeDeclarationCleaner.cpp b/src/language/ASTNodeDeclarationCleaner.cpp deleted file mode 100644 index 7e2f139f92036df30dc7391a4d2681dd94041b6b..0000000000000000000000000000000000000000 --- a/src/language/ASTNodeDeclarationCleaner.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include <ASTNodeDeclarationCleaner.hpp> - -#include <PEGGrammar.hpp> -#include <PugsAssert.hpp> - -#include <stack> - -void -ASTNodeDeclarationCleaner::_removeDeclarationNode(ASTNode& n) -{ - std::stack<size_t> declaration_ids; - for (size_t i_child = 0; i_child < n.children.size(); ++i_child) { - if (n.children[i_child]->is<language::declaration>() or n.children[i_child]->is<language::let_declaration>()) { - declaration_ids.push(i_child); - } - } - - while (declaration_ids.size() > 0) { - size_t i_removed = declaration_ids.top(); - declaration_ids.pop(); - for (size_t i = i_removed; i + 1 < n.children.size(); ++i) { - n.children[i] = std::move(n.children[i + 1]); - } - n.children.pop_back(); - } - - for (auto& child : n.children) { - this->_removeDeclarationNode(*child); - } -} - -ASTNodeDeclarationCleaner::ASTNodeDeclarationCleaner(ASTNode& n) -{ - Assert(n.is_root()); - this->_removeDeclarationNode(n); -} diff --git a/src/language/ASTNodeDeclarationCleaner.hpp b/src/language/ASTNodeDeclarationCleaner.hpp deleted file mode 100644 index 422f1e910324763c23e96c65ae26ed4b67c259b8..0000000000000000000000000000000000000000 --- a/src/language/ASTNodeDeclarationCleaner.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef AST_NODE_DECLARATION_CLEANER_HPP -#define AST_NODE_DECLARATION_CLEANER_HPP - -#include <ASTNode.hpp> - -class ASTNodeDeclarationCleaner -{ - private: - void _removeDeclarationNode(ASTNode& node); - - public: - ASTNodeDeclarationCleaner(ASTNode& root_node); -}; - -#endif // AST_NODE_DECLARATION_CLEANER_HPP diff --git a/src/language/ASTNodeTypeCleaner.hpp b/src/language/ASTNodeTypeCleaner.hpp new file mode 100644 index 0000000000000000000000000000000000000000..8521baa2fe3b89c121fcce9a680e623483b7b7b5 --- /dev/null +++ b/src/language/ASTNodeTypeCleaner.hpp @@ -0,0 +1,46 @@ +#ifndef AST_NODE_DECLARATION_CLEANER_HPP +#define AST_NODE_DECLARATION_CLEANER_HPP + +#include <ASTNode.hpp> +#include <PEGGrammar.hpp> +#include <PugsAssert.hpp> + +#include <stack> + +template <typename NodeType> +class ASTNodeTypeCleaner +{ + private: + void + _removeDeclarationNode(ASTNode& node) + { + std::stack<size_t> declaration_ids; + for (size_t i_child = 0; i_child < node.children.size(); ++i_child) { + if (node.children[i_child]->is<NodeType>()) { + declaration_ids.push(i_child); + } + } + + while (declaration_ids.size() > 0) { + size_t i_removed = declaration_ids.top(); + declaration_ids.pop(); + for (size_t i = i_removed; i + 1 < node.children.size(); ++i) { + node.children[i] = std::move(node.children[i + 1]); + } + node.children.pop_back(); + } + + for (auto& child : node.children) { + this->_removeDeclarationNode(*child); + } + } + + public: + ASTNodeTypeCleaner(ASTNode& root_node) + { + Assert(root_node.is_root()); + this->_removeDeclarationNode(root_node); + } +}; + +#endif // AST_NODE_DECLARATION_CLEANER_HPP diff --git a/src/language/ASTSymbolTableBuilder.cpp b/src/language/ASTSymbolTableBuilder.cpp index 9220c662210f1c97a4f556a0a14592c41e956a84..67fb348c2561049cea11c6dd2bcffa2a23f78eb4 100644 --- a/src/language/ASTSymbolTableBuilder.cpp +++ b/src/language/ASTSymbolTableBuilder.cpp @@ -84,11 +84,7 @@ ASTSymbolTableBuilder::buildSymbolTable(ASTNode& n, std::shared_ptr<SymbolTable> ASTSymbolTableBuilder::ASTSymbolTableBuilder(ASTNode& node) { Assert(node.is_root()); - std::shared_ptr function_table = std::make_shared<FunctionTable>(); - std::shared_ptr symbol_table = std::make_shared<SymbolTable>(function_table); - node.m_symbol_table = symbol_table; - - this->buildSymbolTable(node, symbol_table); + this->buildSymbolTable(node, node.m_symbol_table); std::cout << " - checked symbols declaration\n"; } diff --git a/src/language/CMakeLists.txt b/src/language/CMakeLists.txt index 1e6777998f93cd2de07d1e416413d2725ae44a0c..5c6cc784b1b3bfb8568c9fbd65b4b99e41e8e9db 100644 --- a/src/language/CMakeLists.txt +++ b/src/language/CMakeLists.txt @@ -9,13 +9,13 @@ add_library( PugsLanguage ASTBuilder.cpp ASTDotPrinter.cpp + ASTModulesImporter.cpp ASTNodeAffectationExpressionBuilder.cpp ASTNodeBinaryOperatorExpressionBuilder.cpp ASTNodeDataType.cpp ASTNodeDataTypeBuilder.cpp ASTNodeDataTypeChecker.cpp ASTNodeDeclarationToAffectationConverter.cpp - ASTNodeDeclarationCleaner.cpp ASTNodeEmptyBlockCleaner.cpp ASTNodeExpressionBuilder.cpp ASTNodeFunctionExpressionBuilder.cpp diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index d59d532101504e208d07ae51fd8c445b2ec740d5..5603fa424012cf3ae4f23ac2b03b0c1e04aab5c1 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -19,6 +19,8 @@ #include <PEGGrammar.hpp> #include <SymbolTable.hpp> +#include <ASTModulesImporter.hpp> + #include <ASTNodeDataTypeBuilder.hpp> #include <ASTNodeDataTypeChecker.hpp> @@ -31,8 +33,8 @@ #include <ASTNodeEmptyBlockCleaner.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTDotPrinter.hpp> #include <ASTPrinter.hpp> @@ -54,6 +56,9 @@ parser(const std::string& filename) try { root_node = ASTBuilder::build(input); + ASTModulesImporter{*root_node}; + ASTNodeTypeCleaner<language::import_instruction>{*root_node}; + ASTSymbolTableBuilder{*root_node}; ASTSymbolInitializationChecker{*root_node}; @@ -76,7 +81,10 @@ parser(const std::string& filename) // optimizations ASTNodeDeclarationToAffectationConverter{*root_node}; - ASTNodeDeclarationCleaner{*root_node}; + + ASTNodeTypeCleaner<language::declaration>{*root_node}; + ASTNodeTypeCleaner<language::let_declaration>{*root_node}; + ASTNodeEmptyBlockCleaner{*root_node}; ASTNodeExpressionBuilder{*root_node}; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e3cdf5ea9ad08377eb167ef805a10887bdc70e42..4199526b7cc9f1e6cc481fded1ef94556361535f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,12 +15,12 @@ add_executable (unit_tests test_ASTNodeDataType.cpp test_ASTNodeDataTypeBuilder.cpp test_ASTNodeDataTypeChecker.cpp - test_ASTNodeDeclarationCleaner.cpp test_ASTNodeDeclarationToAffectationConverter.cpp test_ASTNodeExpressionBuilder.cpp test_ASTNodeIncDecExpressionBuilder.cpp test_ASTNodeJumpPlacementChecker.cpp test_ASTNodeListProcessor.cpp + test_ASTNodeTypeCleaner.cpp test_ASTNodeUnaryOperatorExpressionBuilder.cpp test_ASTNodeValueBuilder.cpp test_ASTPrinter.cpp diff --git a/tests/test_ASTNodeAffectationExpressionBuilder.cpp b/tests/test_ASTNodeAffectationExpressionBuilder.cpp index 4a1be1371ec36dd9552abd1467941ca4c3e1ef32..ea531b67a2c19cf19acac3f311553a75283fe7ce 100644 --- a/tests/test_ASTNodeAffectationExpressionBuilder.cpp +++ b/tests/test_ASTNodeAffectationExpressionBuilder.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -34,7 +34,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ \ @@ -195,7 +195,7 @@ N n="foo"; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } @@ -281,7 +281,7 @@ Z z="foo"; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } @@ -367,7 +367,7 @@ R r="foo"; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } @@ -579,7 +579,7 @@ string s="foo"; s-="bar"; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } @@ -641,7 +641,7 @@ string s="foo"; s*=2; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } @@ -703,7 +703,7 @@ string s="foo"; s/="bar"; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error); } diff --git a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp index 6e886f45059a04360b2456688d88939323798f87..0aa28cbe68bc1c6950ad86a48da2974739c5ca90 100644 --- a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp +++ b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -34,7 +34,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ \ @@ -57,7 +57,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ REQUIRE_THROWS(ASTNodeExpressionBuilder{*ast}, Catch::Matchers::Contains(expected_output)); \ } diff --git a/tests/test_ASTNodeExpressionBuilder.cpp b/tests/test_ASTNodeExpressionBuilder.cpp index d27c0927211731d479d2f9da30790454608c07d0..017f3f39779cbe504e770ea0b64b393c72dde3a9 100644 --- a/tests/test_ASTNodeExpressionBuilder.cpp +++ b/tests/test_ASTNodeExpressionBuilder.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ std::stringstream ast_output; \ diff --git a/tests/test_ASTNodeIncDecExpressionBuilder.cpp b/tests/test_ASTNodeIncDecExpressionBuilder.cpp index 87ee58b8425136b09dce69e2d02ea1078fcfb2ca..11e270b867d1afe327a178a9f057293ddd17e7e4 100644 --- a/tests/test_ASTNodeIncDecExpressionBuilder.cpp +++ b/tests/test_ASTNodeIncDecExpressionBuilder.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -34,7 +34,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ \ diff --git a/tests/test_ASTNodeListProcessor.cpp b/tests/test_ASTNodeListProcessor.cpp index c5f36f50682fa94447331dc36ffeab52105c8304..ed0748188e22a12ecadc0459491888a358e70f80 100644 --- a/tests/test_ASTNodeListProcessor.cpp +++ b/tests/test_ASTNodeListProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTSymbolTableBuilder.hpp> @@ -36,7 +36,7 @@ true; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; ASTNodeExpressionBuilder{*ast}; ExecUntilBreakOrContinue exec_policy; diff --git a/tests/test_ASTNodeDeclarationCleaner.cpp b/tests/test_ASTNodeTypeCleaner.cpp similarity index 94% rename from tests/test_ASTNodeDeclarationCleaner.cpp rename to tests/test_ASTNodeTypeCleaner.cpp index b92864235060bb94e25a3d3f44940484574f92b8..02da34b90672ecca41d7a1e2dab405c135e65e07 100644 --- a/tests/test_ASTNodeDeclarationCleaner.cpp +++ b/tests/test_ASTNodeTypeCleaner.cpp @@ -5,7 +5,7 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTSymbolTableBuilder.hpp> @@ -23,7 +23,7 @@ ASTNodeDataTypeBuilder{*ast}; \ ASTNodeValueBuilder{*ast}; \ \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ std::stringstream ast_output; \ ast_output << '\n' << ASTPrinter{*ast, ASTPrinter::Format::raw, {ASTPrinter::Info::none}}; \ @@ -31,7 +31,7 @@ REQUIRE(ast_output.str() == expected_output); \ } -TEST_CASE("ASTNodeDeclarationCleaner", "[language]") +TEST_CASE("ASTNodeTypeCleaner", "[language]") { SECTION("no declaration") { diff --git a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp index b05998e6b01bf88e0e5f102fede359cbfb9e7109..5ea6a3461391a5dcec9ff433fda664dba241c461 100644 --- a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp +++ b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -34,7 +34,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ \ diff --git a/tests/test_AffectationProcessor.cpp b/tests/test_AffectationProcessor.cpp index 2ce8f79be9fb0c5ff6c80aef8e3f11d26d399248..b9c2a033c16d9792d83f76382a9de8abcee91bda 100644 --- a/tests/test_AffectationProcessor.cpp +++ b/tests/test_AffectationProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ @@ -61,7 +61,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ REQUIRE_THROWS(ASTNodeExpressionBuilder{*ast}, \ Catch::Matchers::Contains("invalid operands to affectation expression")); \ diff --git a/tests/test_AffectationToStringProcessor.cpp b/tests/test_AffectationToStringProcessor.cpp index 18831ae213724dd423528b417326655f21242cdf..bdd384762b3210753663ede8ea38a1275837b9e7 100644 --- a/tests/test_AffectationToStringProcessor.cpp +++ b/tests/test_AffectationToStringProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_BinaryExpressionProcessor_utils.hpp b/tests/test_BinaryExpressionProcessor_utils.hpp index c6d7a8bd67b67935d636fec49810295272be1772..d442a67631681b69a793c00d38e8625dc2338561 100644 --- a/tests/test_BinaryExpressionProcessor_utils.hpp +++ b/tests/test_BinaryExpressionProcessor_utils.hpp @@ -6,8 +6,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -33,7 +33,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_ConcatExpressionProcessor.cpp b/tests/test_ConcatExpressionProcessor.cpp index 3baa9c59ff2c49480f0e8eefde4ca19b683c998f..7bcfc0a1d4cab9c3cb24081c0913875a5be91cef 100644 --- a/tests/test_ConcatExpressionProcessor.cpp +++ b/tests/test_ConcatExpressionProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_DoWhileProcessor.cpp b/tests/test_DoWhileProcessor.cpp index 8cbc13823f9ab159ca41d02f14ba98865432ddbe..9ccf21e37f0e553fc9d3d1cbb1662867c30e0968 100644 --- a/tests/test_DoWhileProcessor.cpp +++ b/tests/test_DoWhileProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_ForProcessor.cpp b/tests/test_ForProcessor.cpp index 9f0371d0697f01f5401b8be687e11988e7887b1a..4261a8193fcbe672494152cc717bb2e50f76f434 100644 --- a/tests/test_ForProcessor.cpp +++ b/tests/test_ForProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_IfProcessor.cpp b/tests/test_IfProcessor.cpp index 5e6014b750cab1c305b0c91fb475aba868c89323..4ec5973522d37b986575b08f76c9cd3913f69590 100644 --- a/tests/test_IfProcessor.cpp +++ b/tests/test_IfProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_IncDecExpressionProcessor.cpp b/tests/test_IncDecExpressionProcessor.cpp index 3cba4f9012fc9e50db061730ff58b9db8b94ede5..0562c3f3180248aa9fec2bb98ba4474a992e9445 100644 --- a/tests/test_IncDecExpressionProcessor.cpp +++ b/tests/test_IncDecExpressionProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_NameProcessor.cpp b/tests/test_NameProcessor.cpp index 4152b3ae03189b62d1ecf4f93c8ac4ac498efbf9..cd7374ae773106b164a522806e4af934cd0f6db7 100644 --- a/tests/test_NameProcessor.cpp +++ b/tests/test_NameProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -40,7 +40,7 @@ n = 2; ASTNodeValueBuilder{*ast}; ASTNodeDeclarationToAffectationConverter{*ast}; - ASTNodeDeclarationCleaner{*ast}; + ASTNodeTypeCleaner<language::declaration>{*ast}; ASTNodeExpressionBuilder{*ast}; ExecUntilBreakOrContinue exec_policy; diff --git a/tests/test_OStreamProcessor.cpp b/tests/test_OStreamProcessor.cpp index be958502a5b6e62d01c458405e4440eca792c20d..1f135831298c7311da18681dca6f568eb9688672 100644 --- a/tests/test_OStreamProcessor.cpp +++ b/tests/test_OStreamProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -46,7 +46,7 @@ _replaceOStream(ASTNode& node, std::ostringstream& sout) ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_UnaryExpressionProcessor.cpp b/tests/test_UnaryExpressionProcessor.cpp index 7947f3f60fcd0af1020245fd37ff0ed312f36c1b..5c6a694369721726227ad15d6b6640718d34db6d 100644 --- a/tests/test_UnaryExpressionProcessor.cpp +++ b/tests/test_UnaryExpressionProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \ diff --git a/tests/test_WhileProcessor.cpp b/tests/test_WhileProcessor.cpp index 9d58d96e0402eb7e93841ea1dd83f87673809c86..b94cd973804728f214cde41f6efd89c112837b53 100644 --- a/tests/test_WhileProcessor.cpp +++ b/tests/test_WhileProcessor.cpp @@ -5,8 +5,8 @@ #include <ASTBuilder.hpp> #include <ASTNodeDataTypeBuilder.hpp> -#include <ASTNodeDeclarationCleaner.hpp> #include <ASTNodeDeclarationToAffectationConverter.hpp> +#include <ASTNodeTypeCleaner.hpp> #include <ASTNodeExpressionBuilder.hpp> @@ -32,7 +32,7 @@ ASTNodeValueBuilder{*ast}; \ \ ASTNodeDeclarationToAffectationConverter{*ast}; \ - ASTNodeDeclarationCleaner{*ast}; \ + ASTNodeTypeCleaner<language::declaration>{*ast}; \ \ ASTNodeExpressionBuilder{*ast}; \ ExecUntilBreakOrContinue exec_policy; \