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]

Reply via email to