6 KiB
6 KiB
| title |
|---|
| Introduction |
Introduction
Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be:
- General enough to parse any programming language
- Fast enough to parse on every keystroke in a text editor
- Robust enough to provide useful results even in the presence of syntax errors
- Dependency-free so that the runtime library (which is written in pure C) can be embedded in any application
Language Bindings
There are currently bindings that allow Tree-sitter to be used from the following languages:
Available Parsers
Parsers for these languages are fairly complete:
- Bash
- C
- C#
- C++
- Common Lisp
- CSS
- CUDA
- DOT
- Elm
- Emacs Lisp
- Eno
- ERB / EJS
- Fennel
- GLSL (OpenGL Shading Language)
- Go
- HCL
- HTML
- Java
- JavaScript
- Lua
- Make
- Markdown
- OCaml
- PHP
- Python
- Ruby
- Rust
- R
- S-expressions
- SPARQL
- SystemRDL
- Svelte
- TOML
- Turtle
- TypeScript
- Verilog
- VHDL
- Vue
- YAML
- WASM
- WGSL WebGPU Shading Language
Parsers for these languages are in development:
- Agda
- Elixir
- Erlang
- Dockerfile
- Go mod
- Hack
- Haskell
- Julia
- Kotlin
- Nix
- Objective-C
- Perl
- Protocol Buffers
- Scala
- Sourcepawn
- Swift
- SQL
Talks on Tree-sitter
Underlying Research
The design of Tree-sitter was greatly influenced by the following research papers: