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:
- C#
- Go
- Guile
- Haskell
- Java
- Java
- Java (Android)
- JavaScript (Node.js)
- JavaScript (Wasm)
- Kotlin
- Lua
- OCaml
- Odin
- Perl
- Python
- Ruby
- Ruby
- Rust
- Swift
Parsers
- Ada
- Agda
- Apex
- ApexCode
- AWS Event Rule
- Bash
- Beancount
- Cap’n Proto
- C
- C++
- C#
- CEL
- Clojure
- CMake
- COBOL
- Common Lisp
- CSS
- CUDA
- Dart
- D
- Dockerfile
- DOT
- Elixir
- Elm
- Emacs Lisp
- Eno
- ERB / EJS
- Erlang
- Fennel
- Fish
- Formula
- Fortran
- gitattributes
- gitignore
- Gleam
- GLSL (OpenGL Shading Language)
- Go
- Go mod
- Go work
- GraphQL
- Hack
- Haskell
- HCL
- HTML
- ISPC
- Java
- JavaScript
- jq
- JSON
- JSON5
- Julia
- Just
- Kotlin
- LALRPOP
- LaTeX
- Lean
- LLVM
- LLVM MachineIR
- LLVM MLIR
- LLVM TableGen
- Lua
- Magik
- Make
- Markdown
- Markdown
- Meson
- Meson
- Motorola 68000 assembly
- NGINX
- Nim
- Nix
- Noir
- Objective-C
- OCaml
- Odin
- Ohm
- Org
- P4
- Pascal
- Perl
- Perl
- Perl POD
- PHP
- Portable Game Notation
- PowerShell
- Protocol Buffers
- Python
- QML
- QuakeC
- Racket
- Rasi
- re2c
- Regex
- Rego
- reStructuredText
- R
- Robot
- Ruby
- Rust
- Scala
- Scheme
- SCSS
- S-expressions
- Smali
- Smali
- SourcePawn
- SPARQL
- SQL - BigQuery
- SQL - General
- SQL - PostgreSQL
- SQL - SQLite
- SSH
- Supercollider
- Svelte
- Swift
- SystemRDL
- Tact
- Thrift
- “TODO:” comments
- TOML
- Tree-sitter Query
- Turtle
- Twig
- Twig
- TypeScript
- Ungrammar
- USD
- Verilog
- VHDL
- Vue
- Wasm
- WDL
- WGSL (WebGPU Shading Language)
- YAML
- YANG
- Yuck
- Zig
Talks on Tree-sitter
Underlying Research
The design of Tree-sitter was greatly influenced by the following research papers: