yurloc commented on code in PR #5831:
URL:
https://github.com/apache/incubator-kie-drools/pull/5831#discussion_r1558383147
##########
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLLexer.g4:
##########
@@ -172,6 +172,8 @@ RHS_STRING_LITERAL
| ('\'' ( DrlEscapeSequence | ~('\\'|'\'') )* '\'') { setText(
normalizeString( getText() ) ); }
;
+RHS_NAMED_CONSEQUENCE_THEN : 'then' LBRACK IDENTIFIER RBRACK ;
Review Comment:
```suggestion
RHS_NAMED_CONSEQUENCE_THEN : DRL_THEN LBRACK IDENTIFIER RBRACK ;
```
##########
drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java:
##########
@@ -292,8 +294,17 @@ public RuleDescr visitRuledef(DRLParser.RuledefContext
ctx) {
}
if (ctx.rhs() != null) {
+ // default consequence
ruleDescr.setConsequenceLocation(ctx.rhs().getStart().getLine(),
ctx.rhs().getStart().getCharPositionInLine()); // location of "then"
-
ruleDescr.setConsequence(trimThen(getTokenTextPreservingWhitespace(ctx.rhs(),
tokenStream))); // RHS is just a text
+
ruleDescr.setConsequence(getTokenTextPreservingWhitespace(ctx.rhs().defaultConsequence(),
tokenStream)); // RHS is just a text
+
+ // named consequences
+ ctx.rhs().namedConsequence()
+ .forEach(namedConsequnceCtx -> {
+ String name =
extractNamedConsequenceName(namedConsequnceCtx.RHS_NAMED_CONSEQUENCE_THEN().getText());
+ String body =
getTokenTextPreservingWhitespace(namedConsequnceCtx.namedConsequenceBody(),
tokenStream);
Review Comment:
```suggestion
.forEach(namedConsequenceCtx -> {
String name =
extractNamedConsequenceName(namedConsequenceCtx.RHS_NAMED_CONSEQUENCE_THEN().getText());
String body =
getTokenTextPreservingWhitespace(namedConsequenceCtx.namedConsequenceBody(),
tokenStream);
```
##########
drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4:
##########
@@ -488,9 +508,13 @@ lhsAccumulate : (DRL_ACCUMULATE|DRL_ACC) LPAREN lhsAndDef
(COMMA|SEMI)
RPAREN (SEMI)?
;
-rhs : DRL_THEN consequence ;
+rhs : DRL_THEN defaultConsequence namedConsequence* ;
+
+defaultConsequence : ( RHS_STRING_LITERAL | RHS_CHUNK )* ;
-consequence : ( RHS_STRING_LITERAL | RHS_CHUNK )* ;
+// THEN LEFT_SQUARE ID RIGHT_SQUARE chunk
+namedConsequence : RHS_NAMED_CONSEQUENCE_THEN namedConsequenceBody ;
+namedConsequenceBody : ( RHS_STRING_LITERAL | RHS_CHUNK )* ;
Review Comment:
```suggestion
namedConsequence : RHS_NAMED_CONSEQUENCE_THEN defaultConsequence ;
```
`namedConsequenceBody` is identical to `defaultConsequence` so why not reuse
it?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]