This is an automated email from the ASF dual-hosted git repository.

mariofusco pushed a commit to branch dev-new-parser
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git

commit fab3cf01a3404310f8eb5bf5e78b24660c34a4d0
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Fri Feb 9 17:50:54 2024 +0900

    [DROOLS-7591] Experiment branch : migrate a new drools-lsp parser into 
drools
    - New parser is migrated in drools-drl/drools-drl-parser with 
org.drools.drl10.parser package
    - To enable the new parser, run `mvn test -PDRL10`
    - At the moment, we get lots of test failures especially in 
drools-model/drools-model-codegen and 
drools-test-coverage/test-compiler-integration
---
 bom/drools-bom/pom.xml                             |  18 ++++
 .../KnowledgeBuilderRulesConfigurationImpl.java    |   1 -
 .../java/org/drools/compiler/lang/DescrDumper.java |   3 +-
 .../compiler/rule/builder/PatternBuilder.java      |   3 +-
 .../compiler/rule/builder/QueryElementBuilder.java |   5 +-
 drools-drl/drools-drl-parser-tests/pom.xml         |  81 +++++++++++++++
 .../drools/drl10}/parser/DRLExprParserTest.java    |   5 +-
 .../org/drools/drl10}/parser/DRLParserTest.java    |   8 +-
 .../org/drools/drl10}/parser/DescrDumperTest.java  |   5 +-
 .../drools/drl10}/parser/MiscDRLParserTest.java    |   3 +-
 .../src/test/resources/logback-test.xml            |   0
 .../org/drools/drl10}/parser/Rule_with_Extends.drl |   0
 .../drools/drl10}/parser/Rule_with_Metadata.drl    |   0
 .../drools/drl10}/parser/Rule_with_nested_LHS.drl  |   0
 .../org/drools/drl10}/parser/accumulate.drl        |   0
 .../drl10}/parser/accumulateExternalFunction.drl   |   0
 .../drl10}/parser/accumulateMultipleFunctions.drl  |   0
 .../accumulateMultipleFunctionsConstraint.drl      |   0
 .../org/drools/drl10}/parser/accumulateReverse.drl |   0
 .../drl10}/parser/accumulate_multi_pattern.drl     |   0
 .../drl10}/parser/accumulate_with_bindings.drl     |   0
 .../drl10}/parser/accumulate_with_nested_from.drl  |   0
 .../org/drools/drl10}/parser/almost_empty_rule.drl |   0
 .../org/drools/drl10}/parser/and_or_rule.drl       |   0
 .../org/drools/drl10}/parser/autofocus.drl         |   0
 .../org/drools/drl10}/parser/basic_binding.drl     |   0
 .../org/drools/drl10}/parser/bindings.drl          |   0
 .../drools/drl10}/parser/brackets_precedence.drl   |   0
 .../resources/org/drools/drl10}/parser/collect.drl |   0
 .../drl10}/parser/collect_with_nested_from.drl     |   0
 .../resources/org/drools/drl10}/parser/comment.drl |   0
 .../resources/org/drools/drl10}/parser/complex.dsl |   0
 .../drl10}/parser/declaration-in-consequence.drl   |   0
 .../drl10}/parser/declare_type_with_fields.drl     |   0
 .../org/drools/drl10}/parser/empty_rule.drl        |   0
 .../org/drools/drl10}/parser/enumeration.drl       |   0
 .../drools/drl10}/parser/eol_funny_business.drl    |   0
 .../org/drools/drl10}/parser/escaped-string.drl    |   0
 .../org/drools/drl10}/parser/eval_multiple.drl     |   0
 .../org/drools/drl10}/parser/eval_parsing.drl      |   0
 .../org/drools/drl10}/parser/eval_with_newline.drl |   0
 .../parser/expander_multiple_constraints.dslr      |   0
 .../expander_multiple_constraints_flush.dslr       |   0
 .../drl10}/parser/expander_spread_lines.dslr       |   0
 .../org/drools/drl10}/parser/extra_lhs_newline.drl |   0
 .../resources/org/drools/drl10}/parser/forall.drl  |   0
 .../org/drools/drl10}/parser/forallwithfrom.drl    |   0
 .../resources/org/drools/drl10}/parser/from.drl    |   0
 .../org/drools/drl10}/parser/function_arrays.drl   |   0
 .../org/drools/drl10}/parser/functions.drl         |   0
 .../resources/org/drools/drl10}/parser/globals.drl |   0
 .../org/drools/drl10}/parser/in_operator_test.drl  |   0
 .../drools/drl10}/parser/lhs_semicolon_delim.drl   |   0
 .../drl10}/parser/literal_bool_and_negative.drl    |   0
 .../drools/drl10}/parser/multiple_constraints.dsl  |   0
 .../org/drools/drl10}/parser/multiple_rules.drl    |   0
 .../drl10}/parser/nested_conditional_elements.drl  |   0
 .../resources/org/drools/drl10}/parser/no-loop.drl |   0
 .../drl10}/parser/not_exist_with_brackets.drl      |   0
 .../drools/drl10}/parser/not_with_constraint.drl   |   0
 .../drools/drl10}/parser/notin_operator_test.drl   |   0
 .../org/drools/drl10}/parser/or_binding.drl        |   0
 .../drools/drl10}/parser/or_binding_complex.drl    |   0
 .../drl10}/parser/or_binding_with_brackets.drl     |   0
 .../resources/org/drools/drl10}/parser/or_ce.drl   |   0
 .../org/drools/drl10}/parser/or_nesting.drl        |   0
 .../drools/drl10}/parser/package_attributes.drl    |   0
 .../drools/drl10}/parser/pluggable_operators.drl   |   0
 .../drools/drl10}/parser/qualified_classname.drl   |   0
 .../org/drools/drl10}/parser/query_and_rule.drl    |   0
 .../drl10}/parser/quoted_string_name_rule.drl      |   0
 .../org/drools/drl10}/parser/restrictions_test.drl |   0
 .../org/drools/drl10}/parser/rule_attributes.drl   |   0
 .../org/drools/drl10}/parser/rule_attributes2.drl  |   0
 .../drools/drl10}/parser/rule_attributes_alt.drl   |   0
 .../drl10}/parser/rule_calendars_attribute.drl     |   0
 .../drl10}/parser/rule_calendars_attribute2.drl    |   0
 .../drl10}/parser/rule_duration_expression.drl     |   0
 .../drl10}/parser/rule_enabled_expression.drl      |   0
 .../drl10}/parser/rule_names_number_prefix.drl     |   0
 .../org/drools/drl10}/parser/rule_not.drl          |   0
 .../org/drools/drl10}/parser/ruleflowgroup.drl     |   0
 .../org/drools/drl10}/parser/semicolon.drl         |   0
 .../org/drools/drl10}/parser/simple_query.drl      |   0
 .../org/drools/drl10}/parser/simple_rule.drl       |   0
 .../drools/drl10}/parser/soundslike_operator.drl   |   0
 .../drools/drl10}/parser/statement_ordering_1.drl  |   0
 .../drools/drl10}/parser/ternary_expression.drl    |   0
 .../test_CommentLineNumbersInConsequence.drl       |   0
 .../parser/test_ComplexChainedCallWithFrom.drl     |   0
 .../org/drools/drl10}/parser/test_EmptyPattern.drl |   0
 .../org/drools/drl10}/parser/test_EndPosition.drl  |   0
 .../drools/drl10}/parser/test_FunctionImport.drl   |   0
 .../parser/test_SimpleAccessorArgWithFrom.drl      |   0
 .../drl10}/parser/test_SimpleAccessorWithFrom.drl  |   0
 .../parser/test_SimpleFunctionCallWithFrom.drl     |   0
 .../parser/test_SimpleMethodCallWithFrom.drl       |   0
 .../org/drools/drl10}/parser/type_with_meta.drl    |   0
 .../org/drools/drl10}/parser/with_eval.drl         |   0
 .../org/drools/drl10}/parser/with_predicate.drl    |   0
 .../org/drools/drl10}/parser/with_retval.drl       |   0
 drools-drl/drools-drl-parser/pom.xml               |  45 ++++++++
 .../org/drools/drl10}/parser/DRL6Expressions.g4    |   0
 .../antlr4/org/drools/drl10}/parser/DRLLexer.g4    |   0
 .../antlr4/org/drools/drl10}/parser/DRLParser.g4   |   0
 .../antlr4/org/drools/drl10}/parser/JavaLexer.g4   |   0
 .../antlr4/org/drools/drl10}/parser/JavaParser.g4  |   0
 .../java/org/drools/drl/parser/DRLFactory.java     |   3 +
 .../{DrlExprParser.java => Drl6ExprParser.java}    |   8 +-
 .../java/org/drools/drl/parser/DrlExprParser.java  |  56 ++--------
 .../drools/drl/parser/DrlExprParserFactory.java    |  20 ++++
 .../main/java/org/drools/drl/parser/DrlParser.java |  35 ++++++-
 .../org/drools/drl/parser/lang/DRL10Lexer.java     |  42 +++-----
 .../org/drools/drl10/parser/DRLErrorListener.java  |  45 ++++----
 .../org/drools/drl10}/parser/DRLExpressions.java   |   2 +-
 .../org/drools/drl10}/parser/DRLParserError.java   |  20 +++-
 .../drools/drl10/parser/DRLParserException.java    |  30 ++++++
 .../org/drools/drl10}/parser/DRLParserHelper.java  |  20 +++-
 .../org/drools/drl10}/parser/DRLParserWrapper.java |  22 +++-
 .../org/drools/drl10}/parser/DRLVisitorImpl.java   |  31 ++++--
 .../org/drools/drl10/parser}/Developer_Notes.md    |   0
 .../org/drools/drl10/parser/Drl10ExprParser.java}  |   9 +-
 .../parser/DroolsParserExceptionFactory.java       |   2 +-
 .../org/drools/drl10}/parser/ParserHelper.java     |   4 +-
 .../drools/drl10}/parser/ParserStringUtils.java    |  20 +++-
 drools-drl/drools-drl10-parser/.gitignore          |  18 ----
 drools-drl/drools-drl10-parser/pom.xml             | 115 ---------------------
 .../java/org/drools/parser/DRLErrorListener.java   |  31 ------
 .../java/org/drools/parser/DRLParserException.java |  12 ---
 drools-drl/pom.xml                                 |   1 +
 .../test-compiler-integration/pom.xml              |  21 ++++
 .../mvel/compiler/lang/DRLExprParserTest.java      |   3 +-
 .../drools/mvel/compiler/lang/DescrDumperTest.java |   3 +-
 .../mvel/integrationtests/AlphaNodeTest.java       |   4 +-
 .../visitor/ExprConstraintDescrVisitor.java        |   3 +-
 .../internal/builder/conf/LanguageLevelOption.java |   2 +-
 pom.xml                                            |  22 ++++
 137 files changed, 458 insertions(+), 323 deletions(-)

