apache / incubator-kie-drools

Drools is a rule engine, DMN engine and complex event processing (CEP) engine for Java.
http://www.drools.org
5.75k stars 2.47k forks source link

[new-parser] `unit` without `package` should not be allowed #5935

Open yurloc opened 1 month ago

yurloc commented 1 month ago

At least the old parser does not allow it.

This is my proposal:

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 da397785c1..16f5200354 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
@@ -14,7 +14,7 @@ import DRL6Expressions, JavaParser;
      *           |  query
      *           ;
      */
-compilationUnit : packagedef? unitdef? drlStatementdef* EOF ;
+compilationUnit : (packagedef unitdef?)? drlStatementdef* EOF ;

 drlStatementdef
     : importdef SEMI?

In other words, package is still optional, and unit is also optional but it requires package.

yurloc commented 1 month ago

good-first-issue