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

[new-parser] Merge dev-new-parser to main #5989

Merged
merged 127 commits into from
Oct 11, 2024

Conversation

tkobayas
Copy link
Contributor

@tkobayas tkobayas commented Jun 11, 2024

Issue:

Merging dev-new-parser branch to main branch.

  • Merging has to be done after Drools 10.0 release 10.0.x is branched out.
  • Until the Drools 10.0 release Until 10.0.x is branched out, mark the PR [DO-NOT-MERGE] and make it draft.
  • This PR makes the new parser not default parser. So it shouldn't affect the default behavior.
  • Make sure to use "Rebase and merge" (not "Squash and merge") in the Github UI to keep commit history.
  • After Drools 10 release, discuss the future plan in dev at kie.apache ML.

@tkobayas
Copy link
Contributor Author

tkobayas commented Jun 11, 2024

[DRAFT] I'll ask for review after Drools 10.0 is released 10.0.x is branched out.

@tkobayas tkobayas force-pushed the incubator-kie-drools-5988-merge branch from f6c9cf3 to 7da9750 Compare June 11, 2024 06:06
public static final String ANTLR4_PARSER_ENABLED_PROPERTY = "drools.drl.antlr4.parser.enabled";

// temporarily removed 'final' for testing purposes. This should be final when the feature gets stable
public static boolean ANTLR4_PARSER_ENABLED = Boolean.parseBoolean(System.getProperty(ANTLR4_PARSER_ENABLED_PROPERTY, "false")); // default is false
Copy link
Contributor Author

@tkobayas tkobayas Jun 11, 2024

Choose a reason for hiding this comment

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

The new parser is disabled by default. So it shouldn't affect the default behavior. Also unit tests (except drools-drl-parser-tests) run with the old parser.

#5990 is for the new parser CI check.

@tkobayas
Copy link
Contributor Author

tkobayas commented Oct 2, 2024

Reminder:
Make sure to use "Rebase and merge" (not "Squash and merge") in the Github UI to keep commit history.

@tkobayas tkobayas marked this pull request as ready for review October 2, 2024 10:01
@tkobayas
Copy link
Contributor Author

tkobayas commented Oct 3, 2024

Hi @mariofusco @gitgabrio @baldimir @pibizza @lucamolteni ,

This is a PR to merge antlr4 based new parser. Note that this is not a default parser. So it shouldn't affect the default behavior. We would discuss the future plan in dev at kie.apache ML after 10.0.0 release.

This new parser pass all unit tests : Confirmed in #5990

Please review, thanks!

@tkobayas tkobayas changed the title [DO-NOT-MERGE] [new-parser] Merge dev-new-parser to main [new-parser] Merge dev-new-parser to main Oct 3, 2024
tkobayas and others added 10 commits October 11, 2024 10:12
apache#5682)

* add antlr4 based drl parser

* bump to drools 8.16.0.Beta

* improve node position discovery

* first c3 integration

