Use ANTLR grammar for PartiQL diagnostics #383
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The parser used by the PartiQL server currently doesn't support DDL/DML statements (see partiql/partiql-lang-rust#472). This results in diagnostics being returned by the server even for valid syntax blocking the server from being used effectively.
Solution
This temporarily changes the validation used by the server to be based on the ANTLR grammar defined for the PartiQL language (defined here) using the
antlr4ng
target for the ANTLR parser. Added to the repo are the.g4
grammar files and the parser/lexers from those are automatically generated. Ideally, we wouldn't commit thesrc/antlr-generated
folder and just generate those in aprecompile
hook but the generation of the parser/lexer files requires Java to be installed on the system which would impose that constraint on anyone who wants to work with this repository.The, currently unused, files for the Rust Wasm PartiQL parser are left in the repository. When the server is actually used, the bundler will shake out those files to not add them to the bundle size.
Added tests for the new parser.
License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.