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 C11) can be embedded in any application
Language Bindings
There are bindings that allow Tree-sitter to be used from the following languages:
Official
Third-party
Parsers
The following parsers can be found in the upstream organization:
- Agda
- Bash
- C
- C++
- C#
- CSS
- ERB / EJS
- Go
- Haskell
- HTML
- Java
- JavaScript
- JSDoc
- JSON
- Julia
- OCaml
- PHP
- Python
- Regex
- Ruby
- Rust
- Scala
- TypeScript
- Verilog
A list of known parsers can be found in the wiki.
Talks on Tree-sitter
Underlying Research
The design of Tree-sitter was greatly influenced by the following research papers: