diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17e200bf9c2336677009e09e5e79318125c95f04..a457851f3c3ef6a6abd87646cf0ad8b1dbfd459c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -395,6 +395,7 @@ target_link_libraries(
   PugsMesh
   PugsUtils
   PugsLanguage
+  PugsLanguageAST
   PugsLanguageModules
   PugsLanguageUtils
   kokkos
diff --git a/src/language/CMakeLists.txt b/src/language/CMakeLists.txt
index 2cf5f1473b8effce4cdbaa58a562cdfbd87720ee..b9c6094e4403cb1d2289d8cfcae58de9e2e3c4e5 100644
--- a/src/language/CMakeLists.txt
+++ b/src/language/CMakeLists.txt
@@ -1,37 +1,20 @@
 # ------------------- Source files --------------------
 
-add_subdirectory(node_processor)
+add_subdirectory(ast)
 add_subdirectory(modules)
+add_subdirectory(node_processor)
 add_subdirectory(utils)
 
 add_library(
   PugsLanguage
-  ASTBuilder.cpp
-  ASTModulesImporter.cpp
-  ASTNodeAffectationExpressionBuilder.cpp
-  ASTNodeArraySubscriptExpressionBuilder.cpp
-  ASTNodeBinaryOperatorExpressionBuilder.cpp
-  ASTNodeBuiltinFunctionExpressionBuilder.cpp
-  ASTNodeDataType.cpp
-  ASTNodeDataTypeFlattener.cpp
-  ASTNodeDataTypeBuilder.cpp
-  ASTNodeDataTypeChecker.cpp
-  ASTNodeDeclarationToAffectationConverter.cpp
-  ASTNodeEmptyBlockCleaner.cpp
-  ASTNodeExpressionBuilder.cpp
-  ASTNodeFunctionExpressionBuilder.cpp
-  ASTNodeFunctionEvaluationExpressionBuilder.cpp
-  ASTNodeIncDecExpressionBuilder.cpp
-  ASTNodeJumpPlacementChecker.cpp
-  ASTNodeListAffectationExpressionBuilder.cpp
-  ASTNodeNaturalConversionChecker.cpp
-  ASTNodeUnaryOperatorExpressionBuilder.cpp
-  ASTSymbolTableBuilder.cpp
-  ASTSymbolInitializationChecker.cpp
   PugsParser.cpp)
 
 # Additional dependencies
 add_dependencies(PugsLanguage
+  PugsLanguage
+  PugsLanguageAST
+  PugsLanguageModules
+  PugsLanguageUtils
   PugsUtils)
 
 # ------------------- Installation --------------------
diff --git a/src/language/FunctionTable.hpp b/src/language/FunctionTable.hpp
index 61481766727e5aba548a86134fab6201607f33c5..43232fd60e4482a73dca1a4b257c7a6c0b6ef28a 100644
--- a/src/language/FunctionTable.hpp
+++ b/src/language/FunctionTable.hpp
@@ -1,8 +1,8 @@
 #ifndef FUNCTION_TABLE_HPP
 #define FUNCTION_TABLE_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 #include <language/utils/DataVariant.hpp>
 #include <utils/PugsAssert.hpp>
 
diff --git a/src/language/PugsFunctionAdapter.hpp b/src/language/PugsFunctionAdapter.hpp
index fc2b752cbadeaa8ebf0aad1bd90c6c5bdd65d1f8..e110dd4efbdb037e2f648a752dfc00fa02abcf9a 100644
--- a/src/language/PugsFunctionAdapter.hpp
+++ b/src/language/PugsFunctionAdapter.hpp
@@ -1,9 +1,9 @@
 #ifndef PUGS_FUNCTION_ADAPTER_HPP
 #define PUGS_FUNCTION_ADAPTER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataType.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 #include <language/node_processor/ExecutionPolicy.hpp>
 #include <language/utils/ASTNodeDataTypeTraits.hpp>
 #include <language/utils/RuntimeError.hpp>
diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp
index 1c4163f4b624b92e971da126c73226d7a8fc5a06..eced83eadc03a601d1c4dd5846cfad5d1636b570 100644
--- a/src/language/PugsParser.cpp
+++ b/src/language/PugsParser.cpp
@@ -1,19 +1,19 @@
 #include <language/PugsParser.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDataTypeChecker.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeEmptyBlockCleaner.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeJumpPlacementChecker.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolInitializationChecker.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeChecker.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeEmptyBlockCleaner.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeJumpPlacementChecker.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolInitializationChecker.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTDotPrinter.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Exceptions.hpp>
diff --git a/src/language/SymbolTable.hpp b/src/language/SymbolTable.hpp
index 2187df92736ed1552f5be4300375440f46ff5bfc..52866783b9122a6d32b6d36a423cc8c690b2f969 100644
--- a/src/language/SymbolTable.hpp
+++ b/src/language/SymbolTable.hpp
@@ -1,9 +1,9 @@
 #ifndef SYMBOL_TABLE_HPP
 #define SYMBOL_TABLE_HPP
 
-#include <language/ASTNodeDataType.hpp>
 #include <language/EmbedderTable.hpp>
 #include <language/FunctionTable.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 #include <language/utils/DataVariant.hpp>
 #include <utils/PugsMacros.hpp>
 
diff --git a/src/language/ASTBuilder.cpp b/src/language/ast/ASTBuilder.cpp
similarity index 99%
rename from src/language/ASTBuilder.cpp
rename to src/language/ast/ASTBuilder.cpp
index 709953c6766a6eab38aad1f3220ee058e091dda9..316c9e6041bfc7ce93f57e822edd071fbc1672a8 100644
--- a/src/language/ASTBuilder.cpp
+++ b/src/language/ast/ASTBuilder.cpp
@@ -1,10 +1,10 @@
-#include <language/ASTBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
 
 using namespace TAO_PEGTL_NAMESPACE;
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <utils/PugsAssert.hpp>
 
 #include <pegtl/contrib/parse_tree.hpp>
diff --git a/src/language/ASTBuilder.hpp b/src/language/ast/ASTBuilder.hpp
similarity index 93%
rename from src/language/ASTBuilder.hpp
rename to src/language/ast/ASTBuilder.hpp
index 2691a724d70ce40c99338441269280e0ac4c40a9..8939a09385277dc05255a643bfb46c877a7901bb 100644
--- a/src/language/ASTBuilder.hpp
+++ b/src/language/ast/ASTBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_BUILDER_HPP
 #define AST_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 #include <memory>
 
diff --git a/src/language/ASTModulesImporter.cpp b/src/language/ast/ASTModulesImporter.cpp
similarity index 96%
rename from src/language/ASTModulesImporter.cpp
rename to src/language/ast/ASTModulesImporter.cpp
index ea1e19a5b78bc30c563ad42dc86916bc155d217e..197f9dcdd33a7e268a550cea12464567ff0f93b5 100644
--- a/src/language/ASTModulesImporter.cpp
+++ b/src/language/ast/ASTModulesImporter.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTModulesImporter.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
 
 #include <language/PEGGrammar.hpp>
 
diff --git a/src/language/ASTModulesImporter.hpp b/src/language/ast/ASTModulesImporter.hpp
similarity index 94%
rename from src/language/ASTModulesImporter.hpp
rename to src/language/ast/ASTModulesImporter.hpp
index 3f8b695a4c80035182e130f8bce94ee111910698..2b8c081fdee5ef48dd9594a79ceeca13e52fdedc 100644
--- a/src/language/ASTModulesImporter.hpp
+++ b/src/language/ast/ASTModulesImporter.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_MODULES_IMPORTER_HPP
 #define AST_MODULES_IMPORTER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/modules/ModuleRepository.hpp>
 
 #include <set>
diff --git a/src/language/ASTNode.hpp b/src/language/ast/ASTNode.hpp
similarity index 98%
rename from src/language/ASTNode.hpp
rename to src/language/ast/ASTNode.hpp
index 9313d90f246b056f492cd0991ee762287e51a89f..b3dd41ca65faae6324d040aa7f4b66c078f45f6c 100644
--- a/src/language/ASTNode.hpp
+++ b/src/language/ast/ASTNode.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_HPP
 #define AST_NODE_HPP
 
-#include <language/ASTNodeDataType.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 #include <language/node_processor/ExecutionPolicy.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 #include <language/utils/DataVariant.hpp>
diff --git a/src/language/ASTNodeAffectationExpressionBuilder.cpp b/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp
similarity index 98%
rename from src/language/ASTNodeAffectationExpressionBuilder.cpp
rename to src/language/ast/ASTNodeAffectationExpressionBuilder.cpp
index 2c296212990aa050f4f12d7be992edebebcd7d77..fe1eae64970acc48560075cf9e4bdde54b436fef 100644
--- a/src/language/ASTNodeAffectationExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp
@@ -1,8 +1,8 @@
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
 
 #include <algebra/TinyVector.hpp>
-#include <language/ASTNodeNaturalConversionChecker.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 #include <language/node_processor/AffectationProcessor.hpp>
 
 ASTNodeAffectationExpressionBuilder::ASTNodeAffectationExpressionBuilder(ASTNode& n)
diff --git a/src/language/ASTNodeAffectationExpressionBuilder.hpp b/src/language/ast/ASTNodeAffectationExpressionBuilder.hpp
similarity index 88%
rename from src/language/ASTNodeAffectationExpressionBuilder.hpp
rename to src/language/ast/ASTNodeAffectationExpressionBuilder.hpp
index 61f8947ab1fade56a2a3e0bae989b5f2c2595bef..820fc90069e9f81e5c22dd41a7bf91925777799b 100644
--- a/src/language/ASTNodeAffectationExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeAffectationExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_AFFECTATION_EXPRESSION_BUILDER_HPP
 #define AST_NODE_AFFECTATION_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 struct ASTNodeAffectationExpressionBuilder
 {
diff --git a/src/language/ASTNodeArraySubscriptExpressionBuilder.cpp b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
similarity index 93%
rename from src/language/ASTNodeArraySubscriptExpressionBuilder.cpp
rename to src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
index f77c9b9d28ac126711743642f83e15208956abd4..e50b84668b6cb11d900554002ade3d6ba2937608 100644
--- a/src/language/ASTNodeArraySubscriptExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeArraySubscriptExpressionBuilder.hpp>
+#include <language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp>
 
 #include <algebra/TinyVector.hpp>
 #include <language/node_processor/ArraySubscriptProcessor.hpp>
diff --git a/src/language/ASTNodeArraySubscriptExpressionBuilder.hpp b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp
similarity index 88%
rename from src/language/ASTNodeArraySubscriptExpressionBuilder.hpp
rename to src/language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp
index 8d4f97a07c31080ca199f9030692deb70e7e62ea..5bf753a7707a5854d8e06c9c11e06f65aada3ad4 100644
--- a/src/language/ASTNodeArraySubscriptExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_ARRAY_SUBSCRIPT_EXPRESSION_BUILDER_HPP
 #define AST_NODE_ARRAY_SUBSCRIPT_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeArraySubscriptExpressionBuilder
 {
diff --git a/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp b/src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.cpp
similarity index 99%
rename from src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp
rename to src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.cpp
index cdd0a5b4ec6f178d97bb69bd75daf7e5b190e448..92074474abd0b1109feee7a53537deac2d4e44d4 100644
--- a/src/language/ASTNodeBinaryOperatorExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeBinaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <language/node_processor/BinaryExpressionProcessor.hpp>
diff --git a/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp b/src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp
similarity index 88%
rename from src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp
rename to src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp
index f6f428e21eeb9e883f2e96e2e6125b6cb9d1d437..5ddad1d8c752cf8631970e8270e99d6ad82773ac 100644
--- a/src/language/ASTNodeBinaryOperatorExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_BINARY_OPERATOR_EXPRESSION_BUILDER_HPP
 #define AST_NODE_BINARY_OPERATOR_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 struct ASTNodeBinaryOperatorExpressionBuilder
 {
diff --git a/src/language/ASTNodeBuiltinFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
similarity index 97%
rename from src/language/ASTNodeBuiltinFunctionExpressionBuilder.cpp
rename to src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
index 332f957e4a9005f11e3e0eb21976f0ad7f44e8f7..96cfcfa5292c32f18a53b3a75d24bf34275d1e3e 100644
--- a/src/language/ASTNodeBuiltinFunctionExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp
@@ -1,9 +1,9 @@
-#include <language/ASTNodeBuiltinFunctionExpressionBuilder.hpp>
+#include <language/ast/ASTNodeBuiltinFunctionExpressionBuilder.hpp>
 
-#include <language/ASTNodeDataTypeFlattener.hpp>
-#include <language/ASTNodeNaturalConversionChecker.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 #include <language/node_processor/BuiltinFunctionProcessor.hpp>
 
 PUGS_INLINE std::unique_ptr<IFunctionArgumentConverter>
diff --git a/src/language/ASTNodeBuiltinFunctionExpressionBuilder.hpp b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.hpp
similarity index 93%
rename from src/language/ASTNodeBuiltinFunctionExpressionBuilder.hpp
rename to src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.hpp
index 475ac8ba1cfc03efe5281d67eb759043239e1f21..7aded1c66c386f2b8d109594b1b5fcb7e313427c 100644
--- a/src/language/ASTNodeBuiltinFunctionExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_C_FUNCTION_EXPRESSION_BUILDER_HPP
 #define AST_NODE_C_FUNCTION_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class BuiltinFunctionProcessor;
diff --git a/src/language/ASTNodeDataType.cpp b/src/language/ast/ASTNodeDataType.cpp
similarity index 97%
rename from src/language/ASTNodeDataType.cpp
rename to src/language/ast/ASTNodeDataType.cpp
index 475971e8bde465bd2156864cef4981d2a22ec0e9..0befade165ce5812e0a3fb78f700481b99cfe867 100644
--- a/src/language/ASTNodeDataType.cpp
+++ b/src/language/ast/ASTNodeDataType.cpp
@@ -1,7 +1,7 @@
-#include <language/ASTNodeDataType.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <utils/PugsAssert.hpp>
 
 ASTNodeDataType
diff --git a/src/language/ASTNodeDataType.hpp b/src/language/ast/ASTNodeDataType.hpp
similarity index 100%
rename from src/language/ASTNodeDataType.hpp
rename to src/language/ast/ASTNodeDataType.hpp
diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ast/ASTNodeDataTypeBuilder.cpp
similarity index 99%
rename from src/language/ASTNodeDataTypeBuilder.cpp
rename to src/language/ast/ASTNodeDataTypeBuilder.cpp
index 4f3ccf8f5337c1ac250fb1e88bde66efd9275e13..d660534b97d37c29cdb205d9ca74d3ad0f94ac82 100644
--- a/src/language/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ast/ASTNodeDataTypeBuilder.cpp
@@ -1,8 +1,8 @@
-#include <language/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
 
-#include <language/ASTNodeNaturalConversionChecker.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 #include <language/utils/BuiltinFunctionEmbedder.hpp>
 #include <utils/PugsAssert.hpp>
 
diff --git a/src/language/ASTNodeDataTypeBuilder.hpp b/src/language/ast/ASTNodeDataTypeBuilder.hpp
similarity index 91%
rename from src/language/ASTNodeDataTypeBuilder.hpp
rename to src/language/ast/ASTNodeDataTypeBuilder.hpp
index 761e7f5215dfaf3bc14d23ddfc77e48e3b2297a8..93643c82d80c9c222cb12b482416a661ff20fb31 100644
--- a/src/language/ASTNodeDataTypeBuilder.hpp
+++ b/src/language/ast/ASTNodeDataTypeBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_DATA_TYPE_BUILDER_HPP
 #define AST_NODE_DATA_TYPE_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeDataTypeBuilder
 {
diff --git a/src/language/ASTNodeDataTypeChecker.cpp b/src/language/ast/ASTNodeDataTypeChecker.cpp
similarity index 90%
rename from src/language/ASTNodeDataTypeChecker.cpp
rename to src/language/ast/ASTNodeDataTypeChecker.cpp
index 8891123182bd82ace7df3a22ff63761dffa0d4ce..87ecba522b17666aa5ce1610f1caf54ce0db15e3 100644
--- a/src/language/ASTNodeDataTypeChecker.cpp
+++ b/src/language/ast/ASTNodeDataTypeChecker.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeDataTypeChecker.hpp>
+#include <language/ast/ASTNodeDataTypeChecker.hpp>
 
 void
 ASTNodeDataTypeChecker::_checkNodeDataTypes(const ASTNode& n)
diff --git a/src/language/ASTNodeDataTypeChecker.hpp b/src/language/ast/ASTNodeDataTypeChecker.hpp
similarity index 88%
rename from src/language/ASTNodeDataTypeChecker.hpp
rename to src/language/ast/ASTNodeDataTypeChecker.hpp
index 7c6de260e4b2ba69738210711510a7891fb03aab..8e6c06d41990c83e6d06b6ba0b002896f17008f3 100644
--- a/src/language/ASTNodeDataTypeChecker.hpp
+++ b/src/language/ast/ASTNodeDataTypeChecker.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_DATA_TYPE_CHECKER_HPP
 #define AST_NODE_DATA_TYPE_CHECKER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeDataTypeChecker
 {
diff --git a/src/language/ASTNodeDataTypeFlattener.cpp b/src/language/ast/ASTNodeDataTypeFlattener.cpp
similarity index 97%
rename from src/language/ASTNodeDataTypeFlattener.cpp
rename to src/language/ast/ASTNodeDataTypeFlattener.cpp
index 870aec274ac97ead58798871e5c1d2fbced86f85..7c3fc9d7e3a695a638e94424d8b317ea6476427b 100644
--- a/src/language/ASTNodeDataTypeFlattener.cpp
+++ b/src/language/ast/ASTNodeDataTypeFlattener.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
 
 #include <language/FunctionTable.hpp>
 #include <language/PEGGrammar.hpp>
diff --git a/src/language/ASTNodeDataTypeFlattener.hpp b/src/language/ast/ASTNodeDataTypeFlattener.hpp
similarity index 80%
rename from src/language/ASTNodeDataTypeFlattener.hpp
rename to src/language/ast/ASTNodeDataTypeFlattener.hpp
index 8d02ae16a4e9d4f38b51971e69462715b92910f0..081a9491a585a27ea1e12cb11d03647bd6ac1920 100644
--- a/src/language/ASTNodeDataTypeFlattener.hpp
+++ b/src/language/ast/ASTNodeDataTypeFlattener.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_DATA_TYPE_FLATTENER_HPP
 #define AST_NODE_DATA_TYPE_FLATTENER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeSubDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeSubDataType.hpp>
 
 #include <vector>
 
diff --git a/src/language/ASTNodeDeclarationToAffectationConverter.cpp b/src/language/ast/ASTNodeDeclarationToAffectationConverter.cpp
similarity index 90%
rename from src/language/ASTNodeDeclarationToAffectationConverter.cpp
rename to src/language/ast/ASTNodeDeclarationToAffectationConverter.cpp
index cc6b1cb4de61c04f5c7896ef437166501048dfa9..368c8051c3c33b991dbba29618f7e38f6a42c700 100644
--- a/src/language/ASTNodeDeclarationToAffectationConverter.cpp
+++ b/src/language/ast/ASTNodeDeclarationToAffectationConverter.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <utils/PugsAssert.hpp>
diff --git a/src/language/ASTNodeDeclarationToAffectationConverter.hpp b/src/language/ast/ASTNodeDeclarationToAffectationConverter.hpp
similarity index 91%
rename from src/language/ASTNodeDeclarationToAffectationConverter.hpp
rename to src/language/ast/ASTNodeDeclarationToAffectationConverter.hpp
index b57bf3d37ca10ac76c7a9f9e71a362622ed43fe4..d0c236072176e50b719261e81a803b86f0a379c6 100644
--- a/src/language/ASTNodeDeclarationToAffectationConverter.hpp
+++ b/src/language/ast/ASTNodeDeclarationToAffectationConverter.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_DECLARATION_TO_AFFECTATION_CONVERTER_HPP
 #define AST_NODE_DECLARATION_TO_AFFECTATION_CONVERTER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeDeclarationToAffectationConverter
 {
diff --git a/src/language/ASTNodeEmptyBlockCleaner.cpp b/src/language/ast/ASTNodeEmptyBlockCleaner.cpp
similarity index 94%
rename from src/language/ASTNodeEmptyBlockCleaner.cpp
rename to src/language/ast/ASTNodeEmptyBlockCleaner.cpp
index 532ce0f725ac2c79be83a88f6c8153c6b030d8da..74d80107c5dde594d48698153d08a92f705d7b7c 100644
--- a/src/language/ASTNodeEmptyBlockCleaner.cpp
+++ b/src/language/ast/ASTNodeEmptyBlockCleaner.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeEmptyBlockCleaner.hpp>
+#include <language/ast/ASTNodeEmptyBlockCleaner.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <utils/PugsAssert.hpp>
diff --git a/src/language/ASTNodeEmptyBlockCleaner.hpp b/src/language/ast/ASTNodeEmptyBlockCleaner.hpp
similarity index 88%
rename from src/language/ASTNodeEmptyBlockCleaner.hpp
rename to src/language/ast/ASTNodeEmptyBlockCleaner.hpp
index 2ba37c142826849953162fb6e37c7057d65d7764..53399ce6f53299b3535a91311840f0c45a92aa20 100644
--- a/src/language/ASTNodeEmptyBlockCleaner.hpp
+++ b/src/language/ast/ASTNodeEmptyBlockCleaner.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_EMPTY_BLOCK_CLEANER_HPP
 #define AST_NODE_EMPTY_BLOCK_CLEANER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeEmptyBlockCleaner
 {
diff --git a/src/language/ASTNodeExpressionBuilder.cpp b/src/language/ast/ASTNodeExpressionBuilder.cpp
similarity index 93%
rename from src/language/ASTNodeExpressionBuilder.cpp
rename to src/language/ast/ASTNodeExpressionBuilder.cpp
index e113dfaa5d2f815804b55dc3c01c967bdebda6be..ebad79c586c40cd63637be21e74474b942a0d431 100644
--- a/src/language/ASTNodeExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeExpressionBuilder.cpp
@@ -1,12 +1,12 @@
-#include <language/ASTNodeExpressionBuilder.hpp>
-
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeArraySubscriptExpressionBuilder.hpp>
-#include <language/ASTNodeBinaryOperatorExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
-#include <language/ASTNodeIncDecExpressionBuilder.hpp>
-#include <language/ASTNodeListAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeUnaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp>
+#include <language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeIncDecExpressionBuilder.hpp>
+#include <language/ast/ASTNodeListAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp>
 #include <language/node_processor/ASTNodeExpressionListProcessor.hpp>
 #include <language/node_processor/ASTNodeListProcessor.hpp>
 #include <language/node_processor/BreakProcessor.hpp>
diff --git a/src/language/ASTNodeExpressionBuilder.hpp b/src/language/ast/ASTNodeExpressionBuilder.hpp
similarity index 87%
rename from src/language/ASTNodeExpressionBuilder.hpp
rename to src/language/ast/ASTNodeExpressionBuilder.hpp
index c53affb0214d6b7b29f757667ea86050dd22e0af..74a2f720970df49a6ca5315dfd0b20fb2905f7d7 100644
--- a/src/language/ASTNodeExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_EXPRESSION_BUILDER_HPP
 #define AST_NODE_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeExpressionBuilder
 {
diff --git a/src/language/ASTNodeFunctionEvaluationExpressionBuilder.cpp b/src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.cpp
similarity index 76%
rename from src/language/ASTNodeFunctionEvaluationExpressionBuilder.cpp
rename to src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.cpp
index b7e1b108320caf0d1827d7706d06e74361e19e96..f7081ba0f5f41dbb1f3954574bc6cae0128a435e 100644
--- a/src/language/ASTNodeFunctionEvaluationExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.cpp
@@ -1,8 +1,8 @@
-#include <language/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
 
-#include <language/ASTNodeBuiltinFunctionExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionExpressionBuilder.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNodeBuiltinFunctionExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionExpressionBuilder.hpp>
 
 ASTNodeFunctionEvaluationExpressionBuilder::ASTNodeFunctionEvaluationExpressionBuilder(ASTNode& node)
 {
diff --git a/src/language/ASTNodeFunctionEvaluationExpressionBuilder.hpp b/src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp
similarity index 89%
rename from src/language/ASTNodeFunctionEvaluationExpressionBuilder.hpp
rename to src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp
index aacadfbd1520de5e5ea99ebea7fc15c5ede3b09e..5e474f11d06f92a4f1b187a4f850988ee100710c 100644
--- a/src/language/ASTNodeFunctionEvaluationExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_FUNCTION_EVALUATION_EXPRESSION_BUILDER_HPP
 #define AST_NODE_FUNCTION_EVALUATION_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 struct ASTNodeFunctionEvaluationExpressionBuilder
 {
diff --git a/src/language/ASTNodeFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
similarity index 99%
rename from src/language/ASTNodeFunctionExpressionBuilder.cpp
rename to src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
index 769a262061c22f7193a8aa4559cdbfe18c86d7fc..6983a69173c11813992969c7b4c36df716b049fe 100644
--- a/src/language/ASTNodeFunctionExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp
@@ -1,10 +1,10 @@
-#include <language/ASTNodeFunctionExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionExpressionBuilder.hpp>
 
-#include <language/ASTNodeDataTypeFlattener.hpp>
-#include <language/ASTNodeNaturalConversionChecker.hpp>
 #include <language/FunctionTable.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 #include <language/node_processor/FunctionProcessor.hpp>
 #include <language/node_processor/TupleToVectorProcessor.hpp>
 
diff --git a/src/language/ASTNodeFunctionExpressionBuilder.hpp b/src/language/ast/ASTNodeFunctionExpressionBuilder.hpp
similarity index 93%
rename from src/language/ASTNodeFunctionExpressionBuilder.hpp
rename to src/language/ast/ASTNodeFunctionExpressionBuilder.hpp
index 9bb11969605e89c361631905d57ee9ca1c516280..254f11dc837816dfd2abab0ea3b1431b5e20d852 100644
--- a/src/language/ASTNodeFunctionExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeFunctionExpressionBuilder.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_FUNCTION_EXPRESSION_BUILDER_HPP
 #define AST_NODE_FUNCTION_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeSubDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeSubDataType.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class FunctionProcessor;
diff --git a/src/language/ASTNodeIncDecExpressionBuilder.cpp b/src/language/ast/ASTNodeIncDecExpressionBuilder.cpp
similarity index 97%
rename from src/language/ASTNodeIncDecExpressionBuilder.cpp
rename to src/language/ast/ASTNodeIncDecExpressionBuilder.cpp
index 87e53ab85d5b492e2611005b92e83b6ff966bb68..c5eccdfcf61c597f97be00afcb688e3da857a220 100644
--- a/src/language/ASTNodeIncDecExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeIncDecExpressionBuilder.cpp
@@ -1,4 +1,5 @@
-#include <language/ASTNodeIncDecExpressionBuilder.hpp>
+#include <language/ast/ASTNodeIncDecExpressionBuilder.hpp>
+
 #include <language/PEGGrammar.hpp>
 #include <language/node_processor/IncDecExpressionProcessor.hpp>
 
diff --git a/src/language/ASTNodeIncDecExpressionBuilder.hpp b/src/language/ast/ASTNodeIncDecExpressionBuilder.hpp
similarity index 87%
rename from src/language/ASTNodeIncDecExpressionBuilder.hpp
rename to src/language/ast/ASTNodeIncDecExpressionBuilder.hpp
index 06c7603f11d02826cc1127f621e04208bacad57c..91c54c7bbf583142180666d6ca2b739477b0d70a 100644
--- a/src/language/ASTNodeIncDecExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeIncDecExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_INC_DEC_EXPRESSION_BUILDER_HPP
 #define AST_NODE_INC_DEC_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 struct ASTNodeIncDecExpressionBuilder
 {
diff --git a/src/language/ASTNodeJumpPlacementChecker.cpp b/src/language/ast/ASTNodeJumpPlacementChecker.cpp
similarity index 93%
rename from src/language/ASTNodeJumpPlacementChecker.cpp
rename to src/language/ast/ASTNodeJumpPlacementChecker.cpp
index c632b12d258464b4610fa6653e75bb2b22490371..c699d8dce4866cd229c46c9cd8ab3dde513226f6 100644
--- a/src/language/ASTNodeJumpPlacementChecker.cpp
+++ b/src/language/ast/ASTNodeJumpPlacementChecker.cpp
@@ -1,9 +1,7 @@
-#include <language/ASTNodeJumpPlacementChecker.hpp>
+#include <language/ast/ASTNodeJumpPlacementChecker.hpp>
 
 #include <language/PEGGrammar.hpp>
 
-#include <vector>
-
 void
 ASTNodeJumpPlacementChecker::_checkJumpPlacement(ASTNode& n, bool is_inside_loop)
 {
diff --git a/src/language/ASTNodeJumpPlacementChecker.hpp b/src/language/ast/ASTNodeJumpPlacementChecker.hpp
similarity index 89%
rename from src/language/ASTNodeJumpPlacementChecker.hpp
rename to src/language/ast/ASTNodeJumpPlacementChecker.hpp
index ba61d54959c9ae75512b89ae5485718f5c7690d2..a880a79c5ec3211ffa6bdba4c8ff27a71ea5c5ed 100644
--- a/src/language/ASTNodeJumpPlacementChecker.hpp
+++ b/src/language/ast/ASTNodeJumpPlacementChecker.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_JUMP_PLACEMENT_CHECKER_HPP
 #define AST_NODE_JUMP_PLACEMENT_CHECKER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTNodeJumpPlacementChecker
 {
diff --git a/src/language/ASTNodeListAffectationExpressionBuilder.cpp b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
similarity index 98%
rename from src/language/ASTNodeListAffectationExpressionBuilder.cpp
rename to src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
index e69b80b5217a99ad16a85f81cf7b6729e63a5630..604c698d7db100415fae59c810657752ed0d88f7 100644
--- a/src/language/ASTNodeListAffectationExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp
@@ -1,8 +1,8 @@
-#include <language/ASTNodeListAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeListAffectationExpressionBuilder.hpp>
 
-#include <language/ASTNodeDataTypeFlattener.hpp>
-#include <language/ASTNodeNaturalConversionChecker.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 #include <language/node_processor/AffectationProcessor.hpp>
 
 template <typename OperatorT>
diff --git a/src/language/ASTNodeListAffectationExpressionBuilder.hpp b/src/language/ast/ASTNodeListAffectationExpressionBuilder.hpp
similarity index 90%
rename from src/language/ASTNodeListAffectationExpressionBuilder.hpp
rename to src/language/ast/ASTNodeListAffectationExpressionBuilder.hpp
index 6b8a7420226697e345feab71e560d549573fea6a..50aaf94d27d364ecb5f40a3b125e09470c4b9d56 100644
--- a/src/language/ASTNodeListAffectationExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeListAffectationExpressionBuilder.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_LIST_AFFECTATION_EXPRESSION_BUILDER_HPP
 #define AST_NODE_LIST_AFFECTATION_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeSubDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeSubDataType.hpp>
 
 template <typename OperatorT>
 class ListAffectationProcessor;
diff --git a/src/language/ASTNodeNaturalConversionChecker.cpp b/src/language/ast/ASTNodeNaturalConversionChecker.cpp
similarity index 98%
rename from src/language/ASTNodeNaturalConversionChecker.cpp
rename to src/language/ast/ASTNodeNaturalConversionChecker.cpp
index e80cd262302a379e516da18955c6cd9bb954783d..c32f77d3078a36ca29ed94166dae1be97b8e9993 100644
--- a/src/language/ASTNodeNaturalConversionChecker.cpp
+++ b/src/language/ast/ASTNodeNaturalConversionChecker.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeNaturalConversionChecker.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <utils/Exceptions.hpp>
diff --git a/src/language/ASTNodeNaturalConversionChecker.hpp b/src/language/ast/ASTNodeNaturalConversionChecker.hpp
similarity index 88%
rename from src/language/ASTNodeNaturalConversionChecker.hpp
rename to src/language/ast/ASTNodeNaturalConversionChecker.hpp
index adc69894a09397fd6f4f8bc0856d22e1e0f0d18a..9d89e3b4925b6aaebfbc06c92fe30164e9b061fd 100644
--- a/src/language/ASTNodeNaturalConversionChecker.hpp
+++ b/src/language/ast/ASTNodeNaturalConversionChecker.hpp
@@ -1,9 +1,9 @@
 #ifndef AST_NODE_NATURAL_CONVERSION_CHECKER_HPP
 #define AST_NODE_NATURAL_CONVERSION_CHECKER_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataType.hpp>
-#include <language/ASTNodeSubDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
+#include <language/ast/ASTNodeSubDataType.hpp>
 
 class ASTNodeNaturalConversionChecker
 {
diff --git a/src/language/ASTNodeSubDataType.hpp b/src/language/ast/ASTNodeSubDataType.hpp
similarity index 71%
rename from src/language/ASTNodeSubDataType.hpp
rename to src/language/ast/ASTNodeSubDataType.hpp
index 0c0c7459da45bbb3b77cd828a4037e7e32e64cbf..d7844d367ae686fe88e05bc119d198288eca45c6 100644
--- a/src/language/ASTNodeSubDataType.hpp
+++ b/src/language/ast/ASTNodeSubDataType.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_SUB_DATA_TYPE_HPP
 #define AST_NODE_SUB_DATA_TYPE_HPP
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 
 struct ASTNodeSubDataType
 {
diff --git a/src/language/ASTNodeTypeCleaner.hpp b/src/language/ast/ASTNodeTypeCleaner.hpp
similarity index 96%
rename from src/language/ASTNodeTypeCleaner.hpp
rename to src/language/ast/ASTNodeTypeCleaner.hpp
index c4a1fc28dbb282fffc150198b667dd8001075398..46e516abbd4bc4145e31ecf5c15d9e0cbcdc272a 100644
--- a/src/language/ASTNodeTypeCleaner.hpp
+++ b/src/language/ast/ASTNodeTypeCleaner.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_NODE_DECLARATION_CLEANER_HPP
 #define AST_NODE_DECLARATION_CLEANER_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <utils/PugsAssert.hpp>
 
 #include <stack>
diff --git a/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp b/src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.cpp
similarity index 98%
rename from src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp
rename to src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.cpp
index 12a368e49f7f5be412adce275fa6007c983486d6..ff081cea9e53378c6ea3639e3b7fd0a7b9162ca3 100644
--- a/src/language/ASTNodeUnaryOperatorExpressionBuilder.cpp
+++ b/src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTNodeUnaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <language/node_processor/UnaryExpressionProcessor.hpp>
diff --git a/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp b/src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp
similarity index 88%
rename from src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp
rename to src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp
index 7e41a90be95f2aa0c7c0de5f44bc79e1c7c6c61a..7000981e2c530a197233546d6cceb873f1ced4f8 100644
--- a/src/language/ASTNodeUnaryOperatorExpressionBuilder.hpp
+++ b/src/language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_UNARY_OPERATOR_EXPRESSION_BUILDER_HPP
 #define AST_NODE_UNARY_OPERATOR_EXPRESSION_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 struct ASTNodeUnaryOperatorExpressionBuilder
 {
diff --git a/src/language/ASTSymbolInitializationChecker.cpp b/src/language/ast/ASTSymbolInitializationChecker.cpp
similarity index 99%
rename from src/language/ASTSymbolInitializationChecker.cpp
rename to src/language/ast/ASTSymbolInitializationChecker.cpp
index 64c6150b8e2ec703a8cfdf03b3bf4cb6bf96c461..5e8b04e937c9d54340c474205fc3643513e17aa4 100644
--- a/src/language/ASTSymbolInitializationChecker.cpp
+++ b/src/language/ast/ASTSymbolInitializationChecker.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTSymbolInitializationChecker.hpp>
+#include <language/ast/ASTSymbolInitializationChecker.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
diff --git a/src/language/ASTSymbolInitializationChecker.hpp b/src/language/ast/ASTSymbolInitializationChecker.hpp
similarity index 89%
rename from src/language/ASTSymbolInitializationChecker.hpp
rename to src/language/ast/ASTSymbolInitializationChecker.hpp
index 036de17246d9d8db5ad2c96146589922d7e405a0..022ac764821fe374255f355681883ac4dc04605f 100644
--- a/src/language/ASTSymbolInitializationChecker.hpp
+++ b/src/language/ast/ASTSymbolInitializationChecker.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_SYMBOL_INITIALIZATION_CHECKER_HPP
 #define AST_SYMBOL_INITIALIZATION_CHECKER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTSymbolInitializationChecker
 {
diff --git a/src/language/ASTSymbolTableBuilder.cpp b/src/language/ast/ASTSymbolTableBuilder.cpp
similarity index 98%
rename from src/language/ASTSymbolTableBuilder.cpp
rename to src/language/ast/ASTSymbolTableBuilder.cpp
index 07dc16e33bed3376b88fe65e1f733b4c22eb2225..98d40669bac87a0c31ee37918fb7bfcf52ba8627 100644
--- a/src/language/ASTSymbolTableBuilder.cpp
+++ b/src/language/ast/ASTSymbolTableBuilder.cpp
@@ -1,4 +1,4 @@
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
diff --git a/src/language/ASTSymbolTableBuilder.hpp b/src/language/ast/ASTSymbolTableBuilder.hpp
similarity index 92%
rename from src/language/ASTSymbolTableBuilder.hpp
rename to src/language/ast/ASTSymbolTableBuilder.hpp
index 87ccc511a76bf8c01d29a5bb865f41ad07b931b2..881712b850f2ea8072acd9ad5cb2db30272a7293 100644
--- a/src/language/ASTSymbolTableBuilder.hpp
+++ b/src/language/ast/ASTSymbolTableBuilder.hpp
@@ -1,8 +1,8 @@
 #ifndef AST_SYMBOL_TABLE_BUILDER_HPP
 #define AST_SYMBOL_TABLE_BUILDER_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTSymbolTableBuilder
 {
diff --git a/src/language/ast/CMakeLists.txt b/src/language/ast/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f4c31774302ccff20b3d24f686fd7e381ff43822
--- /dev/null
+++ b/src/language/ast/CMakeLists.txt
@@ -0,0 +1,30 @@
+# ------------------- Source files --------------------
+
+add_library(PugsLanguageAST
+  ASTBuilder.cpp
+  ASTModulesImporter.cpp
+  ASTNodeAffectationExpressionBuilder.cpp
+  ASTNodeArraySubscriptExpressionBuilder.cpp
+  ASTNodeBinaryOperatorExpressionBuilder.cpp
+  ASTNodeBuiltinFunctionExpressionBuilder.cpp
+  ASTNodeDataTypeBuilder.cpp
+  ASTNodeDataTypeChecker.cpp
+  ASTNodeDataType.cpp
+  ASTNodeDataTypeFlattener.cpp
+  ASTNodeDeclarationToAffectationConverter.cpp
+  ASTNodeEmptyBlockCleaner.cpp
+  ASTNodeExpressionBuilder.cpp
+  ASTNodeFunctionEvaluationExpressionBuilder.cpp
+  ASTNodeFunctionExpressionBuilder.cpp
+  ASTNodeIncDecExpressionBuilder.cpp
+  ASTNodeJumpPlacementChecker.cpp
+  ASTNodeListAffectationExpressionBuilder.cpp
+  ASTNodeNaturalConversionChecker.cpp
+  ASTNodeUnaryOperatorExpressionBuilder.cpp
+  ASTSymbolInitializationChecker.cpp
+  ASTSymbolTableBuilder.cpp
+  )
+
+
+add_dependencies(PugsLanguageAST
+  PugsUtils)
diff --git a/src/language/modules/ModuleRepository.cpp b/src/language/modules/ModuleRepository.cpp
index 8f2c39b99e47d6ba99e84d8745b6077a355be71e..a6c0805ea78f5c0d952bdcea1648e255fed59e87 100644
--- a/src/language/modules/ModuleRepository.cpp
+++ b/src/language/modules/ModuleRepository.cpp
@@ -1,7 +1,7 @@
 #include <language/modules/ModuleRepository.hpp>
 
-#include <language/ASTNode.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/modules/MathModule.hpp>
 #include <language/modules/MeshModule.hpp>
 #include <language/modules/VTKModule.hpp>
diff --git a/src/language/node_processor/ASTNodeListProcessor.hpp b/src/language/node_processor/ASTNodeListProcessor.hpp
index ec7cc28264ba1d53870b382d78324538e38ae5f0..be0e786ac5a98b564399efee177957325fcd6005 100644
--- a/src/language/node_processor/ASTNodeListProcessor.hpp
+++ b/src/language/node_processor/ASTNodeListProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_NODE_LIST_PROCESSOR_HPP
 #define AST_NODE_LIST_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class ASTNodeListProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/ArraySubscriptProcessor.hpp b/src/language/node_processor/ArraySubscriptProcessor.hpp
index 76b202c5a57ad686ab44de563fd388eaba82b618..4853c65d326657a63599d62fc9d52713a96d1d5f 100644
--- a/src/language/node_processor/ArraySubscriptProcessor.hpp
+++ b/src/language/node_processor/ArraySubscriptProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef ARRAY_SUBSCRIPT_PROCESSOR_HPP
 #define ARRAY_SUBSCRIPT_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 template <typename ArrayTypeT>
diff --git a/src/language/node_processor/BinaryExpressionProcessor.hpp b/src/language/node_processor/BinaryExpressionProcessor.hpp
index dbbdd56d8ac45de2a8e8492f5b6dd10a2f230efb..2e4fcef12ffe74dcd5cf972b4353ba88ab8d0e55 100644
--- a/src/language/node_processor/BinaryExpressionProcessor.hpp
+++ b/src/language/node_processor/BinaryExpressionProcessor.hpp
@@ -1,8 +1,8 @@
 #ifndef BINARY_EXPRESSION_PROCESSOR_HPP
 #define BINARY_EXPRESSION_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 template <typename Op>
diff --git a/src/language/node_processor/ConcatExpressionProcessor.hpp b/src/language/node_processor/ConcatExpressionProcessor.hpp
index 9d8e6eeb785b9c734ab68e93d1e41224e74c816e..e47178494fe2bf88f8c7e5bebf9455c58732b08e 100644
--- a/src/language/node_processor/ConcatExpressionProcessor.hpp
+++ b/src/language/node_processor/ConcatExpressionProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef CONCAT_EXPRESSION_PROCESSOR_HPP
 #define CONCAT_EXPRESSION_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 template <typename B_DataT>
diff --git a/src/language/node_processor/DoWhileProcessor.hpp b/src/language/node_processor/DoWhileProcessor.hpp
index 69a5da7fe26a5ca8a49c813771978482027e5437..a8240cf34a822a768bfd28f2861005062e386235 100644
--- a/src/language/node_processor/DoWhileProcessor.hpp
+++ b/src/language/node_processor/DoWhileProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef DO_WHILE_PROCESSOR_HPP
 #define DO_WHILE_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class DoWhileProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/ForProcessor.hpp b/src/language/node_processor/ForProcessor.hpp
index 568ff7fc5b4cbfa0d98dc332c99bccfe51c56215..83c2f8ceed2d2038bff2696e8fc6bc422a15cce8 100644
--- a/src/language/node_processor/ForProcessor.hpp
+++ b/src/language/node_processor/ForProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef FOR_PROCESSOR_HPP
 #define FOR_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class ForProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/IfProcessor.hpp b/src/language/node_processor/IfProcessor.hpp
index 9c0baf55b0c6b0b8c6143989928e551f8aca3600..c1af1b99c5b7913fcabfa9633421813270c6ff6b 100644
--- a/src/language/node_processor/IfProcessor.hpp
+++ b/src/language/node_processor/IfProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef IF_PROCESSOR_HPP
 #define IF_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class IfProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/IncDecExpressionProcessor.hpp b/src/language/node_processor/IncDecExpressionProcessor.hpp
index 1f328dd5c4ae5e2c0869aef783e010351f33becc..2b63b6f3788aaed76782086e72bd4dc00f890fea 100644
--- a/src/language/node_processor/IncDecExpressionProcessor.hpp
+++ b/src/language/node_processor/IncDecExpressionProcessor.hpp
@@ -1,9 +1,9 @@
 #ifndef INC_DEC_EXPRESSION_PROCESSOR_HPP
 #define INC_DEC_EXPRESSION_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 template <typename Op>
diff --git a/src/language/node_processor/LocalNameProcessor.hpp b/src/language/node_processor/LocalNameProcessor.hpp
index 1b6cde20f4571ddf699a402c90cf9edbec1e96e2..be6ea4f4cdc78e8113af701b24c6d2f794d998b1 100644
--- a/src/language/node_processor/LocalNameProcessor.hpp
+++ b/src/language/node_processor/LocalNameProcessor.hpp
@@ -1,8 +1,8 @@
 #ifndef LOCAL_NODE_PROCESSOR_HPP
 #define LOCAL_NODE_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class LocalNameProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/NameProcessor.hpp b/src/language/node_processor/NameProcessor.hpp
index 390873f82f5d9491b5a74a5da0af6a83c59a97d7..70dfac0d5461581a4eadea15c58750becd1e1e85 100644
--- a/src/language/node_processor/NameProcessor.hpp
+++ b/src/language/node_processor/NameProcessor.hpp
@@ -1,8 +1,8 @@
 #ifndef NODE_PROCESSOR_HPP
 #define NODE_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class NameProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/OStreamProcessor.hpp b/src/language/node_processor/OStreamProcessor.hpp
index 81dc1a91e140d02a989684f39559b9fd16903612..bc5778bc02a64aa32083c81e8675b331384e361b 100644
--- a/src/language/node_processor/OStreamProcessor.hpp
+++ b/src/language/node_processor/OStreamProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef OSTREAM_PROCESSOR_HPP
 #define OSTREAM_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class OStreamProcessor final : public INodeProcessor
diff --git a/src/language/node_processor/TupleToVectorProcessor.hpp b/src/language/node_processor/TupleToVectorProcessor.hpp
index 3cb70f049572c61323a06897ca75a3ad8f3f56d4..b8b32ac123919bb73b9cf0c32953261a79e66ef6 100644
--- a/src/language/node_processor/TupleToVectorProcessor.hpp
+++ b/src/language/node_processor/TupleToVectorProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef TUPLE_TO_VECTOR_PROCESSOR_HPP
 #define TUPLE_TO_VECTOR_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 template <typename TupleProcessorT, size_t N>
diff --git a/src/language/node_processor/ValueProcessor.hpp b/src/language/node_processor/ValueProcessor.hpp
index 06052c72f510addda769c3c1c9811edd86f8d6ac..342198223e763fdb66781a632da0d107182234d5 100644
--- a/src/language/node_processor/ValueProcessor.hpp
+++ b/src/language/node_processor/ValueProcessor.hpp
@@ -1,8 +1,8 @@
 #ifndef VALUE_PROCESSOR_HPP
 #define VALUE_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 #include <utils/EscapedString.hpp>
 
diff --git a/src/language/node_processor/WhileProcessor.hpp b/src/language/node_processor/WhileProcessor.hpp
index 82d7fa22ab8cee461eaf117fa832b3598091d82c..b0f27a8a5deeea459138ab7d68176841aa9c7f56 100644
--- a/src/language/node_processor/WhileProcessor.hpp
+++ b/src/language/node_processor/WhileProcessor.hpp
@@ -1,7 +1,7 @@
 #ifndef WHILE_PROCESSOR_HPP
 #define WHILE_PROCESSOR_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
 
 class WhileProcessor final : public INodeProcessor
diff --git a/src/language/utils/ASTDotPrinter.hpp b/src/language/utils/ASTDotPrinter.hpp
index bd6b6892f4fcd9da84fed9154f75f1fa991dec1e..ce7d4dd396a1a467c3e2e18a161156fea9294c6b 100644
--- a/src/language/utils/ASTDotPrinter.hpp
+++ b/src/language/utils/ASTDotPrinter.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_DOT_PRINTER_HPP
 #define AST_DOT_PRINTER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 #include <map>
 
diff --git a/src/language/utils/ASTNodeDataTypeTraits.hpp b/src/language/utils/ASTNodeDataTypeTraits.hpp
index 14435925d49d1fd42518cef4c74776d79d9bb99d..90dff3af8377a044eb32abfafdffee16b664e854 100644
--- a/src/language/utils/ASTNodeDataTypeTraits.hpp
+++ b/src/language/utils/ASTNodeDataTypeTraits.hpp
@@ -2,8 +2,8 @@
 #define AST_NODE_DATA_TYPE_TRAITS_H
 
 #include <algebra/TinyVector.hpp>
-#include <language/ASTNodeDataType.hpp>
 #include <language/FunctionSymbolId.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 
 template <typename T>
 inline ASTNodeDataType ast_node_data_type_from = ASTNodeDataType::undefined_t;
diff --git a/src/language/utils/ASTPrinter.hpp b/src/language/utils/ASTPrinter.hpp
index 93d4231d230d27e5294969fd4f6e3176dfc4219f..02838edf6ea38f03f212770cd48c01e51d9c9298 100644
--- a/src/language/utils/ASTPrinter.hpp
+++ b/src/language/utils/ASTPrinter.hpp
@@ -1,7 +1,7 @@
 #ifndef AST_PRINTER_HPP
 #define AST_PRINTER_HPP
 
-#include <language/ASTNode.hpp>
+#include <language/ast/ASTNode.hpp>
 
 class ASTPrinter
 {
diff --git a/src/language/utils/BuiltinFunctionEmbedder.hpp b/src/language/utils/BuiltinFunctionEmbedder.hpp
index ab2523c722f41cb2c070a422c747b2e7af0a23ff..c833762c62e139b8cfd7daf9a1d1def1d279d86e 100644
--- a/src/language/utils/BuiltinFunctionEmbedder.hpp
+++ b/src/language/utils/BuiltinFunctionEmbedder.hpp
@@ -1,8 +1,8 @@
 #ifndef BUILTIN_FUNCTION_EMBEDDER_HPP
 #define BUILTIN_FUNCTION_EMBEDDER_HPP
 
-#include <language/ASTNodeDataType.hpp>
 #include <language/FunctionTable.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 #include <language/utils/ASTNodeDataTypeTraits.hpp>
 #include <language/utils/DataHandler.hpp>
 #include <language/utils/DataVariant.hpp>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index f08ecf6b7ff5500024b96e3ab6e274ab2242f521..65460257bf801ab56b0826c4f58db685ee5a0a95 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -85,6 +85,7 @@ add_executable (mpi_unit_tests
 
 target_link_libraries (unit_tests
   PugsLanguage
+  PugsLanguageAST
   PugsLanguageModules
   PugsLanguageUtils
   PugsMesh
diff --git a/tests/test_ASTBuilder.cpp b/tests/test_ASTBuilder.cpp
index 51dc847f0172894b93047f63e6f8229530cf85df..2399a78617d6a6f30774fbc70be735d5850967d3 100644
--- a/tests/test_ASTBuilder.cpp
+++ b/tests/test_ASTBuilder.cpp
@@ -1,6 +1,6 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTDotPrinter.cpp b/tests/test_ASTDotPrinter.cpp
index b36ff90a211366ce49fa55ea55932f37f5b59e28..d9597ebca0a7d4e448563ea50e109474e6dd7e80 100644
--- a/tests/test_ASTDotPrinter.cpp
+++ b/tests/test_ASTDotPrinter.cpp
@@ -1,6 +1,6 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
 #include <language/utils/ASTDotPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTModulesImporter.cpp b/tests/test_ASTModulesImporter.cpp
index 04d2b15220b6df9fbd9e46a3a7eda51cbcb31699..5d4d0f5b89768980143c1e969665dd61f8fc5cdc 100644
--- a/tests/test_ASTModulesImporter.cpp
+++ b/tests/test_ASTModulesImporter.cpp
@@ -1,10 +1,10 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
 #include <language/SymbolTable.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTNode.cpp b/tests/test_ASTNode.cpp
index 1c51d7b5859051304b89d2ef0ca33dc41c285bd2..173c83f8634ef01d8f5b74c526c165f0b2796f48 100644
--- a/tests/test_ASTNode.cpp
+++ b/tests/test_ASTNode.cpp
@@ -1,7 +1,7 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTNode.hpp>
 #include <language/PEGGrammar.hpp>
+#include <language/ast/ASTNode.hpp>
 #include <language/node_processor/FakeProcessor.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeAffectationExpressionBuilder.cpp b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
index 9d16f8c611d1699dbacdf8498f253c4250066cb0..db62cbfbcf60b80d4269c6cd98f3faf4502a8fe1 100644
--- a/tests/test_ASTNodeAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
@@ -1,13 +1,13 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolInitializationChecker.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolInitializationChecker.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp b/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
index 30b3abb50928b0fb1b244e6edf9edb5a3a398527..941df56ac9d28de2aa5a211c61964b8d9ce05ee6 100644
--- a/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
+++ b/tests/test_ASTNodeArraySubscriptExpressionBuilder.cpp
@@ -1,7 +1,7 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeArraySubscriptExpressionBuilder.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeArraySubscriptExpressionBuilder.hpp>
 #include <language/node_processor/ArraySubscriptProcessor.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
index c575680a01791bb68b57c05436577ed60e8d40b5..18dcb85c16a95e13513aa78dc33ca7b9482ef89f 100644
--- a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
+++ b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeBinaryOperatorExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeBinaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeBuiltinFunctionExpressionBuilder.cpp b/tests/test_ASTNodeBuiltinFunctionExpressionBuilder.cpp
index b109e3d28e9b378d0b8751c5a49bb8904e763287..b9f7a9af1170c146df66456a794c7c3ace6a3eee 100644
--- a/tests/test_ASTNodeBuiltinFunctionExpressionBuilder.cpp
+++ b/tests/test_ASTNodeBuiltinFunctionExpressionBuilder.cpp
@@ -1,13 +1,13 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <language/utils/BuiltinFunctionEmbedder.hpp>
 #include <utils/Demangle.hpp>
diff --git a/tests/test_ASTNodeDataType.cpp b/tests/test_ASTNodeDataType.cpp
index 761a0a965796529f18eb8b0d3bb66c012794deb0..215076d849843fb00adb672a9bb40c8a0bb6b4ce 100644
--- a/tests/test_ASTNodeDataType.cpp
+++ b/tests/test_ASTNodeDataType.cpp
@@ -1,7 +1,7 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeDataType.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeDataType.hpp>
 
 namespace language
 {
diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index fa7a6d13ad0821e7ece0e0077187ee8df27de87f..96eb27f4627bf01d98f2a640966f647ee761aee3 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -1,8 +1,8 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTNodeDataTypeChecker.cpp b/tests/test_ASTNodeDataTypeChecker.cpp
index 61784aea28cf4abdc3fa8df6cbb68cf243a54159..7ce833b6d43cecaaadf28086435378c0a6788933 100644
--- a/tests/test_ASTNodeDataTypeChecker.cpp
+++ b/tests/test_ASTNodeDataTypeChecker.cpp
@@ -1,9 +1,9 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDataTypeChecker.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeChecker.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <pegtl/string_input.hpp>
 
diff --git a/tests/test_ASTNodeDataTypeFlattener.cpp b/tests/test_ASTNodeDataTypeFlattener.cpp
index b6de87c63546c0ca5274fbdcdd18da9a26a237cc..dae7437d920694f63e544aca15dc3c4e6fdb8e84 100644
--- a/tests/test_ASTNodeDataTypeFlattener.cpp
+++ b/tests/test_ASTNodeDataTypeFlattener.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDataTypeFlattener.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeFlattener.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <pegtl/string_input.hpp>
 
diff --git a/tests/test_ASTNodeDeclarationToAffectationConverter.cpp b/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
index d16bc7ee2791be0052ccb35f349e98fa7d3e0c4e..8e9912e1a43d94bef7bb7e707991b9a855d111ed 100644
--- a/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
+++ b/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
@@ -1,9 +1,9 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTNodeEmptyBlockCleaner.cpp b/tests/test_ASTNodeEmptyBlockCleaner.cpp
index 18aafa1b7dbda04754fe4a7008e4d2c14d3298ab..a52730e662268621db4a22fa5237136ef5d053a8 100644
--- a/tests/test_ASTNodeEmptyBlockCleaner.cpp
+++ b/tests/test_ASTNodeEmptyBlockCleaner.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeEmptyBlockCleaner.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeEmptyBlockCleaner.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeExpressionBuilder.cpp b/tests/test_ASTNodeExpressionBuilder.cpp
index 5213aa728de0b9c42c866b79a78745433b0e34b1..7eedbf1be12e3934783f4f2f235aca13877acbe1 100644
--- a/tests/test_ASTNodeExpressionBuilder.cpp
+++ b/tests/test_ASTNodeExpressionBuilder.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp b/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
index ddfae54dede09ee87886d25b335c903524b9a688..7ecb9ee4de55d752151e33f922a50262e1a2eb7c 100644
--- a/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeFunctionExpressionBuilder.cpp b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
index e915888d8b9a0757a173e89da72a1291079d08e0..b350dea6f167c6137dc63102e4f9da655d2b9d50 100644
--- a/tests/test_ASTNodeFunctionExpressionBuilder.cpp
+++ b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
@@ -1,13 +1,13 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
-#include <language/ASTNodeFunctionExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionEvaluationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeFunctionExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeIncDecExpressionBuilder.cpp b/tests/test_ASTNodeIncDecExpressionBuilder.cpp
index 845b9f98798733b1b86ca492a48d2005a9596f63..60ce2489fd8b1b93996cd2904b8bf9852b8a1c79 100644
--- a/tests/test_ASTNodeIncDecExpressionBuilder.cpp
+++ b/tests/test_ASTNodeIncDecExpressionBuilder.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeIncDecExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeIncDecExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeJumpPlacementChecker.cpp b/tests/test_ASTNodeJumpPlacementChecker.cpp
index 1d8b8937179535e8cdcad814bfaa2ba34e134214..419519cd5803473aadb56abea772d537aaf38c2a 100644
--- a/tests/test_ASTNodeJumpPlacementChecker.cpp
+++ b/tests/test_ASTNodeJumpPlacementChecker.cpp
@@ -1,9 +1,9 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeJumpPlacementChecker.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeJumpPlacementChecker.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <pegtl/string_input.hpp>
 
diff --git a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
index a35ea34a7b2a2813a96acffce462e6fe31ad06c6..18a8687735a2bb7ff88b152543c96931db339a87 100644
--- a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeListAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeListAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeListProcessor.cpp b/tests/test_ASTNodeListProcessor.cpp
index 7b1105a347a9e722a4d04d887891d7637d6435bf..bccd0080fb1de962815aef8f95d95f1e02a5fef3 100644
--- a/tests/test_ASTNodeListProcessor.cpp
+++ b/tests/test_ASTNodeListProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/node_processor/ASTNodeListProcessor.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTNodeNaturalConversionChecker.cpp b/tests/test_ASTNodeNaturalConversionChecker.cpp
index 5202b437f1c6cd240ed6945edd2048986395f039..373a0590955d494ad965c1fcba0790f50a1f4c9d 100644
--- a/tests/test_ASTNodeNaturalConversionChecker.cpp
+++ b/tests/test_ASTNodeNaturalConversionChecker.cpp
@@ -1,7 +1,7 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTNode.hpp>
-#include <language/ASTNodeNaturalConversionChecker.hpp>
+#include <language/ast/ASTNode.hpp>
+#include <language/ast/ASTNodeNaturalConversionChecker.hpp>
 
 namespace language
 {
diff --git a/tests/test_ASTNodeTypeCleaner.cpp b/tests/test_ASTNodeTypeCleaner.cpp
index 0a02111bc9660649984d7dbecc602cd6e1a3e47e..80d7ccfc081a0d4cc5165a38b99ba0214975e11a 100644
--- a/tests/test_ASTNodeTypeCleaner.cpp
+++ b/tests/test_ASTNodeTypeCleaner.cpp
@@ -1,9 +1,9 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #define CHECK_AST(data, expected_output)                                                       \
diff --git a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
index f89c58f0e3a3bec2ebe8d15280b02ce10cbb0a09..6c30d3f0a9e8470f7156fe6aa8239002f065aee5 100644
--- a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
+++ b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTNodeUnaryOperatorExpressionBuilder.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTNodeUnaryOperatorExpressionBuilder.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ASTPrinter.cpp b/tests/test_ASTPrinter.cpp
index debd85edc836fb871b7316f94b1d6a175128dfd9..2e08706698313539e133f8cacd3b64145db84866 100644
--- a/tests/test_ASTPrinter.cpp
+++ b/tests/test_ASTPrinter.cpp
@@ -1,7 +1,7 @@
 // -*- coding: utf-8 -*-
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ASTSymbolInitializationChecker.cpp b/tests/test_ASTSymbolInitializationChecker.cpp
index 7950a463c0916dca5af29599d30589b4dfba38d5..fe59815acf5c65c642a81155fa30abf422a5b471 100644
--- a/tests/test_ASTSymbolInitializationChecker.cpp
+++ b/tests/test_ASTSymbolInitializationChecker.cpp
@@ -1,8 +1,8 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTSymbolInitializationChecker.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTSymbolInitializationChecker.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <pegtl/string_input.hpp>
 
diff --git a/tests/test_ASTSymbolTableBuilder.cpp b/tests/test_ASTSymbolTableBuilder.cpp
index 0cbeb8b27a1dfbfb1944ff44a42f7372193196d7..62df4dce0501a6cb64b3d19e8ae5c1637a4d19fc 100644
--- a/tests/test_ASTSymbolTableBuilder.cpp
+++ b/tests/test_ASTSymbolTableBuilder.cpp
@@ -1,7 +1,7 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 
 #include <pegtl/string_input.hpp>
 
diff --git a/tests/test_AffectationProcessor.cpp b/tests/test_AffectationProcessor.cpp
index a604644483ff01f99ebfe69bb07f5bfe9abbd95b..c94ecdb7d9a1d320dce9f00a7bd70755fd425749 100644
--- a/tests/test_AffectationProcessor.cpp
+++ b/tests/test_AffectationProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_AffectationToStringProcessor.cpp b/tests/test_AffectationToStringProcessor.cpp
index 4a6e0837e0af5c6461077b6f478656b3b35053fe..4053e023187944c87333f0dd605404104d039aa2 100644
--- a/tests/test_AffectationToStringProcessor.cpp
+++ b/tests/test_AffectationToStringProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ArraySubscriptProcessor.cpp b/tests/test_ArraySubscriptProcessor.cpp
index 1ce9a5fff3498e20766051030c308fa7f2ce665b..a48390214ac9cfd38bfa063613c0dc2880fe1f6a 100644
--- a/tests/test_ArraySubscriptProcessor.cpp
+++ b/tests/test_ArraySubscriptProcessor.cpp
@@ -1,13 +1,13 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_BinaryExpressionProcessor_utils.hpp b/tests/test_BinaryExpressionProcessor_utils.hpp
index 67cfc9cc2307c4682f03e4a3fd5e6cd687caa826..176c91344be48d261282171eb460b7c7a358d2dd 100644
--- a/tests/test_BinaryExpressionProcessor_utils.hpp
+++ b/tests/test_BinaryExpressionProcessor_utils.hpp
@@ -1,12 +1,12 @@
 #ifndef TEST_BINARY_EXPRESSION_PROCESSOR_UTILS_HPP
 #define TEST_BINARY_EXPRESSION_PROCESSOR_UTILS_HPP
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_BuiltinFunctionProcessor.cpp b/tests/test_BuiltinFunctionProcessor.cpp
index 48c7ccb3439c95184a1049f957d250f302738f05..0fc0888920ba5ae969594c5ab5efdf24cca38986 100644
--- a/tests/test_BuiltinFunctionProcessor.cpp
+++ b/tests/test_BuiltinFunctionProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/modules/MathModule.hpp>
 
 #define CHECK_BUILTIN_FUNCTION_EVALUATION_RESULT(data, variable_name, expected_value)                \
diff --git a/tests/test_ConcatExpressionProcessor.cpp b/tests/test_ConcatExpressionProcessor.cpp
index 358aa46c616cb812c19ccce9ed0576dc5e11b655..adc5f49e0360b2e1ea3e784ea83fae60cd157d69 100644
--- a/tests/test_ConcatExpressionProcessor.cpp
+++ b/tests/test_ConcatExpressionProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_DoWhileProcessor.cpp b/tests/test_DoWhileProcessor.cpp
index 1ee60e1edb56147f11af9ba4268a78a1088d079a..b8f88a19aadf6236bc97e32e31518ea10d139a14 100644
--- a/tests/test_DoWhileProcessor.cpp
+++ b/tests/test_DoWhileProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_ForProcessor.cpp b/tests/test_ForProcessor.cpp
index cb4166423d5d7bc5554c280dca19288e8cb6af86..31ec05abccbf27cb28c6f674d178b15b7709ba4a 100644
--- a/tests/test_ForProcessor.cpp
+++ b/tests/test_ForProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/utils/ASTPrinter.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_FunctionProcessor.cpp b/tests/test_FunctionProcessor.cpp
index cca3bc054e6a33b074608c19c9fe1a8d5f7cd79c..59386bbae65a807841ead561899e0a61719a82d3 100644
--- a/tests/test_FunctionProcessor.cpp
+++ b/tests/test_FunctionProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_IfProcessor.cpp b/tests/test_IfProcessor.cpp
index 99eaa6342f5ad17730f77be8238e90a7ec30b61b..ccade16253ae5b1024a97cc5ba038ec222bf5156 100644
--- a/tests/test_IfProcessor.cpp
+++ b/tests/test_IfProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_IncDecExpressionProcessor.cpp b/tests/test_IncDecExpressionProcessor.cpp
index 910e6cc56ca39da43373178069d4e04949bd6b50..ca13dbde2c33330515300b1fa19ba163a771c5f2 100644
--- a/tests/test_IncDecExpressionProcessor.cpp
+++ b/tests/test_IncDecExpressionProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_ListAffectationProcessor.cpp b/tests/test_ListAffectationProcessor.cpp
index bb5fd303a279f3617e1f444e2e95023955322fdb..e0f17e7f593f98a15457686e9e38b0bccfa34938 100644
--- a/tests/test_ListAffectationProcessor.cpp
+++ b/tests/test_ListAffectationProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_NameProcessor.cpp b/tests/test_NameProcessor.cpp
index 011e528d4e06950dd9344e14c65ee586913f2d8b..84669c888673d8339fa2263130c7a480f57c1754 100644
--- a/tests/test_NameProcessor.cpp
+++ b/tests/test_NameProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/node_processor/NameProcessor.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_OStreamProcessor.cpp b/tests/test_OStreamProcessor.cpp
index 017f1218af3f4d293d4da557d1714a5394da8daa..2c2dec499ded521a58780f125d965d2361c51bbc 100644
--- a/tests/test_OStreamProcessor.cpp
+++ b/tests/test_OStreamProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <language/node_processor/OStreamProcessor.hpp>
 #include <utils/Demangle.hpp>
 
diff --git a/tests/test_TupleToVectorProcessor.cpp b/tests/test_TupleToVectorProcessor.cpp
index 20e7081ecea66ca45b0af8c78d166a5b81e46c12..6ddbf513d35470dbd39d6a5842fdfc37b75e5eaf 100644
--- a/tests/test_TupleToVectorProcessor.cpp
+++ b/tests/test_TupleToVectorProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTModulesImporter.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTModulesImporter.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_UnaryExpressionProcessor.cpp b/tests/test_UnaryExpressionProcessor.cpp
index 728eed9ff1144c3b10e515f313d018fb2e43aca1..e933902adaefd968cc3036c8bbf007b29d054f39 100644
--- a/tests/test_UnaryExpressionProcessor.cpp
+++ b/tests/test_UnaryExpressionProcessor.cpp
@@ -1,11 +1,11 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>
diff --git a/tests/test_WhileProcessor.cpp b/tests/test_WhileProcessor.cpp
index 325efedd0671f8953c11bb7d387940e854cbbac7..4a823c068f92013530b4622ef665f9ed3a4713db 100644
--- a/tests/test_WhileProcessor.cpp
+++ b/tests/test_WhileProcessor.cpp
@@ -1,12 +1,12 @@
 #include <catch2/catch.hpp>
 
-#include <language/ASTBuilder.hpp>
-#include <language/ASTNodeAffectationExpressionBuilder.hpp>
-#include <language/ASTNodeDataTypeBuilder.hpp>
-#include <language/ASTNodeDeclarationToAffectationConverter.hpp>
-#include <language/ASTNodeExpressionBuilder.hpp>
-#include <language/ASTNodeTypeCleaner.hpp>
-#include <language/ASTSymbolTableBuilder.hpp>
+#include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
+#include <language/ast/ASTNodeDataTypeBuilder.hpp>
+#include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
+#include <language/ast/ASTNodeExpressionBuilder.hpp>
+#include <language/ast/ASTNodeTypeCleaner.hpp>
+#include <language/ast/ASTSymbolTableBuilder.hpp>
 #include <utils/Demangle.hpp>
 
 #include <pegtl/string_input.hpp>