https://tree-sitter.github.io/tree-sitter/ [tree-sitter-small] GitHub repository Introduction * Language Bindings * Parsers * Talks on Tree-sitter * Underlying Research Using Parsers Creating Parsers Syntax Highlighting Implementation Contributing Playground Code Navigation Systems 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 * Nim * Nix * Noir * Objective-C * OCaml * Odin * 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 * Strange Loop 2018 * FOSDEM 2018 * GitHub Universe 2017 Underlying Research The design of Tree-sitter was greatly influenced by the following research papers: * Practical Algorithms for Incremental Software Development Environments * Context Aware Scanning for Parsing Extensible Languages * Efficient and Flexible Incremental Parsing * Incremental Analysis of Real Programming Languages * Error Detection and Recovery in LR Parsers * Error Recovery for LR Parsers