From 01ad3bfa729c22801a57ed656467f7b2ad9fc212 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 9 Oct 2019 18:11:40 +0200 Subject: [PATCH] Add module importer structure - add ASTModulesImporter, which imports all required modules. Yet, just an empty shell that lists the required modules - change ASTNodeDeclarationCleaner to ASTNodeTypeCleaner<T> this allows to clean various kind of AST nodes which become useless for execution. Now one calls `` ASTNodeTypeCleaner<language::declaration>{*root_node}; ASTNodeTypeCleaner<language::let_declaration>{*root_node}; `` instead of `` ASTNodeDeclarationCleaner{*root_node}; `` Also one remove `import` instructions by `` ASTNodeTypeCleaner<language::import_instruction>{*root_node}; `` --- src/language/ASTBuilder.cpp | 16 ++++++- src/language/ASTModulesImporter.cpp | 34 ++++++++++++++ src/language/ASTModulesImporter.hpp | 19 ++++++++ src/language/ASTNodeDataTypeBuilder.cpp | 7 ++- src/language/ASTNodeDeclarationCleaner.cpp | 36 --------------- src/language/ASTNodeDeclarationCleaner.hpp | 15 ------ src/language/ASTNodeTypeCleaner.hpp | 46 +++++++++++++++++++ src/language/ASTSymbolTableBuilder.cpp | 6 +-- src/language/CMakeLists.txt | 2 +- src/language/PugsParser.cpp | 12 ++++- tests/CMakeLists.txt | 2 +- ...st_ASTNodeAffectationExpressionBuilder.cpp | 16 +++---- ...ASTNodeBinaryOperatorExpressionBuilder.cpp | 6 +-- tests/test_ASTNodeExpressionBuilder.cpp | 4 +- tests/test_ASTNodeIncDecExpressionBuilder.cpp | 4 +- tests/test_ASTNodeListProcessor.cpp | 4 +- ...leaner.cpp => test_ASTNodeTypeCleaner.cpp} | 6 +-- ..._ASTNodeUnaryOperatorExpressionBuilder.cpp | 4 +- tests/test_AffectationProcessor.cpp | 6 +-- tests/test_AffectationToStringProcessor.cpp | 4 +- .../test_BinaryExpressionProcessor_utils.hpp | 4 +- tests/test_ConcatExpressionProcessor.cpp | 4 +- tests/test_DoWhileProcessor.cpp | 4 +- tests/test_ForProcessor.cpp | 4 +- tests/test_IfProcessor.cpp | 4 +- tests/test_IncDecExpressionProcessor.cpp | 4 +- tests/test_NameProcessor.cpp | 4 +- tests/test_OStreamProcessor.cpp | 4 +- tests/test_UnaryExpressionProcessor.cpp | 4 +- tests/test_WhileProcessor.cpp | 4 +- 30 files changed, 179 insertions(+), 110 deletions(-) create mode 100644 src/language/ASTModulesImporter.cpp create mode 100644 src/language/ASTModulesImporter.hpp delete mode 100644 src/language/ASTNodeDeclarationCleaner.cpp delete mode 100644 src/language/ASTNodeDeclarationCleaner.hpp create mode 100644 src/language/ASTNodeTypeCleaner.hpp rename tests/{test_ASTNodeDeclarationCleaner.cpp => test_ASTNodeTypeCleaner.cpp} (94%) diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp index 9ab4cd7a6..9e187baf3 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 000000000..0b4b07cd9 --- /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 000000000..1d9c49c73 --- /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 035eb5c02..b90b5b005 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 7e2f139f9..000000000 --- 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 422f1e910..000000000 --- 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 000000000..8521baa2f --- /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 9220c6622..67fb348c2 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 1e6777998..5c6cc784b 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 d59d53210..5603fa424 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 e3cdf5ea9..4199526b7 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 4a1be1371..ea531b67a 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 6e886f450..0aa28cbe6 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 d27c09272..017f3f397 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 87ee58b84..11e270b86 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 c5f36f506..ed0748188 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 b92864235..02da34b90 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 b05998e6b..5ea6a3461 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 2ce8f79be..b9c2a033c 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 18831ae21..bdd384762 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 c6d7a8bd6..d442a6763 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 3baa9c59f..7bcfc0a1d 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 8cbc13823..9ccf21e37 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 9f0371d06..4261a8193 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 5e6014b75..4ec597352 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 3cba4f901..0562c3f31 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 4152b3ae0..cd7374ae7 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 be958502a..1f1358312 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 7947f3f60..5c6a69436 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 9d58d96e0..b94cd9738 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; \ -- GitLab