diff --git a/bom/drools-bom/pom.xml b/bom/drools-bom/pom.xml
index 51378329dd..76a2bd10db 100644
--- a/bom/drools-bom/pom.xml
+++ b/bom/drools-bom/pom.xml
@@ -767,6 +767,24 @@
         <type>test-jar</type>
         <scope>test</scope>
       </dependency>
+      <dependency>
+        <groupId>org.drools</groupId>
+        <artifactId>drools-drl10-parser</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.drools</groupId>
+        <artifactId>drools-drl10-parser</artifactId>
+        <version>${project.version}</version>
+        <classifier>sources</classifier>
+      </dependency>
+      <dependency>
+        <groupId>org.drools</groupId>
+        <artifactId>drools-drl10-parser</artifactId>
+        <version>${project.version}</version>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
       <dependency>
         <groupId>org.drools</groupId>
         <artifactId>drools-compiler</artifactId>
diff --git 
a/drools-compiler/src/main/java/org/drools/compiler/builder/impl/KnowledgeBuilderRulesConfigurationImpl.java
 
b/drools-compiler/src/main/java/org/drools/compiler/builder/impl/KnowledgeBuilderRulesConfigurationImpl.java
index 0c90262aa2..48e3e4971f 100644
--- 
a/drools-compiler/src/main/java/org/drools/compiler/builder/impl/KnowledgeBuilderRulesConfigurationImpl.java
+++ 
b/drools-compiler/src/main/java/org/drools/compiler/builder/impl/KnowledgeBuilderRulesConfigurationImpl.java
@@ -127,7 +127,6 @@ public class KnowledgeBuilderRulesConfigurationImpl extends 
BaseConfiguration<Kn
     }
 
     private void init() {
-
         setProperty( TrimCellsInDTableOption.PROPERTY_NAME,
                     getPropertyValue(TrimCellsInDTableOption.PROPERTY_NAME,
                                                        "true"));
diff --git 
a/drools-compiler/src/main/java/org/drools/compiler/lang/DescrDumper.java 
b/drools-compiler/src/main/java/org/drools/compiler/lang/DescrDumper.java
index b3f40adbb8..5cc792e61d 100644
--- a/drools-compiler/src/main/java/org/drools/compiler/lang/DescrDumper.java
+++ b/drools-compiler/src/main/java/org/drools/compiler/lang/DescrDumper.java
@@ -34,6 +34,7 @@ import org.drools.drl.ast.descr.ExprConstraintDescr;
 import org.drools.drl.ast.descr.OperatorDescr;
 import org.drools.drl.ast.descr.RelationalExprDescr;
 import org.drools.drl.parser.DrlExprParser;
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.drools.drl.parser.impl.Operator;
 import org.kie.internal.builder.conf.LanguageLevelOption;
 
@@ -137,7 +138,7 @@ public class DescrDumper extends ReflectiveVisitor 
implements ExpressionRewriter
     }
 
     private void processConstraint(StringBuilder sbuilder, ExprConstraintDescr 
base, boolean isInsideRelCons, DumperContext context) {
-        DrlExprParser expr = new DrlExprParser( 
context.getRuleContext().getConfiguration().getOption(LanguageLevelOption.KEY));
+        DrlExprParser expr = 
DrlExprParserFactory.getDrlExrParser(context.getRuleContext().getConfiguration().getOption(LanguageLevelOption.KEY));
         ConstraintConnectiveDescr result = expr.parse( base.getExpression() );
         if ( result.getDescrs().size() == 1 ) {
             dump( sbuilder,
diff --git 
a/drools-compiler/src/main/java/org/drools/compiler/rule/builder/PatternBuilder.java
 
b/drools-compiler/src/main/java/org/drools/compiler/rule/builder/PatternBuilder.java
index fdd709abcd..bc91077120 100644
--- 
a/drools-compiler/src/main/java/org/drools/compiler/rule/builder/PatternBuilder.java
+++ 
b/drools-compiler/src/main/java/org/drools/compiler/rule/builder/PatternBuilder.java
@@ -98,6 +98,7 @@ import org.drools.drl.ast.descr.RelationalExprDescr;
 import org.drools.drl.ast.descr.ReturnValueRestrictionDescr;
 import org.drools.drl.ast.descr.RuleDescr;
 import org.drools.drl.parser.DrlExprParser;
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.drools.drl.parser.DroolsParserException;
 import org.drools.util.ClassUtils;
 import org.drools.util.StringUtils;
@@ -1802,7 +1803,7 @@ public class PatternBuilder implements 
RuleConditionBuilder<PatternDescr> {
                                                         final PatternDescr 
patternDescr,
                                                         final BaseDescr 
original,
                                                         final String 
expression) {
-        DrlExprParser parser = new 
DrlExprParser(context.getConfiguration().getOption(LanguageLevelOption.KEY));
+        DrlExprParser parser = 
DrlExprParserFactory.getDrlExrParser(context.getConfiguration().getOption(LanguageLevelOption.KEY));
         ConstraintConnectiveDescr result = 
parser.parse(normalizeEval(expression));
         result.setResource(patternDescr.getResource());
         result.copyLocation(original);
diff --git 
a/drools-compiler/src/main/java/org/drools/compiler/rule/builder/QueryElementBuilder.java
 
b/drools-compiler/src/main/java/org/drools/compiler/rule/builder/QueryElementBuilder.java
index 9c20dd4f2f..3889990858 100644
--- 
a/drools-compiler/src/main/java/org/drools/compiler/rule/builder/QueryElementBuilder.java
+++ 
b/drools-compiler/src/main/java/org/drools/compiler/rule/builder/QueryElementBuilder.java
@@ -46,6 +46,7 @@ import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
 import org.drools.drl.ast.descr.ExprConstraintDescr;
 import org.drools.drl.ast.descr.PatternDescr;
 import org.drools.drl.parser.DrlExprParser;
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.drools.drl.parser.DroolsParserException;
 import org.drools.util.ClassUtils;
 import org.drools.util.StringUtils;
@@ -264,7 +265,7 @@ public class QueryElementBuilder
             } else {
                 // it must be a literal/expression
                 // it's an expression and thus an input
-                DrlExprParser parser = new DrlExprParser( 
context.getConfiguration().getOption(LanguageLevelOption.KEY));
+                DrlExprParser parser = 
DrlExprParserFactory.getDrlExrParser(context.getConfiguration().getOption(LanguageLevelOption.KEY));
                 ConstraintConnectiveDescr bresult = parser.parse( 
bind.getExpression() );
                 if ( parser.hasErrors() ) {
                     for ( DroolsParserException error : parser.getErrors() ) {
@@ -395,7 +396,7 @@ public class QueryElementBuilder
     private ConstraintConnectiveDescr parseExpression( final RuleBuildContext 
context,
                                                        final PatternDescr 
patternDescr,
                                                        final String expression 
) {
-        DrlExprParser parser = new DrlExprParser( 
context.getConfiguration().getOption(LanguageLevelOption.KEY));
+        DrlExprParser parser = DrlExprParserFactory.getDrlExrParser( 
context.getConfiguration().getOption(LanguageLevelOption.KEY));
         ConstraintConnectiveDescr result = parser.parse( expression );
         if ( result == null || parser.hasErrors() ) {
             for ( DroolsParserException error : parser.getErrors() ) {
diff --git a/drools-drl/drools-drl-parser-tests/pom.xml 
b/drools-drl/drools-drl-parser-tests/pom.xml
new file mode 100644
index 0000000000..7e0c4d5f88
--- /dev/null
+++ b/drools-drl/drools-drl-parser-tests/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.drools</groupId>
+        <artifactId>drools-drl</artifactId>
+        <version>999-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.drools</groupId>
+    <artifactId>drools-drl-parser-tests</artifactId>
+
+    <name>Drools :: DRL :: Parser :: Tests</name>
+
+    <properties>
+        <java.module.name>org.drools.drl.parser.tests</java.module.name>
+    </properties>
+
+    <dependencies>
+        <!-- Tests -->
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-drl-parser</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-compiler</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-mvel</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLExprParserTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLExprParserTest.java
similarity index 98%
rename from 
drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLExprParserTest.java
rename to 
drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLExprParserTest.java
index f233439f36..1f27a9c861 100644
--- 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLExprParserTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLExprParserTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -25,6 +25,7 @@ import org.drools.drl.ast.descr.BindingDescr;
 import org.drools.drl.ast.descr.ConnectiveType;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
 import org.drools.drl.ast.descr.RelationalExprDescr;
+import org.drools.drl.parser.DrlExprParser;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -40,7 +41,7 @@ public class DRLExprParserTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        this.parser = new DrlExprParser(LanguageLevelOption.DRL6);
+        this.parser = new Drl10ExprParser(LanguageLevelOption.DRL6);
     }
 
     @AfterEach
diff --git 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLParserTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLParserTest.java
similarity index 94%
rename from 
drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLParserTest.java
rename to 
drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLParserTest.java
index 83a8b1f5d2..35c4638ebc 100644
--- 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DRLParserTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DRLParserTest.java
@@ -1,4 +1,4 @@
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.util.List;
 
@@ -13,9 +13,9 @@ import org.drools.drl.ast.descr.RuleDescr;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.drools.parser.DRLParserHelper.computeTokenIndex;
-import static org.drools.parser.DRLParserHelper.createDrlParser;
-import static org.drools.parser.DRLParserHelper.parse;
+import static org.drools.drl10.parser.DRLParserHelper.computeTokenIndex;
+import static org.drools.drl10.parser.DRLParserHelper.createDrlParser;
+import static org.drools.drl10.parser.DRLParserHelper.parse;
 
 class DRLParserTest {
 
diff --git 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DescrDumperTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DescrDumperTest.java
similarity index 99%
rename from 
drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DescrDumperTest.java
rename to 
drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DescrDumperTest.java
index d0a18797c1..d98ec8ec89 100644
--- 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/DescrDumperTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/DescrDumperTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -25,6 +25,7 @@ import org.drools.compiler.lang.DumperContext;
 import org.drools.drl.ast.descr.AtomicExprDescr;
 import org.drools.drl.ast.descr.BindingDescr;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
+import org.drools.drl.parser.DrlExprParser;
 import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
 import org.drools.mvel.evaluators.SetEvaluatorsDefinition;
 import org.junit.jupiter.api.BeforeEach;
@@ -357,7 +358,7 @@ public class DescrDumperTest {
     }
 
     public ConstraintConnectiveDescr parse( final String constraint ) {
-        DrlExprParser parser = new DrlExprParser(LanguageLevelOption.DRL6);
+        DrlExprParser parser = new Drl10ExprParser(LanguageLevelOption.DRL6);
         ConstraintConnectiveDescr result = parser.parse( constraint );
         
assertThat(parser.hasErrors()).as(parser.getErrors().toString()).isFalse();
 
diff --git 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/MiscDRLParserTest.java
similarity index 99%
rename from 
drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
rename to 
drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/MiscDRLParserTest.java
index 229524867d..6353be53ac 100644
--- 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl10/parser/MiscDRLParserTest.java
@@ -1,4 +1,4 @@
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -39,6 +39,7 @@ import org.drools.drl.ast.descr.RuleDescr;
 import org.drools.drl.ast.descr.TypeDeclarationDescr;
 import org.drools.drl.ast.descr.TypeFieldDescr;
 import org.drools.drl.ast.descr.WindowDeclarationDescr;
+import org.drools.drl10.parser.DRLParserWrapper;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/drools-drl/drools-drl10-parser/src/test/resources/logback-test.xml 
b/drools-drl/drools-drl-parser-tests/src/test/resources/logback-test.xml
similarity index 100%
rename from drools-drl/drools-drl10-parser/src/test/resources/logback-test.xml
rename to drools-drl/drools-drl-parser-tests/src/test/resources/logback-test.xml
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_Extends.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_Extends.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_Extends.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_Extends.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_Metadata.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_Metadata.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_Metadata.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_Metadata.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_nested_LHS.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_nested_LHS.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/Rule_with_nested_LHS.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/Rule_with_nested_LHS.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateExternalFunction.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateExternalFunction.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateExternalFunction.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateExternalFunction.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateMultipleFunctions.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateMultipleFunctions.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateMultipleFunctions.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateMultipleFunctions.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateMultipleFunctionsConstraint.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateMultipleFunctionsConstraint.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateMultipleFunctionsConstraint.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateMultipleFunctionsConstraint.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateReverse.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateReverse.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulateReverse.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulateReverse.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_multi_pattern.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_multi_pattern.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_multi_pattern.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_multi_pattern.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_with_bindings.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_with_bindings.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_with_bindings.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_with_bindings.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_with_nested_from.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_with_nested_from.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/accumulate_with_nested_from.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/accumulate_with_nested_from.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/almost_empty_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/almost_empty_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/almost_empty_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/almost_empty_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/and_or_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/and_or_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/and_or_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/and_or_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/autofocus.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/autofocus.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/autofocus.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/autofocus.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/basic_binding.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/basic_binding.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/basic_binding.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/basic_binding.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/bindings.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/bindings.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/bindings.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/bindings.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/brackets_precedence.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/brackets_precedence.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/brackets_precedence.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/brackets_precedence.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/collect.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/collect.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/collect.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/collect.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/collect_with_nested_from.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/collect_with_nested_from.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/collect_with_nested_from.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/collect_with_nested_from.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/comment.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/comment.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/comment.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/comment.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/complex.dsl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/complex.dsl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/complex.dsl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/complex.dsl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/declaration-in-consequence.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/declaration-in-consequence.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/declaration-in-consequence.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/declaration-in-consequence.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/declare_type_with_fields.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/declare_type_with_fields.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/declare_type_with_fields.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/declare_type_with_fields.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/empty_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/empty_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/empty_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/empty_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/enumeration.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/enumeration.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/enumeration.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/enumeration.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eol_funny_business.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eol_funny_business.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eol_funny_business.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eol_funny_business.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/escaped-string.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/escaped-string.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/escaped-string.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/escaped-string.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_multiple.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_multiple.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_multiple.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_multiple.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_parsing.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_parsing.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_parsing.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_parsing.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_with_newline.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_with_newline.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/eval_with_newline.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/eval_with_newline.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_multiple_constraints.dslr
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_multiple_constraints.dslr
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_multiple_constraints.dslr
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_multiple_constraints.dslr
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_multiple_constraints_flush.dslr
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_multiple_constraints_flush.dslr
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_multiple_constraints_flush.dslr
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_multiple_constraints_flush.dslr
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_spread_lines.dslr
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_spread_lines.dslr
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/expander_spread_lines.dslr
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/expander_spread_lines.dslr
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/extra_lhs_newline.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/extra_lhs_newline.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/extra_lhs_newline.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/extra_lhs_newline.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/forall.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/forall.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/forall.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/forall.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/forallwithfrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/forallwithfrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/forallwithfrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/forallwithfrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/from.drl 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/from.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/from.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/from.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/function_arrays.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/function_arrays.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/function_arrays.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/function_arrays.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/functions.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/functions.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/functions.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/functions.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/globals.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/globals.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/globals.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/globals.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/in_operator_test.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/in_operator_test.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/in_operator_test.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/in_operator_test.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/lhs_semicolon_delim.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/lhs_semicolon_delim.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/lhs_semicolon_delim.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/lhs_semicolon_delim.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/literal_bool_and_negative.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/literal_bool_and_negative.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/literal_bool_and_negative.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/literal_bool_and_negative.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/multiple_constraints.dsl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/multiple_constraints.dsl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/multiple_constraints.dsl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/multiple_constraints.dsl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/multiple_rules.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/multiple_rules.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/multiple_rules.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/multiple_rules.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/nested_conditional_elements.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/nested_conditional_elements.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/nested_conditional_elements.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/nested_conditional_elements.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/no-loop.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/no-loop.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/no-loop.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/no-loop.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/not_exist_with_brackets.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/not_exist_with_brackets.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/not_exist_with_brackets.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/not_exist_with_brackets.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/not_with_constraint.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/not_with_constraint.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/not_with_constraint.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/not_with_constraint.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/notin_operator_test.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/notin_operator_test.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/notin_operator_test.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/notin_operator_test.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding_complex.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding_complex.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding_complex.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding_complex.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding_with_brackets.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding_with_brackets.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_binding_with_brackets.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_binding_with_brackets.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_ce.drl 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_ce.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_ce.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_ce.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_nesting.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_nesting.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/or_nesting.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/or_nesting.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/package_attributes.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/package_attributes.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/package_attributes.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/package_attributes.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/pluggable_operators.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/pluggable_operators.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/pluggable_operators.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/pluggable_operators.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/qualified_classname.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/qualified_classname.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/qualified_classname.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/qualified_classname.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/query_and_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/query_and_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/query_and_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/query_and_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/quoted_string_name_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/quoted_string_name_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/quoted_string_name_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/quoted_string_name_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/restrictions_test.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/restrictions_test.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/restrictions_test.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/restrictions_test.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes2.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes2.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes2.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes2.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes_alt.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes_alt.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_attributes_alt.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_attributes_alt.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_calendars_attribute.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_calendars_attribute.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_calendars_attribute.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_calendars_attribute.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_calendars_attribute2.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_calendars_attribute2.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_calendars_attribute2.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_calendars_attribute2.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_duration_expression.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_duration_expression.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_duration_expression.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_duration_expression.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_enabled_expression.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_enabled_expression.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_enabled_expression.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_enabled_expression.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_names_number_prefix.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_names_number_prefix.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_names_number_prefix.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_names_number_prefix.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_not.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_not.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/rule_not.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/rule_not.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/ruleflowgroup.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/ruleflowgroup.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/ruleflowgroup.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/ruleflowgroup.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/semicolon.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/semicolon.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/semicolon.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/semicolon.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/simple_query.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/simple_query.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/simple_query.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/simple_query.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/simple_rule.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/simple_rule.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/simple_rule.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/simple_rule.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/soundslike_operator.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/soundslike_operator.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/soundslike_operator.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/soundslike_operator.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/statement_ordering_1.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/statement_ordering_1.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/statement_ordering_1.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/statement_ordering_1.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/ternary_expression.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/ternary_expression.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/ternary_expression.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/ternary_expression.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_CommentLineNumbersInConsequence.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_CommentLineNumbersInConsequence.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_CommentLineNumbersInConsequence.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_CommentLineNumbersInConsequence.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_ComplexChainedCallWithFrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_ComplexChainedCallWithFrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_ComplexChainedCallWithFrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_ComplexChainedCallWithFrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_EmptyPattern.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_EmptyPattern.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_EmptyPattern.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_EmptyPattern.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_EndPosition.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_EndPosition.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_EndPosition.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_EndPosition.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_FunctionImport.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_FunctionImport.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_FunctionImport.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_FunctionImport.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleAccessorArgWithFrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleAccessorArgWithFrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleAccessorArgWithFrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleAccessorArgWithFrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleAccessorWithFrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleAccessorWithFrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleAccessorWithFrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleAccessorWithFrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleFunctionCallWithFrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleFunctionCallWithFrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleFunctionCallWithFrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleFunctionCallWithFrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleMethodCallWithFrom.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleMethodCallWithFrom.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/test_SimpleMethodCallWithFrom.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/test_SimpleMethodCallWithFrom.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/type_with_meta.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/type_with_meta.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/type_with_meta.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/type_with_meta.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_eval.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_eval.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_eval.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_eval.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_predicate.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_predicate.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_predicate.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_predicate.drl
diff --git 
a/drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_retval.drl
 
b/drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_retval.drl
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/test/resources/org/drools/parser/with_retval.drl
rename to 
drools-drl/drools-drl-parser-tests/src/test/resources/org/drools/drl10/parser/with_retval.drl
diff --git a/drools-drl/drools-drl-parser/pom.xml 
b/drools-drl/drools-drl-parser/pom.xml
index 545625e5ad..0eeb787100 100644
--- a/drools-drl/drools-drl-parser/pom.xml
+++ b/drools-drl/drools-drl-parser/pom.xml
@@ -66,7 +66,32 @@
             <groupId>org.antlr</groupId>
             <artifactId>antlr-runtime</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4-runtime</artifactId>
+        </dependency>
 
+        <!-- Tests -->
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -101,6 +126,26 @@
             </plugins>
         </pluginManagement>
 
+        <plugins>
+            <!-- Consider if we will generate codes with a specific profile 
and copy them to src/main -->
+            <plugin>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr4-maven-plugin</artifactId>
+                <version>${version.org.antlr4}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>antlr4</goal>
+                        </goals>
+                        <configuration>
+                            <visitor>true</visitor>
+                            <listener>false</listener>
+                            
<libDirectory>src/main/antlr4/org/drools/drl10/parser/</libDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
     </build>
 
     <profiles>
diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRL6Expressions.g4
 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRL6Expressions.g4
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRL6Expressions.g4
rename to 
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRL6Expressions.g4
diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRLLexer.g4
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4
rename to 
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRLLexer.g4
diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRLParser.g4
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4
rename to 
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/DRLParser.g4
diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/JavaLexer.g4 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/JavaLexer.g4
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/JavaLexer.g4
rename to 
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/JavaLexer.g4
diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/JavaParser.g4
 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/JavaParser.g4
similarity index 100%
rename from 
drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/JavaParser.g4
rename to 
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl10/parser/JavaParser.g4
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DRLFactory.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DRLFactory.java
index 15bf0addf0..71b23c2fdd 100644
--- 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DRLFactory.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DRLFactory.java
@@ -25,6 +25,7 @@ import org.antlr.runtime.CharStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.RecognizerSharedState;
 import org.antlr.runtime.TokenStream;
+import org.drools.drl.parser.lang.DRL10Lexer;
 import org.drools.drl.parser.lang.DRL5Expressions;
 import org.drools.drl.parser.lang.DRL5Lexer;
 import org.drools.drl.parser.lang.DRL5Parser;
@@ -113,6 +114,8 @@ public class DRLFactory {
             case DRL6:
             case DRL6_STRICT:
                 return new DRL6Lexer(input);
+            case DRL10:
+                return new DRL10Lexer();
         }
         throw new RuntimeException("Unknown language level");
     }
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/Drl6ExprParser.java
similarity index 96%
copy from 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
copy to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/Drl6ExprParser.java
index 60c61ac248..9fb0186afb 100644
--- 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/Drl6ExprParser.java
@@ -25,24 +25,24 @@ import org.antlr.runtime.ANTLRStringStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.RecognitionException;
 import org.antlr.runtime.RecognizerSharedState;
+import org.drools.drl.ast.descr.BaseDescr;
+import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
 import org.drools.drl.parser.lang.DRLExpressions;
 import org.drools.drl.parser.lang.DRLLexer;
 import org.drools.drl.parser.lang.ParserHelper;
-import org.drools.drl.ast.descr.BaseDescr;
-import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
 import org.kie.internal.builder.conf.LanguageLevelOption;
 
 /**
  * This is a helper class that provides helper methods to parse expressions
  * using both the DRLExpressions parser and the DRLExprTree parser.
  */
-public class DrlExprParser {
+public class Drl6ExprParser implements DrlExprParser {
 
     private ParserHelper helper = null;
 
     private final LanguageLevelOption languageLevel;
 
-    public DrlExprParser(LanguageLevelOption languageLevel) {
+    public Drl6ExprParser(LanguageLevelOption languageLevel) {
         this.languageLevel = languageLevel;
     }
 
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
index 60c61ac248..0702a1d146 100644
--- 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParser.java
@@ -18,73 +18,29 @@
  */
 package org.drools.drl.parser;
 
-import java.util.Collections;
 import java.util.List;
 
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.RecognizerSharedState;
-import org.drools.drl.parser.lang.DRLExpressions;
-import org.drools.drl.parser.lang.DRLLexer;
-import org.drools.drl.parser.lang.ParserHelper;
-import org.drools.drl.ast.descr.BaseDescr;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
-import org.kie.internal.builder.conf.LanguageLevelOption;
 
 /**
  * This is a helper class that provides helper methods to parse expressions
  * using both the DRLExpressions parser and the DRLExprTree parser.
  */
-public class DrlExprParser {
-
-    private ParserHelper helper = null;
-
-    private final LanguageLevelOption languageLevel;
-
-    public DrlExprParser(LanguageLevelOption languageLevel) {
-        this.languageLevel = languageLevel;
-    }
+public interface DrlExprParser {
 
     /** Parse an expression from text */
-    public ConstraintConnectiveDescr parse( final String text ) {
-        ConstraintConnectiveDescr constraint = null;
-        try {
-            DRLLexer lexer = DRLFactory.getDRLLexer(new 
ANTLRStringStream(text), languageLevel);
-            CommonTokenStream input = new CommonTokenStream( lexer );
-            RecognizerSharedState state = new RecognizerSharedState();
-            helper = new ParserHelper( input, state, languageLevel );
-            DRLExpressions parser = DRLFactory.getDRLExpressions(input, state, 
helper, languageLevel);
-            parser.setBuildDescr( true );
-            parser.setLeftMostExpr( null ); // setting initial value just in 
case
-            BaseDescr expr = parser.conditionalOrExpression();
-            if ( expr != null && !parser.hasErrors() ) {
-                constraint = ConstraintConnectiveDescr.newAnd();
-                constraint.addOrMerge( expr );
-            }
-        } catch ( RecognitionException e ) {
-            helper.reportError( e );
-        }
-        return constraint;
-    }
-    
-    public String getLeftMostExpr() {
-        return helper != null ? helper.getLeftMostExpr() : null;
-    }
+    ConstraintConnectiveDescr parse( final String text );
+
+    String getLeftMostExpr();
 
     /**
      * @return true if there were parser errors.
      */
-    public boolean hasErrors() {
-        return helper != null && helper.hasErrors();
-    }
+    boolean hasErrors();
 
     /**
      * @return a list of errors found while parsing. 
      */
     @SuppressWarnings("unchecked")
-    public List<DroolsParserException> getErrors() {
-        return helper != null ? helper.getErrors() : Collections.EMPTY_LIST;
-    }
-
+    List<DroolsParserException> getErrors();
 }
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParserFactory.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParserFactory.java
new file mode 100644
index 0000000000..9ee116faf3
--- /dev/null
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlExprParserFactory.java
@@ -0,0 +1,20 @@
+package org.drools.drl.parser;
+
+import org.drools.drl10.parser.Drl10ExprParser;
+import org.kie.internal.builder.conf.LanguageLevelOption;
+
+public class DrlExprParserFactory {
+
+    public static DrlExprParser getDrlExrParser(LanguageLevelOption 
languageLevel) {
+        switch (languageLevel) {
+            case DRL5:
+            case DRL6:
+            case DRL6_STRICT:
+                return new Drl6ExprParser(languageLevel);
+            case DRL10:
+                return new Drl10ExprParser(languageLevel);
+            default:
+                throw new RuntimeException("Unsupported language level: " + 
languageLevel);
+        }
+    }
+}
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
index 7b852c8dce..d6ee0c042b 100644
--- 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
@@ -18,6 +18,8 @@
  */
 package org.drools.drl.parser;
 
+import org.drools.drl10.parser.DRLParserError;
+import org.drools.drl10.parser.DRLParserWrapper;
 import org.drools.io.InternalResource;
 import org.drools.drl.ast.descr.PackageDescr;
 import org.drools.drl.parser.lang.DRLLexer;
@@ -164,10 +166,35 @@ public class DrlParser {
                               final InputStream is) throws 
DroolsParserException, IOException {
         this.resource = resource;
         String encoding = resource instanceof InternalResource ? 
((InternalResource) resource).getEncoding() : null;
-
-        lexer = DRLFactory.buildLexer(is, encoding, languageLevel);
-        DRLParser parser = DRLFactory.buildParser(lexer, languageLevel);
-        return compile(isEditor, parser);
+        System.out.println("### parse : languageLevel = " + languageLevel);
+        if (languageLevel == LanguageLevelOption.DRL10) {
+            // new parser based on antlr4
+            try {
+                DRLParserWrapper parser = new DRLParserWrapper();
+                PackageDescr packageDescr = parser.parse(is);
+                for (final DRLParserError drlParserError : parser.getErrors()) 
{
+                    final ParserError err = new ParserError(resource,
+                                                            
drlParserError.getMessage(),
+                                                            
drlParserError.getLineNumber(),
+                                                            
drlParserError.getColumn());
+                    this.results.add(err);
+                }
+                return !this.hasErrors() ? packageDescr : null;
+            } catch (Exception e) {
+                LOG.error("Exception", e);
+                final ParserError err = new ParserError(resource,
+                                                        GENERIC_ERROR_MESSAGE 
+ e.toString() + "\n" + Arrays.toString(e.getStackTrace()),
+                                                        -1,
+                                                        0);
+                this.results.add(err);
+                throw new DroolsParserException(GENERIC_ERROR_MESSAGE + 
e.getMessage(), e);
+            }
+        } else {
+            // old parsers based on antlr3
+            lexer = DRLFactory.buildLexer(is, encoding, languageLevel);
+            DRLParser parser = DRLFactory.buildParser(lexer, languageLevel);
+            return compile(isEditor, parser);
+        }
     }
 
     /**
diff --git 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/lang/DRL10Lexer.java
similarity index 50%
copy from 
kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
copy to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/lang/DRL10Lexer.java
index ca8b96ee91..ae8d3d6d4d 100644
--- 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/lang/DRL10Lexer.java
@@ -16,39 +16,31 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.internal.builder.conf;
+package org.drools.drl.parser.lang;
 
-import org.kie.api.conf.OptionKey;
+import java.util.List;
+
+import org.antlr.runtime.Token;
+import org.drools.drl.parser.DroolsParserException;
 
 /**
- * A class for the language level configuration.
+ * No implementation because everything is handled by DRL10Parser
  */
-public enum LanguageLevelOption implements SingleValueRuleBuilderOption {
-
-    DRL5(false), DRL6(false), DRL6_STRICT(true);
-
-    private final boolean useJavaAnnotations;
-
-    /**
-     * The property name for the language level
-     */
-    public static final String PROPERTY_NAME = "drools.lang.level";
-
-    public static OptionKey<LanguageLevelOption> KEY = new OptionKey<>(TYPE, 
PROPERTY_NAME);
+public class DRL10Lexer implements DRLLexer {
 
-    LanguageLevelOption(boolean useJavaAnnotations) {
-        this.useJavaAnnotations = useJavaAnnotations;
+    @Override
+    public String getSourceName() {
+        return null;
     }
 
-    public boolean useJavaAnnotations() {
-        return useJavaAnnotations;
+    @Override
+    public Token nextToken() {
+        return null;
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public String getPropertyName() {
-        return PROPERTY_NAME;
+    @Override
+    public List<DroolsParserException> getErrors() {
+        return null;
     }
 
-}
+}
\ No newline at end of file
diff --git 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLErrorListener.java
similarity index 50%
copy from 
kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
copy to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLErrorListener.java
index ca8b96ee91..0e5b5985b6 100644
--- 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLErrorListener.java
@@ -16,39 +16,34 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.internal.builder.conf;
+package org.drools.drl10.parser;
 
-import org.kie.api.conf.OptionKey;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.antlr.v4.runtime.BaseErrorListener;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.Recognizer;
 
 /**
- * A class for the language level configuration.
+ * Collect errors while parsing DRL
  */
-public enum LanguageLevelOption implements SingleValueRuleBuilderOption {
-
-    DRL5(false), DRL6(false), DRL6_STRICT(true);
-
-    private final boolean useJavaAnnotations;
+public class DRLErrorListener extends BaseErrorListener {
 
-    /**
-     * The property name for the language level
-     */
-    public static final String PROPERTY_NAME = "drools.lang.level";
+    private final List<DRLParserError> errors = new ArrayList<>();
 
-    public static OptionKey<LanguageLevelOption> KEY = new OptionKey<>(TYPE, 
PROPERTY_NAME);
-
-    LanguageLevelOption(boolean useJavaAnnotations) {
-        this.useJavaAnnotations = useJavaAnnotations;
+    public List<DRLParserError> getErrors() {
+        return errors;
     }
 
-    public boolean useJavaAnnotations() {
-        return useJavaAnnotations;
-    }
+    @Override
+    public void syntaxError(Recognizer<?, ?> recognizer,
+                            Object offendingSymbol,
+                            int line,
+                            int charPositionInLine,
+                            String msg,
+                            RecognitionException e) {
 
-    /**
-     * {@inheritDoc}
-     */
-    public String getPropertyName() {
-        return PROPERTY_NAME;
+        errors.add(new DRLParserError(line, charPositionInLine, msg));
     }
-
 }
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLExpressions.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLExpressions.java
similarity index 98%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLExpressions.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLExpressions.java
index 0109e23377..e7aa8102c4 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLExpressions.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLExpressions.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.util.LinkedList;
 import java.util.List;
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserError.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserError.java
similarity index 58%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserError.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserError.java
index ec3e41747d..4b893e11e4 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserError.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserError.java
@@ -1,4 +1,22 @@
-package org.drools.parser;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
 
 /**
  * Error information while parsing DRL
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserException.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserException.java
new file mode 100644
index 0000000000..833d1aa8df
--- /dev/null
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserException.java
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
+
+public class DRLParserException extends RuntimeException {
+
+    public DRLParserException() {
+        super();
+    }
+
+    public DRLParserException(String message) {
+        super(message);
+    }
+}
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserHelper.java
similarity index 82%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserHelper.java
index bd95c3033c..f4436bf44b 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserHelper.java
@@ -1,4 +1,22 @@
-package org.drools.parser;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserWrapper.java
similarity index 66%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserWrapper.java
index 88ae36c12f..914255e137 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLParserWrapper.java
@@ -1,4 +1,22 @@
-package org.drools.parser;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
 
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -9,7 +27,7 @@ import org.drools.drl.ast.descr.PackageDescr;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static 
org.drools.parser.DRLParserHelper.compilationUnitContext2PackageDescr;
+import static 
org.drools.drl10.parser.DRLParserHelper.compilationUnitContext2PackageDescr;
 
 /**
  * Wrapper for DRLParser. Somewhat duplicated from DRLParserHelper, but this 
class is instantiated and holds errors.
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLVisitorImpl.java
similarity index 96%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLVisitorImpl.java
index 3f920cc13a..a977fee988 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DRLVisitorImpl.java
@@ -1,8 +1,25 @@
-package org.drools.parser;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 import org.antlr.v4.runtime.ParserRuleContext;
@@ -41,11 +58,11 @@ import org.drools.drl.ast.descr.TypeFieldDescr;
 import org.drools.drl.ast.descr.UnitDescr;
 import org.drools.drl.ast.descr.WindowDeclarationDescr;
 
-import static org.drools.parser.DRLParserHelper.getTextWithoutErrorNode;
-import static org.drools.parser.ParserStringUtils.getTextPreservingWhitespace;
-import static 
org.drools.parser.ParserStringUtils.getTokenTextPreservingWhitespace;
-import static org.drools.parser.ParserStringUtils.safeStripStringDelimiters;
-import static org.drools.parser.ParserStringUtils.trimThen;
+import static org.drools.drl10.parser.DRLParserHelper.getTextWithoutErrorNode;
+import static 
org.drools.drl10.parser.ParserStringUtils.getTextPreservingWhitespace;
+import static 
org.drools.drl10.parser.ParserStringUtils.getTokenTextPreservingWhitespace;
+import static 
org.drools.drl10.parser.ParserStringUtils.safeStripStringDelimiters;
+import static org.drools.drl10.parser.ParserStringUtils.trimThen;
 import static org.drools.util.StringUtils.unescapeJava;
 
 /**
diff --git a/drools-drl/drools-drl10-parser/Developer_Notes.md 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/Developer_Notes.md
similarity index 100%
rename from drools-drl/drools-drl10-parser/Developer_Notes.md
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/Developer_Notes.md
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DrlExprParser.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/Drl10ExprParser.java
similarity index 93%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DrlExprParser.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/Drl10ExprParser.java
index d9c8d93bce..19ec473536 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DrlExprParser.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/Drl10ExprParser.java
@@ -16,16 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.util.Collections;
 import java.util.List;
 
-import org.antlr.v4.runtime.RecognitionException;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.RecognitionException;
 import org.drools.drl.ast.descr.BaseDescr;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
+import org.drools.drl.parser.DrlExprParser;
 import org.drools.drl.parser.DroolsParserException;
 import org.kie.internal.builder.conf.LanguageLevelOption;
 
@@ -33,13 +34,13 @@ import org.kie.internal.builder.conf.LanguageLevelOption;
  * This is a helper class that provides helper methods to parse expressions
  * using both the DRLExpressions parser and the DRLExprTree parser.
  */
-public class DrlExprParser {
+public class Drl10ExprParser implements DrlExprParser {
 
     private ParserHelper helper = null;
 
     private final LanguageLevelOption languageLevel;
 
-    public DrlExprParser(LanguageLevelOption languageLevel) {
+    public Drl10ExprParser(LanguageLevelOption languageLevel) {
         this.languageLevel = languageLevel;
     }
 
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DroolsParserExceptionFactory.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DroolsParserExceptionFactory.java
similarity index 99%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DroolsParserExceptionFactory.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DroolsParserExceptionFactory.java
index e184dfe9e3..abf586c55d 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DroolsParserExceptionFactory.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/DroolsParserExceptionFactory.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserHelper.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserHelper.java
similarity index 99%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserHelper.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserHelper.java
index 66d6bea4d6..f729115b7c 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserHelper.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserHelper.java
@@ -29,7 +29,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.drools.parser;
+package org.drools.drl10.parser;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -39,8 +39,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import org.antlr.v4.runtime.CommonToken;
 import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.v4.runtime.CommonToken;
 import org.antlr.v4.runtime.RecognitionException;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.TokenStream;
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserStringUtils.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserStringUtils.java
similarity index 70%
rename from 
drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserStringUtils.java
rename to 
drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserStringUtils.java
index a294bf2a92..ef22da2dce 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/ParserStringUtils.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl10/parser/ParserStringUtils.java
@@ -1,4 +1,22 @@
-package org.drools.parser;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.drl10.parser;
 
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.TokenStream;
diff --git a/drools-drl/drools-drl10-parser/.gitignore 
b/drools-drl/drools-drl10-parser/.gitignore
deleted file mode 100644
index 6fc57b48ec..0000000000
--- a/drools-drl/drools-drl10-parser/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-target/
-gen/
-local/
-
-# Eclipse, Netbeans and IntelliJ files
-.*
-!.gitignore
-!.github
-nbproject
-*.ipr
-*.iws
-*.iml
-
-# generated files
-dependency-reduced-pom.xml
-
-#CI
-!.ci
diff --git a/drools-drl/drools-drl10-parser/pom.xml 
b/drools-drl/drools-drl10-parser/pom.xml
deleted file mode 100644
index 57ed8f85ca..0000000000
--- a/drools-drl/drools-drl10-parser/pom.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.drools</groupId>
-    <artifactId>drools-lsp</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>drools-parser</artifactId>
-
-  <name>Drools :: Parser</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-drl-ast</artifactId>
-      <version>${version.org.drools}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-util</artifactId>
-      <version>${version.org.drools}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-drl-parser</artifactId>
-      <version>${version.org.drools}</version>
-    </dependency>
-
-    <!-- External dependencies -->
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr4-runtime</artifactId>
-      <version>${version.org.antlr4}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr4</artifactId>
-      <version>${version.org.antlr4}</version>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.glassfish</groupId>
-          <artifactId>javax.json</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!-- Tests -->
-    <dependency>
-      <groupId>org.assertj</groupId>
-      <artifactId>assertj-core</artifactId>
-      <version>${version.org.assertj}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <version>${version.org.junit}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <version>${version.org.junit}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <version>${version.ch.qos.logback}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-compiler</artifactId>
-      <version>${version.org.drools}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-mvel</artifactId>
-      <version>${version.org.drools}</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr4-maven-plugin</artifactId>
-        <version>${version.org.antlr4}</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>antlr4</goal>
-            </goals>
-            <configuration>
-              <visitor>true</visitor>
-              <listener>false</listener>
-              <libDirectory>src/main/antlr4/org/drools/parser/</libDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
-
-</project>
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLErrorListener.java
 
b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLErrorListener.java
deleted file mode 100644
index f7c6504df4..0000000000
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLErrorListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.drools.parser;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.antlr.v4.runtime.BaseErrorListener;
-import org.antlr.v4.runtime.RecognitionException;
-import org.antlr.v4.runtime.Recognizer;
-
-/**
- * Collect errors while parsing DRL
- */
-public class DRLErrorListener extends BaseErrorListener {
-
-    private final List<DRLParserError> errors = new ArrayList<>();
-
-    public List<DRLParserError> getErrors() {
-        return errors;
-    }
-
-    @Override
-    public void syntaxError(Recognizer<?, ?> recognizer,
-                            Object offendingSymbol,
-                            int line,
-                            int charPositionInLine,
-                            String msg,
-                            RecognitionException e) {
-
-        errors.add(new DRLParserError(line, charPositionInLine, msg));
-    }
-}
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserException.java
 
b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserException.java
deleted file mode 100644
index 6bc5812a78..0000000000
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.drools.parser;
-
-public class DRLParserException extends RuntimeException {
-
-    public DRLParserException() {
-        super();
-    }
-
-    public DRLParserException(String message) {
-        super(message);
-    }
-}
diff --git a/drools-drl/pom.xml b/drools-drl/pom.xml
index 91f12f3d75..2fb61bb300 100644
--- a/drools-drl/pom.xml
+++ b/drools-drl/pom.xml
@@ -39,6 +39,7 @@
     <module>drools-drl-ast</module>
     <module>drools-drl-extensions</module>
     <module>drools-drl-parser</module>
+    <module>drools-drl-parser-tests</module>
   </modules>
 
 
diff --git a/drools-test-coverage/test-compiler-integration/pom.xml 
b/drools-test-coverage/test-compiler-integration/pom.xml
index 6ccf1cbdc6..93df94a6d5 100644
--- a/drools-test-coverage/test-compiler-integration/pom.xml
+++ b/drools-test-coverage/test-compiler-integration/pom.xml
@@ -178,6 +178,27 @@
         <excludedGroups/>
       </properties>
     </profile>
+<!--    <profile>-->
+<!--      <id>DRL10</id>-->
+<!--      <activation>-->
+<!--        <property>-->
+<!--          <name>DRL10</name>-->
+<!--        </property>-->
+<!--      </activation>-->
+<!--      <build>-->
+<!--        <plugins>-->
+<!--          <plugin>-->
+<!--            <groupId>org.apache.maven.plugins</groupId>-->
+<!--            <artifactId>maven-surefire-plugin</artifactId>-->
+<!--            <configuration>-->
+<!--              <systemPropertyVariables>-->
+<!--                <drools.lang.level>DRL10</drools.lang.level>-->
+<!--              </systemPropertyVariables>-->
+<!--            </configuration>-->
+<!--          </plugin>-->
+<!--        </plugins>-->
+<!--      </build>-->
+<!--    </profile>-->
   </profiles>
 
 </project>
diff --git 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DRLExprParserTest.java
 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DRLExprParserTest.java
index 08eeb33eda..c7357aad4d 100644
--- 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DRLExprParserTest.java
+++ 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DRLExprParserTest.java
@@ -25,6 +25,7 @@ import org.drools.drl.ast.descr.ConnectiveType;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
 import org.drools.drl.ast.descr.RelationalExprDescr;
 import org.drools.drl.parser.DrlExprParser;
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -42,7 +43,7 @@ public class DRLExprParserTest {
     @Before
     public void setUp() throws Exception {
         new EvaluatorRegistry();
-        this.parser = new DrlExprParser(LanguageLevelOption.DRL6);
+        this.parser = 
DrlExprParserFactory.getDrlExrParser(LanguageLevelOption.DRL6);
     }
 
     @After
diff --git 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
index 649b43c37f..5eb52e6283 100644
--- 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
+++ 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
@@ -24,6 +24,7 @@ import org.drools.compiler.lang.DumperContext;
 import org.drools.drl.ast.descr.AtomicExprDescr;
 import org.drools.drl.ast.descr.BindingDescr;
 import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
 import org.drools.mvel.evaluators.SetEvaluatorsDefinition;
 import org.junit.Before;
@@ -358,7 +359,7 @@ public class DescrDumperTest {
     }
 
     public ConstraintConnectiveDescr parse( final String constraint ) {
-        DrlExprParser parser = new DrlExprParser(LanguageLevelOption.DRL6);
+        DrlExprParser parser = 
DrlExprParserFactory.getDrlExrParser(LanguageLevelOption.DRL6);
         ConstraintConnectiveDescr result = parser.parse( constraint );
         
assertThat(parser.hasErrors()).as(parser.getErrors().toString()).isFalse();
 
diff --git 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/AlphaNodeTest.java
 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/AlphaNodeTest.java
index d4089c3460..71642c1728 100644
--- 
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/AlphaNodeTest.java
+++ 
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/AlphaNodeTest.java
@@ -48,6 +48,8 @@ public class AlphaNodeTest {
 
     @Test
     public void testAlpha() {
+
+
         String str =
                 "import " + Person.class.getCanonicalName() + "\n" +
                 "rule R1 when\n" +
@@ -195,7 +197,7 @@ public class AlphaNodeTest {
                 "  $p : Person(name == \"Mario\")\n" +
                 "  $s : String(this == $p.name)\n" +
                 "then\n" +
-                "  modify($p) { setName(\"Mark\") }" +
+                "  modify($p) { setName(\"Mark\") }\n" +
                 "end\n" +
                 "rule R2 when\n" +
                 "  $p : Person(name == \"Mark\")\n" +
diff --git 
a/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/visitor/ExprConstraintDescrVisitor.java
 
b/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/visitor/ExprConstraintDescrVisitor.java
index ba67c653c3..6e6ef96a82 100644
--- 
a/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/visitor/ExprConstraintDescrVisitor.java
+++ 
b/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/visitor/ExprConstraintDescrVisitor.java
@@ -20,6 +20,7 @@ package org.drools.verifier.visitor;
 
 import java.util.List;
 
+import org.drools.drl.parser.DrlExprParserFactory;
 import org.drools.drl.parser.impl.Operator;
 import org.drools.drl.parser.DrlExprParser;
 import org.drools.drl.ast.descr.AtomicExprDescr;
@@ -57,7 +58,7 @@ public class ExprConstraintDescrVisitor {
 
     public void visit(ExprConstraintDescr descr) {
 
-        DrlExprParser drlExprParser = new 
DrlExprParser(LanguageLevelOption.DRL5);
+        DrlExprParser drlExprParser = 
DrlExprParserFactory.getDrlExrParser(LanguageLevelOption.DRL5);
         ConstraintConnectiveDescr constraintConnectiveDescr = 
drlExprParser.parse(descr.getExpression());
 
         visit(constraintConnectiveDescr.getDescrs());
diff --git 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
 
b/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
index ca8b96ee91..86266a0f2d 100644
--- 
a/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
+++ 
b/kie-internal/src/main/java/org/kie/internal/builder/conf/LanguageLevelOption.java
@@ -25,7 +25,7 @@ import org.kie.api.conf.OptionKey;
  */
 public enum LanguageLevelOption implements SingleValueRuleBuilderOption {
 
-    DRL5(false), DRL6(false), DRL6_STRICT(true);
+    DRL5(false), DRL6(false), DRL6_STRICT(true), DRL10(false);
 
     private final boolean useJavaAnnotations;
 
diff --git a/pom.xml b/pom.xml
index 581c84bf95..4766589618 100644
--- a/pom.xml
+++ b/pom.xml
@@ -260,6 +260,28 @@
         </plugins>
       </build>
     </profile>
+
+    <profile>
+      <id>DRL10</id>
+      <activation>
+        <property>
+          <name>DRL10</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <systemPropertyVariables>
+                <drools.lang.level>DRL10</drools.lang.level>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 
 </project>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to