Reference Material
IntelliJ Ant plugin
PoC Code
Findings
- Antlr4 can replace regex with less and more readable code
- Replacement of regex for
CpsPathQuery
fully replaced by fully compatible object generated using Antlr4 this commit: https://gerrit.onap.org/r/c/cps/+/121503 - Needed to add explicit error rule for handling unexpected tokens (otherwise Antlr would ignore them):
ErrorCharacter : . ;
- Current CPS code using regex is inconsistent and needless limited for single leave condition
- Current CPS code was lacking @ token for attribute names in some test cases (fixed in https://gerrit.onap.org/r/c/cps/+/121503)
CpsPathQuerySpec
did not cover all necessary possibilities (as used in some DB integration tests) This has now been addressed CpsDataPersistenceQueryDataNodeSpec
contains some grammar tests that should be (are already) in CpsPathQuerySpec
- IntelliJ plugin very useful for quick testing and troubleshooting of grammar
- Not sure of best way to refresh generated code (in IntelliJ)
mvn clean install
in cps-path-parser seems the surest way
Xpath31 grammar
The grammar defined in predefined xpath grammer: https://github.com/antlr/grammars-v4/tree/master/xpath/xpath31
To-Do
- Check and Improve error handling
- Re-use CpsPath Exception (wrap IllegalState exception)
- Clean up, simplify rules and remove redundant legacy limitations
- Better names (check name-casing conventions Antrl)
- Consider using predefined xpath grammer: https://github.com/antlr/grammars-v4/tree/master/xpath/xpath31
- Even just study it or extract small parts to get correct definition of valid container-names etc.