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 5c27ba78039ec68a2d348645b4fec0b9e0835459 Author: Toshiya Kobayashi <[email protected]> AuthorDate: Fri Sep 29 15:53:29 2023 +0900 [DROOLS-7294] Implement forall (#34) --- .../src/main/antlr4/org/drools/parser/DRLLexer.g4 | 1 + .../src/main/antlr4/org/drools/parser/DRLParser.g4 | 9 ++++++++- .../src/main/java/org/drools/parser/DRLVisitorImpl.java | 10 +++++++++- .../src/test/java/org/drools/parser/MiscDRLParserTest.java | 2 -- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4 b/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4 index b03d022557..0d9a61ca91 100644 --- a/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4 +++ b/drools-drl/drools-drl10-parser/src/main/antlr4/org/drools/parser/DRLLexer.g4 @@ -51,6 +51,7 @@ DRL_REVERSE : 'reverse'; DRL_RESULT : 'result'; DRL_ENTRY_POINT : 'entry-point'; DRL_EVAL : 'eval'; +DRL_FORALL : 'forall'; DRL_SALIENCE : 'salience'; DRL_ENABLED : 'enabled'; 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 aaedc2bf7e..24f4595ce8 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 @@ -68,9 +68,10 @@ lhsUnary : ( lhsExists | lhsNot | lhsEval + | lhsForall | lhsAccumulate | lhsPatternBind - ) ; + ) SEMI? ; lhsPatternBind : label? ( LPAREN lhsPattern (DRL_OR lhsPattern)* RPAREN | lhsPattern ) ; @@ -330,6 +331,12 @@ lhsNot : DRL_NOT lhsPatternBind ; */ lhsEval : DRL_EVAL LPAREN conditionalOrExpression RPAREN ; +/** + * lhsForall := FORALL LEFT_PAREN lhsPatternBind+ RIGHT_PAREN + */ + +lhsForall : DRL_FORALL LPAREN lhsPatternBind+ RPAREN ; + /** * lhsAccumulate := (ACCUMULATE|ACC) LEFT_PAREN lhsAnd (COMMA|SEMICOLON) * accumulateFunctionBinding (COMMA accumulateFunctionBinding)* 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 cd0ca10007..4a82522af1 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 @@ -19,6 +19,7 @@ import org.drools.drl.ast.descr.EntryPointDescr; import org.drools.drl.ast.descr.EvalDescr; import org.drools.drl.ast.descr.ExistsDescr; import org.drools.drl.ast.descr.ExprConstraintDescr; +import org.drools.drl.ast.descr.ForallDescr; import org.drools.drl.ast.descr.FromDescr; import org.drools.drl.ast.descr.FunctionDescr; import org.drools.drl.ast.descr.FunctionImportDescr; @@ -262,6 +263,13 @@ public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> { return patternDescr; } + @Override + public ForallDescr visitLhsForall(DRLParser.LhsForallContext ctx) { + ForallDescr forallDescr = new ForallDescr(); + visitDescrChildren(ctx).forEach(forallDescr::addDescr); + return forallDescr; + } + @Override public PatternDescr visitLhsAccumulate(DRLParser.LhsAccumulateContext ctx) { AccumulateDescr accumulateDescr = new AccumulateDescr(); @@ -398,7 +406,7 @@ public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> { @Override public BaseDescr visitLhsUnary(DRLParser.LhsUnaryContext ctx) { - return (BaseDescr) visitChildren(ctx); + return visitDescrChildren(ctx).get(0); } private void populateStartEnd(BaseDescr descr, ParserRuleContext 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 9b3ebc2744..2528dacb5e 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 @@ -2126,7 +2126,6 @@ class MiscDRLParserTest { assertThat("Cheese").isEqualTo(cheese3.getObjectType()); } - @Disabled("Priority : High | Implement forall") @Test public void parse_Forall() throws Exception { final PackageDescr pkg = parseAndGetPackageDescrFromFile( @@ -2147,7 +2146,6 @@ class MiscDRLParserTest { assertThat(cheese.getObjectType()).isEqualTo("Cheese"); } - @Disabled("Priority : High | Implement forall") @Test public void parse_ForallWithFrom() throws Exception { final PackageDescr pkg = parseAndGetPackageDescrFromFile( --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
