A parser generator tool and incremental parsing library for building syntax trees in programming tools.
Tree-sitter is a parser generator tool and incremental parsing library that builds and updates concrete syntax trees for source code. It enables programming tools like text editors and IDEs to perform real-time language analysis, syntax highlighting, and code navigation by efficiently parsing code as it changes.
Developers building programming tools such as text editors, IDEs, linters, or code analysis applications that require real-time parsing and syntax tree manipulation.
Developers choose Tree-sitter for its incremental parsing capability, which allows for efficient updates to syntax trees without full re-parsing, its support for multiple languages, and its embeddable, dependency-free C runtime that integrates easily into various applications.
An incremental parsing system for programming tools
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Updates syntax trees on each edit without reparsing entire files, enabling real-time language analysis in editors as stated in the README.
General enough to parse any programming language with defined grammars, making it versatile for tools supporting multiple languages.
Fast enough to parse on every keystroke, crucial for responsive development tools like text editors and IDEs.
Provides useful results even in the presence of syntax errors, enhancing robustness for interactive coding environments.
Dependency-free C library can be embedded in any application, facilitating easy integration as highlighted in the README.
Writing and maintaining Tree-sitter grammars requires significant effort and expertise, which can be a barrier for custom language support.
Availability and maturity of pre-built grammars vary, with some languages having less community support or documentation.
The C-based runtime may not be ideal for all environments, such as pure JavaScript applications without WebAssembly bindings, adding integration complexity.