diff --git a/src/language/ASTNodeAffectationExpressionBuilder.cpp b/src/language/ASTNodeAffectationExpressionBuilder.cpp index 60e4a5964fdee4fd23f523ef7bc3714cbc4cecc8..89a86a2954bf09a85a9fc1496985769401c079b8 100644 --- a/src/language/ASTNodeAffectationExpressionBuilder.cpp +++ b/src/language/ASTNodeAffectationExpressionBuilder.cpp @@ -2,8 +2,6 @@ #include <PEGGrammar.hpp> #include <SymbolTable.hpp> -namespace language -{ template <typename Op> struct AffOp; @@ -145,7 +143,7 @@ class AffectationToStringProcessor final : public INodeProcessor } } } -}; // namespace language +}; ASTNodeAffectationExpressionBuilder::ASTNodeAffectationExpressionBuilder(ASTNode& n) { @@ -256,4 +254,3 @@ ASTNodeAffectationExpressionBuilder::ASTNodeAffectationExpressionBuilder(ASTNode throw parse_error("unexpected error: undefined affectation operator", std::vector{n.begin()}); } } -} // namespace language diff --git a/src/language/ASTNodeAffectationExpressionBuilder.hpp b/src/language/ASTNodeAffectationExpressionBuilder.hpp index 424ebed638a528a635c40f0443b7571083f7397f..412e3e048e05d1810ddf62e455797da09385ab7a 100644 --- a/src/language/ASTNodeAffectationExpressionBuilder.hpp +++ b/src/language/ASTNodeAffectationExpressionBuilder.hpp @@ -3,12 +3,9 @@ #include <ASTNode.hpp> -namespace language -{ struct ASTNodeAffectationExpressionBuilder { ASTNodeAffectationExpressionBuilder(ASTNode& node); }; -} // namespace language #endif // AST_NODE_AFFECTATION_EXPRESSION_BUILDER_HPP diff --git a/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp b/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp index c6cd1e4af4a4be35823263a252967edb05f21440..8309bf1b49d1c8da76640b49712488c51ab40d45 100644 --- a/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp +++ b/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp @@ -4,8 +4,6 @@ #include <type_traits> -namespace language -{ template <typename Op> struct BinOp; @@ -370,5 +368,3 @@ ASTNodeBinaryOperatorExpressionBuilder::ASTNodeBinaryOperatorExpressionBuilder(A throw parse_error("unexpected error: undefined binary operator", std::vector{n.begin()}); } } - -} // namespace language diff --git a/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp b/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp index 3f38260f15055807598b2b148253db78500a5fff..f6709c2db06f780a86d5b4b7d2674668774c8ec0 100644 --- a/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp +++ b/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp @@ -3,12 +3,9 @@ #include <ASTNode.hpp> -namespace language -{ struct ASTNodeBinaryOperatorExpressionBuilder { ASTNodeBinaryOperatorExpressionBuilder(ASTNode& node); }; -} // namespace language #endif // AST_NODE_BINARY_OPERATOR_EXPRESSION_BUILDER_HPP diff --git a/src/language/ASTNodeExpressionBuilder.cpp b/src/language/ASTNodeExpressionBuilder.cpp index 703fd104ee892e3008822922cddcfc576c6e5f97..93068490c490abdb84f8e8dfe7b7e7ff13a712b9 100644 --- a/src/language/ASTNodeExpressionBuilder.cpp +++ b/src/language/ASTNodeExpressionBuilder.cpp @@ -8,8 +8,6 @@ #include <PEGGrammar.hpp> #include <SymbolTable.hpp> -namespace language -{ class ASTNodeList final : public INodeProcessor { ASTNode& m_node; @@ -261,10 +259,8 @@ class OStreamObject final : public INodeProcessor } }; -namespace internal -{ void -build_node_type(ASTNode& n) +ASTNodeExpressionBuilder::_buildExpression(ASTNode& n) { if (n.is_root() or n.is<language::bloc>()) { n.m_node_processor = std::make_unique<ASTNodeList>(n); @@ -343,20 +339,16 @@ build_node_type(ASTNode& n) } for (auto& child : n.children) { - internal::build_node_type(*child); + this->_buildExpression(*child); } } -} // namespace internal -void -build_node_type(ASTNode& n) +ASTNodeExpressionBuilder::ASTNodeExpressionBuilder(ASTNode& n) { Assert(n.is_root()); - Assert(n.is<void>()); n.m_node_processor = std::make_unique<ASTNodeList>(n); for (auto& child : n.children) { - internal::build_node_type(*child); + this->_buildExpression(*child); } std::cout << " - build node types\n"; } -} // namespace language diff --git a/src/language/ASTNodeExpressionBuilder.hpp b/src/language/ASTNodeExpressionBuilder.hpp index 861aac0731b95dcc98903dbc10eb003811049b49..bf6d5a79a16594d6e3adab17439310474655107c 100644 --- a/src/language/ASTNodeExpressionBuilder.hpp +++ b/src/language/ASTNodeExpressionBuilder.hpp @@ -3,9 +3,12 @@ #include <ASTNode.hpp> -namespace language +class ASTNodeExpressionBuilder { -void build_node_type(ASTNode& n); -} + void _buildExpression(ASTNode& n); + + public: + ASTNodeExpressionBuilder(ASTNode& n); +}; #endif // AST_NODE_EXPRESSION_BUILDER_HPP diff --git a/src/language/ASTNodeIncDecExpressionBuilder.cpp b/src/language/ASTNodeIncDecExpressionBuilder.cpp index ec11df799c63e25386e526e9ccc4697e2ecbc8c0..cae715aefe4e0f7020136888efd4aa306d653637 100644 --- a/src/language/ASTNodeIncDecExpressionBuilder.cpp +++ b/src/language/ASTNodeIncDecExpressionBuilder.cpp @@ -2,8 +2,6 @@ #include <PEGGrammar.hpp> #include <SymbolTable.hpp> -namespace language -{ template <typename Op> struct IncDecOp; @@ -163,4 +161,3 @@ ASTNodeIncDecExpressionBuilder::ASTNodeIncDecExpressionBuilder(ASTNode& n) throw parse_error("unexpected error: undefined increment/decrement operator", std::vector{n.begin()}); } } -} // namespace language diff --git a/src/language/ASTNodeIncDecExpressionBuilder.hpp b/src/language/ASTNodeIncDecExpressionBuilder.hpp index 6816a087c1e0cda5a8d3d6a13ec6ecf5e07a1fb8..5ca8938d925949eed0c9819e1aff4bca21e86191 100644 --- a/src/language/ASTNodeIncDecExpressionBuilder.hpp +++ b/src/language/ASTNodeIncDecExpressionBuilder.hpp @@ -3,12 +3,9 @@ #include <ASTNode.hpp> -namespace language -{ struct ASTNodeIncDecExpressionBuilder { ASTNodeIncDecExpressionBuilder(ASTNode& node); }; -} // namespace language #endif // AST_NODE_INC_DEC_EXPRESSION_BUILDER_HPP diff --git a/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp b/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp index 60160b95e697213388f8c06efb672d53f9f0f25e..9112ad5535611b1b406ddee7483fde3afc891f46 100644 --- a/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp +++ b/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp @@ -2,8 +2,6 @@ #include <PEGGrammar.hpp> #include <SymbolTable.hpp> -namespace language -{ template <typename Op> struct UnaryOp; @@ -117,4 +115,3 @@ ASTNodeUnaryOperatorExpressionBuilder::ASTNodeUnaryOperatorExpressionBuilder(AST throw parse_error("unexpected error: undefined unary operator", std::vector{n.begin()}); } } -} // namespace language diff --git a/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp b/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp index 59ad3022ea285ad9144dfddfde756597a43c4a01..3e75ef2ef3f30c09f71741de50d8bd01c590937e 100644 --- a/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp +++ b/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp @@ -3,12 +3,9 @@ #include <ASTNode.hpp> -namespace language -{ struct ASTNodeUnaryOperatorExpressionBuilder { ASTNodeUnaryOperatorExpressionBuilder(ASTNode& node); }; -} // namespace language #endif // AST_NODE_UNARY_OPERATOR_EXPRESSION_BUILDER_HPP diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index f37b16f8a1261382ad4ef893b508be5d7dc66c9f..3c5b8ec4c86774f2071dfd9dde552d1d14ec5cc2 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -75,7 +75,7 @@ parser(const std::string& filename) ASTNodeDeclarationToAffectationConverter{*root_node}; ASTNodeDeclarationCleaner{*root_node}; - language::build_node_type(*root_node); + ASTNodeExpressionBuilder{*root_node}; std::cout << ASTPrinter{*root_node} << '\n';