Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[incubator-kie-drools-5874] [new-parser] Adapt drlIdentifier to opera… #5951

Draft
wants to merge 1 commit into
base: dev-new-parser
Choose a base branch
from

Conversation

tkobayas
Copy link
Contributor

@tkobayas tkobayas commented May 15, 2024

…tor_key and neg_operator_key in DRL6Expressions.g4

Issue:

Thanks to d57c5da , this is no longer an issue, so I adapted drlIdentifier and enabled the tests.

…tor_key and neg_operator_key in DRL6Expressions.g4
@tkobayas
Copy link
Contributor Author

@yurloc @mariofusco @gitgabrio Please review, Thanks!

Copy link
Contributor

@yurloc yurloc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, this breaks the kie-dmn-validation module:

[INFO] --- exec-maven-plugin:1.5.0:java (validation-bootstrap) @ kie-dmn-validation ---
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/var/home/jlocker/.m2/repository/ch/qos/logback/logback-classic/1.2.13/logback-classic-1.2.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/var/home/jlocker/.m2/repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
line 101:8 rule neg_operator_key failed predicate: {(helper.isPluggableEvaluator(true))}?
line 101:66 no viable alternative at input 'from $importDef'
line 102:0 missing '(' at 'then'
00:17:40.668 [org.kie.dmn.validation.bootstrap.ValidationBootstrapMain.main()] ERROR o.d.d.parser.antlr4.DRLParserWrapper.parse:77 - Exception while creating PackageDescr
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
	at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
	at java.base/java.util.Objects.checkIndex(Objects.java:359)
	at java.base/java.util.ArrayList.get(ArrayList.java:427)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsUnary(DRLVisitorImpl.java:1092)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsUnary(DRLVisitorImpl.java:83)
	at org.drools.drl.parser.antlr4.DRLParser$LhsUnaryContext.accept(DRLParser.java:2548)
	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
	at org.drools.drl.parser.antlr4.DRLParserBaseVisitor.visitLhsUnarySingle(DRLParserBaseVisitor.java:201)
	at org.drools.drl.parser.antlr4.DRLParser$LhsUnarySingleContext.accept(DRLParser.java:2117)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1106)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhs(DRLVisitorImpl.java:538)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitRuledef(DRLVisitorImpl.java:346)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitRuledef(DRLVisitorImpl.java:83)
	at org.drools.drl.parser.antlr4.DRLParser$RuledefContext.accept(DRLParser.java:1667)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1106)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDrlStatementdef(DRLVisitorImpl.java:166)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDrlStatementdef(DRLVisitorImpl.java:83)
	at org.drools.drl.parser.antlr4.DRLParser$DrlStatementdefContext.accept(DRLParser.java:526)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1106)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitCompilationUnit(DRLVisitorImpl.java:102)
	at org.drools.drl.parser.antlr4.DRLVisitorImpl.visitCompilationUnit(DRLVisitorImpl.java:83)
	at org.drools.drl.parser.antlr4.DRLParser$CompilationUnitContext.accept(DRLParser.java:436)
	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
	at org.drools.drl.parser.antlr4.DRLParserHelper.compilationUnitContext2PackageDescr(DRLParserHelper.java:94)
	at org.drools.drl.parser.antlr4.DRLParserWrapper.parse(DRLParserWrapper.java:75)
	at org.drools.drl.parser.antlr4.DRLParserWrapper.parse(DRLParserWrapper.java:55)
	at org.drools.drl.parser.DrlParser.lambda$parse$2(DrlParser.java:191)
	at org.drools.drl.parser.DrlParser.compileWithAntlr4Parser(DrlParser.java:204)
	at org.drools.drl.parser.DrlParser.parse(DrlParser.java:191)
	at org.drools.drl.parser.DrlParser.parse(DrlParser.java:179)
	at org.drools.drl.parser.DrlParser.parse(DrlParser.java:168)
	at org.drools.compiler.builder.impl.resources.DrlResourceHandler.process(DrlResourceHandler.java:55)
	at org.drools.compiler.builder.impl.PackageDescrBuilder.buildResource(PackageDescrBuilder.java:73)
	at org.drools.compiler.builder.impl.PackageDescrBuilder.build(PackageDescrBuilder.java:51)
	at org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackageDescr(CompositeKnowledgeBuilderImpl.java:173)
	at org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:116)
	at org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:109)
	at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:274)
	at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:220)
	at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:84)
	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:285)
	at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:251)
	at org.kie.dmn.validation.bootstrap.GenerateModel.generate(GenerateModel.java:66)
	at org.kie.dmn.validation.bootstrap.ValidationBootstrapMain.main(ValidationBootstrapMain.java:51)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:577)
	at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294)
	at java.base/java.lang.Thread.run(Thread.java:833)
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
### parse : ANTLR4_PARSER_ENABLED = true
00:17:41.375 [org.kie.dmn.validation.bootstrap.ValidationBootstrapMain.main()] ERROR o.d.c.k.b.impl.AbstractKieProject.buildKnowledgePackages:280 - Unable to build KieBaseModel:defaultKieBase
[101,8]: rule neg_operator_key failed predicate: {(helper.isPluggableEvaluator(true))}?
[101,66]: no viable alternative at input 'from $importDef'
[102,0]: missing '(' at 'then'
[0,0]: Index 0 out of bounds for length 0
[0,0]: Parser returned a null Package

