This is an automated email from the ASF dual-hosted git repository.

tkobayas pushed a commit to branch dev-new-parser
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git


The following commit(s) were added to refs/heads/dev-new-parser by this push:
     new 6300a63b62 Fix window reference (#5802)
6300a63b62 is described below

commit 6300a63b627ac838b2342741d6906104b303d416
Author: Jiří Locker <[email protected]>
AuthorDate: Mon Mar 25 12:12:24 2024 +0100

    Fix window reference (#5802)
---
 .../test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java   | 1 -
 .../src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4       | 6 +++++-
 .../src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java  | 6 ++++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
index 1ae6522da0..f4418f1bef 100644
--- 
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
@@ -3391,7 +3391,6 @@ class MiscDRLParserTest {
         assertThat(bd.getParameters().get(1)).isEqualTo("$s.symbol");
     }
 
-    @Disabled("Priority : Mid | Implement using declared window. Not written 
in docs, but unit tests found.")
     @Test
     public void parse_WindowUsage() throws Exception {
         final String text = "package org.drools\n" +
diff --git 
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4
 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4
index c7596d0144..34ebacd4da 100644
--- 
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4
+++ 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4
@@ -67,7 +67,7 @@ entryPointDeclaration : DRL_ENTRY_POINT name=stringId 
drlAnnotation* ;
 
 // windowDeclaration := WINDOW ID annotation* lhsPatternBind END
 
-windowDeclaration : DRL_WINDOW name=stringId drlAnnotation* lhsPatternBind ;
+windowDeclaration : DRL_WINDOW name=IDENTIFIER drlAnnotation* lhsPatternBind ;
 
 // field := label fieldType (EQUALS_ASSIGN conditionalExpression)? annotation* 
SEMICOLON?
 
@@ -361,6 +361,7 @@ patternFilter : DRL_WINDOW COLON IDENTIFIER LPAREN 
expressionList RPAREN ;
 patternSource : fromAccumulate
               | fromCollect
               | fromEntryPoint
+              | fromWindow
               | fromExpression
               ;
 
@@ -394,6 +395,9 @@ fromCollect : DRL_COLLECT LPAREN lhsPatternBind RPAREN ;
 
 fromEntryPoint : DRL_ENTRY_POINT stringId ;
 
+// fromWindow := WINDOW ID
+fromWindow : DRL_WINDOW IDENTIFIER ;
+
 /*
  lhsExists := EXISTS
            ( (LEFT_PAREN (or_key|and_key))=> lhsOr  // prevents '((' for 
prefixed and/or
diff --git 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
index 0de2de1239..9ab53768f7 100644
--- 
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
+++ 
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
@@ -58,6 +58,7 @@ import org.drools.drl.ast.descr.TypeDeclarationDescr;
 import org.drools.drl.ast.descr.TypeFieldDescr;
 import org.drools.drl.ast.descr.UnitDescr;
 import org.drools.drl.ast.descr.WindowDeclarationDescr;
+import org.drools.drl.ast.descr.WindowReferenceDescr;
 
 import static 
org.drools.drl.parser.antlr4.Antlr4ParserStringUtils.getTextPreservingWhitespace;
 import static 
org.drools.drl.parser.antlr4.Antlr4ParserStringUtils.getTokenTextPreservingWhitespace;
@@ -591,6 +592,11 @@ public class DRLVisitorImpl extends 
DRLParserBaseVisitor<Object> {
         return new 
EntryPointDescr(safeStripStringDelimiters(ctx.stringId().getText()));
     }
 
+    @Override
+    public WindowReferenceDescr visitFromWindow(DRLParser.FromWindowContext 
ctx) {
+        return new WindowReferenceDescr(ctx.IDENTIFIER().getText());
+    }
+
     /**
      * Collect constraints in a Pattern
      */


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

Reply via email to