difftastic/vendored_parsers/tree-sitter-sql
Wilfred Hughes 08b3ff138f Rename vendor/ directory
Closes #453
2023-01-10 08:35:01 +07:00
..
.github/workflows Rename vendor/ directory 2023-01-10 08:35:01 +07:00
bindings Rename vendor/ directory 2023-01-10 08:35:01 +07:00
docs Rename vendor/ directory 2023-01-10 08:35:01 +07:00
examples Rename vendor/ directory 2023-01-10 08:35:01 +07:00
queries Rename vendor/ directory 2023-01-10 08:35:01 +07:00
scripts Rename vendor/ directory 2023-01-10 08:35:01 +07:00
src Rename vendor/ directory 2023-01-10 08:35:01 +07:00
test Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.editorconfig Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.gitattributes Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.gitignore Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.pre-commit-config.yaml Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.prettierignore Rename vendor/ directory 2023-01-10 08:35:01 +07:00
.prettierrc.json Rename vendor/ directory 2023-01-10 08:35:01 +07:00
Cargo.lock Rename vendor/ directory 2023-01-10 08:35:01 +07:00
Cargo.toml Rename vendor/ directory 2023-01-10 08:35:01 +07:00
LICENSE Rename vendor/ directory 2023-01-10 08:35:01 +07:00
README.md Rename vendor/ directory 2023-01-10 08:35:01 +07:00
binding.gyp Rename vendor/ directory 2023-01-10 08:35:01 +07:00
grammar.js Rename vendor/ directory 2023-01-10 08:35:01 +07:00
package-lock.json Rename vendor/ directory 2023-01-10 08:35:01 +07:00
package.json Rename vendor/ directory 2023-01-10 08:35:01 +07:00

README.md

Node.js CI

SQL syntax for tree-sitter

This project initially focuses on PostgreSQL flavor of SQL

Try it out

You can try out the parser here: Tree Sitter SQL Playground

Development

Install pre-commit and run pre-commit install in the root of this repo. This will ensure that code follows code style of this repo.

File describing grammar is grammar.js

Every time the grammar file changes code generation needs to be run by invoking npm run gen

npm test command automatically performs code generation

Tests files are located in test/corpus

Here is the documentation on test file syntax

Running tests

npm install --also=dev
npm test

Debbuging

  • npm run parse <file.sql> outputs a syntax tree
  • npm run extract-error <file.sql> shows first offending line

Goals

This parser is supposed to be used in text editors. As a result:

  • it's very lax in what it considers valid SQL parse
  • adding extra nodes to have convenient selection anchors is okay

Other projects