diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp
index 9e187baf3233e394575e987c6725e97e183d2081..3e51cda195c13be9ba0901b504aa2c045eff63f8 100644
--- a/src/language/ASTBuilder.cpp
+++ b/src/language/ASTBuilder.cpp
@@ -233,7 +233,7 @@ using selector =
                                                      for_statement,
                                                      break_kw,
                                                      continue_kw>,
-                       ASTBuilder::rearrange::on<product, affectation, expression>,
+                       ASTBuilder::rearrange::on<logical_or, logical_and, bitwise_xor, equality, compare, sum, product, affectation, expression>,
                        ASTBuilder::simplify_unary::
                          on<unary_minus, unary_plus, unary_not, function_evaluation, type_expression, unary_expression>,
                        parse_tree::remove_content::on<plus_op,
diff --git a/tests/test_ASTBuilder.cpp b/tests/test_ASTBuilder.cpp
index 11bdaa22aa8376f7493a4a6c0db0e3568addbe15..9e30272f22bac26f8655f21bed412175868c30cd 100644
--- a/tests/test_ASTBuilder.cpp
+++ b/tests/test_ASTBuilder.cpp
@@ -170,43 +170,43 @@ string s; s = "foo";
 
         std::string_view result = R"(
 (root)
- `-(language::minus_op)
-     +-(language::plus_op)
-     |   +-(language::xor_op)
-     |   |   +-(language::greater_op)
-     |   |   |   +-(language::lesser_op)
-     |   |   |   |   +-(language::or_op)
-     |   |   |   |   |   +-(language::and_op)
-     |   |   |   |   |   |   +-(language::xor_op)
-     |   |   |   |   |   |   |   +-(language::greater_or_eq_op)
-     |   |   |   |   |   |   |   |   +-(language::or_op)
-     |   |   |   |   |   |   |   |   |   +-(language::eqeq_op)
-     |   |   |   |   |   |   |   |   |   |   +-(language::minus_op)
-     |   |   |   |   |   |   |   |   |   |   |   +-(language::lesser_or_eq_op)
-     |   |   |   |   |   |   |   |   |   |   |   |   +-(language::and_op)
-     |   |   |   |   |   |   |   |   |   |   |   |   |   +-(language::plus_op)
-     |   |   |   |   |   |   |   |   |   |   |   |   |   |   +-(language::integer:1)
-     |   |   |   |   |   |   |   |   |   |   |   |   |   |   `-(language::integer:2)
-     |   |   |   |   |   |   |   |   |   |   |   |   |   `-(language::integer:3)
-     |   |   |   |   |   |   |   |   |   |   |   |   `-(language::multiply_op)
-     |   |   |   |   |   |   |   |   |   |   |   |       +-(language::integer:2)
-     |   |   |   |   |   |   |   |   |   |   |   |       `-(language::integer:4)
-     |   |   |   |   |   |   |   |   |   |   |   `-(language::integer:1)
-     |   |   |   |   |   |   |   |   |   |   `-(language::integer:2)
-     |   |   |   |   |   |   |   |   |   `-(language::integer:2)
-     |   |   |   |   |   |   |   |   `-(language::divide_op)
-     |   |   |   |   |   |   |   |       +-(language::integer:1)
-     |   |   |   |   |   |   |   |       `-(language::integer:5)
-     |   |   |   |   |   |   |   `-(language::integer:7)
-     |   |   |   |   |   |   `-(language::integer:2)
-     |   |   |   |   |   `-(language::integer:2)
-     |   |   |   |   `-(language::integer:3)
-     |   |   |   `-(language::integer:7)
-     |   |   `-(language::unary_minus)
+ `-(language::or_op)
+     +-(language::or_op)
+     |   +-(language::and_op)
+     |   |   +-(language::plus_op)
+     |   |   |   +-(language::integer:1)
+     |   |   |   `-(language::integer:2)
+     |   |   `-(language::eqeq_op)
+     |   |       +-(language::lesser_or_eq_op)
+     |   |       |   +-(language::integer:3)
+     |   |       |   `-(language::minus_op)
+     |   |       |       +-(language::multiply_op)
+     |   |       |       |   +-(language::integer:2)
+     |   |       |       |   `-(language::integer:4)
+     |   |       |       `-(language::integer:1)
      |   |       `-(language::integer:2)
-     |   `-(language::true_kw)
-     `-(language::unary_not)
-         `-(language::false_kw)
+     |   `-(language::and_op)
+     |       +-(language::xor_op)
+     |       |   +-(language::greater_or_eq_op)
+     |       |   |   +-(language::integer:2)
+     |       |   |   `-(language::divide_op)
+     |       |   |       +-(language::integer:1)
+     |       |   |       `-(language::integer:5)
+     |       |   `-(language::integer:7)
+     |       `-(language::integer:2)
+     `-(language::xor_op)
+         +-(language::greater_op)
+         |   +-(language::lesser_op)
+         |   |   +-(language::integer:2)
+         |   |   `-(language::integer:3)
+         |   `-(language::integer:7)
+         `-(language::minus_op)
+             +-(language::plus_op)
+             |   +-(language::unary_minus)
+             |   |   `-(language::integer:2)
+             |   `-(language::true_kw)
+             `-(language::unary_not)
+                 `-(language::false_kw)
 )";
         CHECK_AST(data, result);
       }