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 1d4f2fd181455fd7a1d72dda149a13dd5f7a0d13 Author: Toshiya Kobayashi <[email protected]> AuthorDate: Fri Sep 22 15:45:50 2023 +0900 [DROOLS-7297] Implement import accumulate (#29) --- .../src/main/antlr4/org/drools/parser/DRLParser.g4 | 6 ++++-- .../src/main/java/org/drools/parser/DRLVisitorImpl.java | 13 ++++++++++++- .../src/test/java/org/drools/parser/MiscDRLParserTest.java | 1 - 3 files changed, 16 insertions(+), 4 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 791ad29258..0daeb201ae 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 @@ -28,7 +28,9 @@ packagedef : PACKAGE name=drlQualifiedName SEMI? ; unitdef : DRL_UNIT name=drlQualifiedName SEMI? ; -importdef : IMPORT (DRL_FUNCTION|STATIC)? drlQualifiedName (DOT MUL)? SEMI? ; +importdef : IMPORT (DRL_FUNCTION|STATIC)? drlQualifiedName (DOT MUL)? SEMI? #importStandardDef + | IMPORT DRL_ACCUMULATE drlQualifiedName IDENTIFIER SEMI? #importAccumulateDef + ; globaldef : DRL_GLOBAL type drlIdentifier SEMI? ; @@ -47,7 +49,7 @@ lhsExpression : LPAREN lhsExpression RPAREN #lhsExpressionEnclosed ; // and is accepted for accumulate -lhsAndForAccumulate : lhsUnary (DRL_AND lhsUnary)+ +lhsAndForAccumulate : lhsUnary (DRL_AND lhsUnary)* | LPAREN DRL_AND lhsUnary+ RPAREN ; 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 7f4c0528e6..ff4a0f594a 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 @@ -10,6 +10,7 @@ import org.antlr.v4.runtime.TokenStream; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.RuleNode; import org.drools.drl.ast.descr.AccumulateDescr; +import org.drools.drl.ast.descr.AccumulateImportDescr; import org.drools.drl.ast.descr.AndDescr; import org.drools.drl.ast.descr.AnnotationDescr; import org.drools.drl.ast.descr.AttributeDescr; @@ -65,6 +66,8 @@ public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> { packageDescr.addGlobal((GlobalDescr) descr); } else if (descr instanceof FunctionImportDescr) { packageDescr.addFunctionImport((FunctionImportDescr) descr); + } else if (descr instanceof AccumulateImportDescr) { + packageDescr.addAccumulateImport((AccumulateImportDescr) descr); } else if (descr instanceof ImportDescr) { packageDescr.addImport((ImportDescr) descr); } else if (descr instanceof FunctionDescr) { @@ -96,7 +99,7 @@ public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> { } @Override - public ImportDescr visitImportdef(DRLParser.ImportdefContext ctx) { + public ImportDescr visitImportStandardDef(DRLParser.ImportStandardDefContext ctx) { String target = ctx.drlQualifiedName().getText() + (ctx.MUL() != null ? ".*" : ""); if (ctx.DRL_FUNCTION() != null || ctx.STATIC() != null) { FunctionImportDescr functionImportDescr = new FunctionImportDescr(); @@ -111,6 +114,14 @@ public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> { } } + @Override + public AccumulateImportDescr visitImportAccumulateDef(DRLParser.ImportAccumulateDefContext ctx) { + AccumulateImportDescr accumulateImportDescr = new AccumulateImportDescr(); + accumulateImportDescr.setTarget(ctx.drlQualifiedName().getText()); + accumulateImportDescr.setFunctionName(ctx.IDENTIFIER().getText()); + return accumulateImportDescr; + } + @Override public FunctionDescr visitFunctiondef(DRLParser.FunctiondefContext ctx) { FunctionDescr functionDescr = new FunctionDescr(); 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 2bd999face..7b4074b16e 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 @@ -2539,7 +2539,6 @@ class MiscDRLParserTest { assertThat(pattern.getObjectType()).isEqualTo("Cheese"); } - @Disabled("Priority : High | Implement import accumulate") @Test public void parse_ImportAccumulate() throws Exception { String drl = "package org.drools.mvel.compiler\n" + --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
