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 2d4dd82a78ac13adf7d646f43e2f65ec868c526a
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Mon Mar 13 16:33:40 2023 +0900

    [DROOLS-7285] Failed to parse and/or with parentheses in LHS (#15)
---
 .../drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4 | 2 +-
 .../src/main/java/org/drools/parser/DRLVisitorImpl.java                | 3 +++
 .../src/test/java/org/drools/parser/MiscDRLParserTest.java             | 1 -
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4 
b/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4
index a15d73dc7d..e1b625306c 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4
+++ 
b/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLParser.g4
@@ -39,7 +39,7 @@ ruledef : DRL_RULE name=stringId (EXTENDS stringId)? 
drlAnnotation* attributes?
 lhs : DRL_WHEN lhsExpression? ;
 lhsExpression : lhsOr+ ;
 lhsOr : LPAREN DRL_OR lhsAnd+ RPAREN | lhsAnd (DRL_OR lhsAnd)* ;
-lhsAnd : LPAREN DRL_AND lhsUnary+ RPAREN | lhsUnary (DRL_AND lhsUnary)* ;
+lhsAnd : LPAREN lhsAnd RPAREN | LPAREN DRL_AND lhsUnary+ RPAREN | lhsUnary 
(DRL_AND lhsUnary)* ;
 
 /*
 lhsUnary : ( lhsExists namedConsequence?
diff --git 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
 
b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
index 12fcc510a0..fcc05872af 100644
--- 
a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
+++ 
b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLVisitorImpl.java
@@ -301,6 +301,9 @@ public class DRLVisitorImpl extends 
DRLParserBaseVisitor<Object> {
 
     @Override
     public BaseDescr visitLhsAnd(DRLParser.LhsAndContext ctx) {
+        if (ctx.lhsAnd() != null) {
+            return visitLhsAnd(ctx.lhsAnd());
+        }
         if (!ctx.DRL_AND().isEmpty()) {
             AndDescr andDescr = new AndDescr();
             List<BaseDescr> descrList = visitDescrChildren(ctx);
diff --git 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
 
b/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
index 2dcaa0061c..9e896cd6e0 100644
--- 
a/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
+++ 
b/drools-drl/drools-drl10-parser/src/test/java/org/drools/parser/MiscDRLParserTest.java
@@ -1224,7 +1224,6 @@ class MiscDRLParserTest {
         assertThat(fld.getExpression()).isEqualTo("likes == $type");
     }
 
-    @Disabled("Priority : High | Failed to parse and/or with parentheses in 
LHS")
     @Test
     public void parse_OrNesting() throws Exception {
         final PackageDescr pkg = parseAndGetPackageDescrFromFile(


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

Reply via email to