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
The following commit(s) were added to refs/heads/dev-new-parser by this push:
new b456e22036 [incubator-kie-drools#5679] New DRL parser : Test failure :
RHS end without preceding white-space (#5698)
b456e22036 is described below
commit b456e2203627f6b56b7283fe68b05bf98cc1d399
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Wed Feb 21 16:30:56 2024 +0900
[incubator-kie-drools#5679] New DRL parser : Test failure : RHS end without
preceding white-space (#5698)
---
.../drl/parser/antlr4/MiscDRLParserTest.java | 49 ++++++++++++++++++++++
.../org/drools/drl/parser/antlr4/DRLLexer.g4 | 7 +++-
2 files changed, 55 insertions(+), 1 deletion(-)
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 ae45a8cc3e..c40543c485 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
@@ -3440,4 +3440,53 @@ class MiscDRLParserTest {
RuleDescr ruleDescr = packageDescr.getRules().get(0);
assertThat(ruleDescr.getConsequence().toString()).isEqualToIgnoringWhitespace("int
rule = 10;");
}
+
+ @Test
+ void semicolonEnd() {
+ final String text = "package org.drools\n" +
+ "rule X\n" +
+ "when\n" +
+ " $s : String()\n" +
+ "then\n" +
+ " delete($s);end\n"; // no space after semicolon
+
+ PackageDescr packageDescr = parser.parse(text );
+
+ RuleDescr ruleDescr = packageDescr.getRules().get(0);
+
assertThat(ruleDescr.getConsequence().toString()).isEqualToIgnoringWhitespace("delete($s);");
+ }
+
+ @Test
+ void braceEnd() {
+ final String text = "package org.drools\n" +
+ "rule X\n" +
+ "when\n" +
+ " $p : Person()\n" +
+ "then\n" +
+ " modify($p) { setAge(2) }end\n"; // no space after right
brace
+
+ System.out.println(text);
+
+ PackageDescr packageDescr = parser.parse(text );
+
+ RuleDescr ruleDescr = packageDescr.getRules().get(0);
+
assertThat(ruleDescr.getConsequence().toString()).isEqualToIgnoringWhitespace("modify($p)
{ setAge(2) }");
+ }
+
+ @Test
+ void parenthesisEnd() {
+ final String text = "package org.drools\n" +
+ "rule X\n" +
+ "when\n" +
+ " $p : Person()\n" +
+ "then\n" +
+ " retract($p)end\n"; // no space after right parenthesis
+
+ System.out.println(text);
+
+ PackageDescr packageDescr = parser.parse(text );
+
+ RuleDescr ruleDescr = packageDescr.getRules().get(0);
+
assertThat(ruleDescr.getConsequence().toString()).isEqualToIgnoringWhitespace("retract($p)");
+ }
}
diff --git
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLLexer.g4
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLLexer.g4
index 8aac81873c..a2ef032823 100644
---
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLLexer.g4
+++
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLLexer.g4
@@ -158,4 +158,9 @@ DrlUnicodeEscape
mode RHS;
RHS_WS : [ \t\r\n\u000C]+ -> channel(HIDDEN);
DRL_RHS_END : 'end' [ \t]* SEMI? [ \t]* ('\n' | '\r\n' | EOF)
{setText("end");} -> popMode;
-RHS_CHUNK : ~[ \t\r\n\u000C]+ ;
+RHS_CHUNK
+ : ~[ ;})\t\r\n\u000C]+ [;})]? // ; } ) could be a delimitter proceding
'end'
+ | SEMI
+ | RBRACE
+ | RPAREN
+ ;
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]