* Module reorganization (#2)

* WIP

* Ignore directories

* Add debug. Minor modifications

* WIP

* Fix tests - add comments

* manage null ast nodes and fix failing test

* improve drl parser

* Fix basic completion (#4)

* Add Java grammar, fix DRL grammar, simplify token index calculation, remove template code

* Add ignored tokens to completion

Co-authored-by: livio <[email protected]>

* add constraints parsing

* - Added DRLParserWrapper to store errors using DRLErrorListener (#5)

- Added MiscDRLParserTest which is being ported from RuleParserTest to enhance coverage.

* Enhance test/grammar coverage. function import, global, exists, not (#6)

* Enhance test/grammar coverage. and, or, listExpression (#7)

* Enhance test/grammar coverage. matches, single quoted string, escape (#9)

- Introduced drlExpression, drlPrimary, drlLiteral, DRL_STRING_LITERAL

* Enhance test/grammar coverage. dialect, invalid lhs (apache#10)

* Enhance test/grammar coverage. keyword collision (apache#11)

- Add "DRL_" prefix for DRL keywords for clarification

* Enhance test/grammar coverage. function, attributes, consequence (apache#12)

* Enhance test/grammar coverage. function, attributes, consequence
- better getText preserving whitespaces
- resolving WARNs because of overlapping keywords

* - No need to declare duplicate keywords

* Enhance test/grammar coverage. OR, inline map (apache#13)

* OpenRewrite applied for junit5 and assertj (apache#14)

* Enhance test/grammar coverage. label, consequenceLocation, test refac… (apache#15)

* Enhance test/grammar coverage. label, consequenceLocation, test refactoring, assertj best practice

* - better test method names

* [DROOLS-7253] Review and improve drools-lsp parser Visitor design (apache#16)

* [DROOLS-7253] Review and improve drools-lsp parser Visitor design
- Remove currentConstructStack. Utilize return object instead.

* - Remove instance fields. Utilize return objects instead.

* [DROOLS-7270] Enhance test/grammar coverage : andRestriction, orRestriction (#4)

- Removed some unused cast

* [DROOLS-7271] Fully port RuleParserTest as MiscDRLParserTest with @disabled and priority comment (apache#10)

* [DROOLS-7285] Failed to parse and/or with parentheses in LHS (apache#15)

* [DROOLS-7286] Failed to parse binding with || (apache#21)

* [DROOLS-7287] Failed to parse comments in RHS (apache#23)

* [DROOLS-7287] Failed to parse comments in RHS

* - add rhs string check

* [DROOLS-7515] Parser : Accept plain text in RHS (apache#26)

* [DROOLS-7515] Parser : Accept plain text in RHS

* - Handle keyword token in RHS

* - Removed sysout

* - Revert statementKeywords. Instead, define DRL_END with newline or EOF

* - fix method name

* [DROOLS-7288] Failed to parse complex parentheses (apache#27)

* [DROOLS-7288] Failed to parse complex parentheses
- bump to 8.43.0.Final

* additional tests

* [DROOLS-7289] Implement accumulate (apache#28)

* [DROOLS-7296] Implement from entry-point (apache#30)

* [DROOLS-7297] Implement import accumulate (apache#29)

* [DROOLS-7290] Implement BigInteger literal, BigDecimal literal (apache#31)

* [DROOLS-7292] Implement eval (apache#32)

* [DROOLS-7293] Implement extends (apache#33)

* [DROOLS-7294] Implement forall (apache#34)

* [DROOLS-7298] Implement memberOf (apache#35)

* [DROOLS-7300] Implement positional constraint (apache#36)

* [DROOLS-7304] Implement temporal operators (apache#38)

- Also covers [DROOLS-7303] Implement sliding window

* [DROOLS-7301] Implement query (apache#37)

- Also partially fixes [DROOLS-7302] Implement semicolon delimiter

* [DROOLS-7295] Implement from collect (apache#39)

* [DROOLS-7305] Implement type declaration (apache#40)

- also covers [DROOLS-7291] Implement entry-point declaration
- also covers window declaration

* [DROOLS-7306] Implement unification (apache#41)

* [DROOLS-7306] Implement unification
- Also [DROOLS-7307] Parse attribute agenda-group

* [DROOLS-7308] Parse attribute without value
- Also [DROOLS-7309] Parse attribute with parentheses

* [DROOLS-7310] parse nested parentheses (apache#42)

* [DROOLS-7310] parse nested parentheses

* - Adding code commentes and explanations
- Adding more nested level tests

* [DROOLS-7577] drools-lsp : Add comments and explanations for drools-p… (apache#43)

* [DROOLS-7577] drools-lsp : Add comments and explanations for drools-parser

* removed syntax examples

* [DROOLS-7591] Experiment branch : migrate a new drools-lsp parser into drools (apache#44)

- Add some methods to call from drools code base

* Move necessary files without any additional modifications

* Update DRL6Expressions.g4 to ANTLR 4 (apache#47)

* Add DescrDumperTest and fix the expression parser grammar (apache#48)

* Add DescrDumperTest

* Fix it

* [DROOLS-7591] Experiment branch : migrate a new drools-lsp parser into drools
- New parser is migrated in drools-drl/drools-drl-parser with org.drools.drl10.parser package
- To enable the new parser, run `mvn test -PDRL10`
- At the moment, we get lots of test failures especially in drools-model/drools-model-codegen and drools-test-coverage/test-compiler-integration

* - License header
- Revert an inappropriate test edit
- Removed unnecessary profile
- Clarify unsupported methods
- Removed unnecessary bom dependency

---------

Co-authored-by: mariofusco <[email protected]>
Co-authored-by: Gabriele Cardosi <[email protected]>
Co-authored-by: Livio Benčik <[email protected]>
Co-authored-by: livio <[email protected]>
Co-authored-by: Jiří Locker <[email protected]>
* WIP

* Ignore directories

* Add debug. Minor modifications

* WIP

* Fix tests - add comments
* Add Java grammar, fix DRL grammar, simplify token index calculation, remove template code

* Add ignored tokens to completion

Co-authored-by: livio <[email protected]>
tkobayas and others added 25 commits October 11, 2024 10:14
apache#5921)

* [incubator-kie-drools-5918] [new-parser] Annotations can appear in lhsOr and lhsAnd

* - infix or, and
…apache#5922)

- Avoid unnecessary IllegalStateException
- Avoid empty error message
…ache#5913)

* [incubator-kie-drools-5908] ReteOOWaltzTest 'end' detection issue

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

---------

Co-authored-by: Jiří Locker <[email protected]>
…apache#5941)

* [incubator-kie-drools-5924] [new-parser] Disable DRLIncompleteCodeTest

* Remove editor mode tests
…side OR (apache#5950)

* Tests for incubator-kie-drools-5945

* [incubator-kie-drools-5945] [new-parser] Broken named consequences inside OR

---------

Co-authored-by: Jiří Locker <[email protected]>
apache#5958)

* [incubator-kie-drools-5818] [new-parser] Parsing fails if a Java keyword appears in a qualified name

* - Exclude 'new' from 'drlIdentifier' because of 'primary' ambiguity
- Add tests
apache#5965)

* [incubator-kie-drools-5909] [new-parser] Accumulate parsed incorrectly if init and action statements are empty

* Update drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java

Co-authored-by: Jiří Locker <[email protected]>

---------

Co-authored-by: Jiří Locker <[email protected]>
apache#5969)

* [incubator-kie-drools-5938] [new-parser] Tests using wrong duration attribute format

* - Use explicit test value
* [incubator-kie-drools-5792] cleanup drools-drl-parser-tests
- Apply open-rewrite JUnit5BestPractices

* - Apply open-rewrite SimplifyChainedAssertJAssertions

* - remove 'parse_' prefix
- remove unused 'throw Exception'

* - code format
@tkobayas tkobayas force-pushed the incubator-kie-drools-5988-merge branch from 1fb05d2 to 32710cc Compare October 11, 2024 01:17
@tkobayas
Copy link
Contributor Author

Rebased to resolve conflict with #6115

Copy link
Contributor

@pibizza pibizza left a comment

Choose a reason for hiding this comment

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

LGTM

@tkobayas tkobayas merged commit 8f0ca8e into apache:main Oct 11, 2024
9 checks passed
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.

7 participants