[WARNING] 
java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:119)
    at java.lang.reflect.Method.invoke (Method.java:577)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:294)
    at java.lang.Thread.run (Thread.java:833)
Caused by: org.kie.api.builder.CompilationErrorsException: Unable to create KieModule, Errors Existed: [Message [id=1, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=101, column=0
   text=rule neg_operator_key failed predicate: {(helper.isPluggableEvaluator(true))}?], Message [id=2, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=101, column=0
   text=no viable alternative at input 'from $importDef'], Message [id=3, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=102, column=0
   text=missing '(' at 'then'], Message [id=4, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=0, column=0
   text=Index 0 out of bounds for length 0], Message [id=5, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=0, column=0
   text=Parser returned a null Package]]
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule (KieBuilderImpl.java:526)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule (KieBuilderImpl.java:532)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule (KieBuilderImpl.java:507)
    at org.kie.dmn.validation.bootstrap.GenerateModel.generate (GenerateModel.java:74)
    at org.kie.dmn.validation.bootstrap.ValidationBootstrapMain.main (ValidationBootstrapMain.java:51)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke (Method.java:577)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:294)
    at java.lang.Thread.run (Thread.java:833)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.132 s
[INFO] Finished at: 2024-05-16T00:17:41+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:java (validation-bootstrap) on project kie-dmn-validation: An exception occured while executing the Java class. null: InvocationTargetException: Unable to create KieModule, Errors Existed: [Message [id=1, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=101, column=0
[ERROR]    text=rule neg_operator_key failed predicate: {(helper.isPluggableEvaluator(true))}?], Message [id=2, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=101, column=0
[ERROR]    text=no viable alternative at input 'from $importDef'], Message [id=3, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=102, column=0
[ERROR]    text=missing '(' at 'then'], Message [id=4, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=0, column=0
[ERROR]    text=Index 0 out of bounds for length 0], Message [id=5, kieBase=defaultKieBase, level=ERROR, path=org/kie/dmn/validation/DMNv1_2/dmn-validation-rules-dmndi.drl, line=0, column=0
[ERROR]    text=Parser returned a null Package]]

@tkobayas
Copy link
Contributor Author

@yurloc Thank you for pointing out that, and sorry for not finding it beforehand. I'll investigate it.

@tkobayas tkobayas marked this pull request as draft May 16, 2024 07:08
@tkobayas
Copy link
Contributor Author

tkobayas commented May 16, 2024

I found that adding ? to relationalExpression solves the issue, but I postpone this fix until we will fix some more remaining test failures so that I can see the potential side-effect easily. Also this issue isn't related to any existing tests.

--- a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL6Expressions.g4
+++ b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL6Expressions.g4
@@ -505,7 +505,7 @@ locals [ BaseDescr lsd ]
                $relationalExpression::lsd = $result;
            }
          }
-  )*
+  )*?
   ;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants