mirror of
https://github.com/tree-sitter/tree-sitter.git
synced 2026-09-10 07:36:22 -04:00
In a future feature, `RulePool` nodes can be shared between lexical and syntax roots. No grammars generated by grammar.js/grammra.json are affected by this issue, as they lead to a tree pool rather than a DAG. With a DAG `RulePool` representation, however, rewriting tokens during extraction can destroy a token body before lexical expansion consumes it and can renumber shared syntax nodes more than once. Record terminal rewrites while inspecting the original pool, expand tokens and separators first, then commit the rewrites and renumber each reachable syntax node once. Resolve grammar metadata against the pending rewrites before mutating the pool. |
||
|---|---|---|
| .cargo | ||
| .github | ||
| crates | ||
| docs | ||
| lib | ||
| test/fixtures | ||
| .editorconfig | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .taplo.toml | ||
| build.zig | ||
| build.zig.zon | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| flake.lock | ||
| flake.nix | ||
| FUNDING.json | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
tree-sitter
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