Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/derekstride/tree-sitter-sql
SQL grammar for tree-sitter
https://github.com/derekstride/tree-sitter-sql
sql tree-sitter tree-sitter-parser
Last synced: 5 days ago
JSON representation
SQL grammar for tree-sitter
- Host: GitHub
- URL: https://github.com/derekstride/tree-sitter-sql
- Owner: DerekStride
- License: mit
- Created: 2021-03-11T02:06:56.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-11T21:49:28.000Z (14 days ago)
- Last Synced: 2024-12-19T07:41:30.024Z (7 days ago)
- Topics: sql, tree-sitter, tree-sitter-parser
- Language: JavaScript
- Homepage: http://derek.stride.host/tree-sitter-sql/
- Size: 47.4 MB
- Stars: 163
- Watchers: 7
- Forks: 57
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# tree-sitter-sql
[![Build/test](https://github.com/derekstride/tree-sitter-sql/actions/workflows/ci.yml/badge.svg)](https://github.com/derekstride/tree-sitter-sql/actions/workflows/ci.yml)
[![GitHub Pages](https://github.com/DerekStride/tree-sitter-sql/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/DerekStride/tree-sitter-sql/actions/workflows/gh-pages.yml)
[![npm package version](https://img.shields.io/npm/v/%40derekstride/tree-sitter-sql?logo=npm&color=brightgreen)](https://www.npmjs.com/package/@derekstride/tree-sitter-sql)A general/permissive SQL grammar for [tree-sitter](https://github.com/tree-sitter/tree-sitter).
## Installation
**We don't commit the generated parser files to the `main` branch.** Instead, you can find them on the
[gh-pages](https://github.com/DerekStride/tree-sitter-sql/tree/gh-pages) branch. We're open to feedback & encourage you
to [open an issue](https://github.com/DerekStride/tree-sitter-sql/issues/new) to discuss any problems.They are also hosted on the [GitHub pages site](https://derek.stride.host/tree-sitter-sql/) and available for download
here:
[github://derekstride/tree-sitter-sql/gh-pages.tar.gz](https://github.com/DerekStride/tree-sitter-sql/archive/refs/heads/gh-pages.tar.gz).*Plugin maintainers ensure to specify the `HEAD` (or a specific revision) of the `gh-pages` branch when integrating
with this project.*### Step 1: Download the parser files
**Using `git`**
```bash
git clone https://github.com/DerekStride/tree-sitter-sql.git
cd tree-sitter-sql
git checkout gh-pages
```**Using `curl`**
```bash
curl -LO https://github.com/DerekStride/tree-sitter-sql/archive/refs/heads/gh-pages.tar.gz
tar -xzf gh-pages.tar.gz
cd tree-sitter-sql-gh-pages
```### Step 2: Compile the Parser
Tree-sitter parsers need to be compiled as a shared-object / dynamic-library, you can enable this by passing the
`-shared` & `-fPIC` flags to your compiler.```bash
cc -shared -fPIC -I./src src/parser.c src/scanner.c -o sql.so
```### Using [cargo](https://crates.io/crates/tree-sitter-sequel)
```bash
cargo add tree-sitter-sequel
```### Using [npm](https://www.npmjs.com/package/@derekstride/tree-sitter-sql)
```bash
npm i @derekstride/tree-sitter-sql
```### Using [pip](https://pypi.org/project/tree-sitter-sql/0.3.5/)
```bash
pip install tree-sitter-sql
```## Development
See [CONTRIBUTING.md](CONTRIBUTING.md) for documentation on how to set up the project for development.
## Features
For a complete list of features see the the [tests](test/corpus)
## References
* [Wikipedia#SQL_syntax](https://en.wikipedia.org/wiki/SQL_syntax) - I consulted wikipedia for naming conventions,
though I may not have been strict early on in the prototyping.
* [Phoenix Language Reference](https://forcedotcom.github.io/phoenix/index.html) - A reference diagram.
* [SQLite's railroad diagram for expr](https://www.sqlite.org/lang_expr.html) - Another reference diagram.
* [Postgresql syntax documentation](https://www.postgresql.org/docs/current/sql-commands.html)
* [Mariadb syntax documentation](https://mariadb.com/kb/en/sql-statements-structure/)### Other projects
* https://github.com/m-novikov/tree-sitter-sql
* https://github.com/tjdevries/tree-sitter-sql
* https://github.com/dhcmrlchtdj/tree-sitter-sqlite