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]
