13.9.0 • Published 10 months ago
@gravity-ui/websql-autocomplete v13.9.0
WebSQL autocomplete
A tool that provides autocompletion for various sql dialects.
Autocomplete theory
In order to parse any language, you need a lexer (tokenizer) and a parser (ast builder)
Resources to research:
- The ANTLR Mega Tutorial: https://tomassetti.me/antlr-mega-tutorial/
- Code Completion with ANTLR4-c3: https://tomassetti.me/code-completion-with-antlr4-c3/
How everything works
- ANTLR4 grammar and lexer for different
{dialect}are defined insrc/autocomplete/databases/{dialect}/grammardirectories. - Actual parsers and lexers for different
{dialect}are generated intosrc/autocomplete/databases/{dialect}/generateddirectories. - Dialect specific code, which is required for the core logic to work, is put in
src/autocomplete/databases/{dialect}/{dialect}-autocomplete.tsfiles. - The core logic is inside
src/autocomplete/shared/autocomplete.tsfile. It uses dialect specific helpers to generate autocomplete suggestions based on current cursor position.
How to add a new dialect
- Add new dialect files to src/autocomplete/databases/{$dialect}
- Add new dialect to the
typesVersions,exportsvariables in package.json - Add new dialect to the
databasesarray in build.js
Main scripts
npm run generate- Generate parsers and lexers (Java has to be installed on your system for this to work)npm run test- Run tests
13.8.0
11 months ago
13.7.1
11 months ago
13.9.0
10 months ago
13.8.1
11 months ago
13.6.0
12 months ago
13.7.0
12 months ago
13.4.0
1 year ago
13.3.1
1 year ago
13.5.0
12 months ago
13.2.0
1 year ago
13.3.0
1 year ago
13.0.0
1 year ago
13.1.0
1 year ago
12.7.0
1 year ago
12.8.0
1 year ago
12.7.1
1 year ago
12.3.0
1 year ago
12.1.2
1 year ago
12.4.0
1 year ago
12.5.0
1 year ago
12.4.1
1 year ago
12.6.0
1 year ago
12.4.2
1 year ago
12.0.0
1 year ago
12.1.0
1 year ago
12.2.0
1 year ago
12.1.1
1 year ago
8.3.0
2 years ago
10.0.0
2 years ago
8.2.0
2 years ago
10.1.0
1 year ago
10.2.0
1 year ago
10.3.0
1 year ago
10.2.1
1 year ago
8.4.0
2 years ago
9.1.1
2 years ago
9.1.0
2 years ago
9.0.0
2 years ago
11.0.0
1 year ago
8.1.0
2 years ago
8.0.2
2 years ago
8.0.1
2 years ago
8.0.0
2 years ago