Replace the per-grammar CSR-vs-hybrid choice with a per-state picker that places each state in the smallest of dense / CSR / small. State ids are partitioned into contiguous tiers [Dense | CSR | Small] driven by `large_state_count` and a new `csr_state_count` field on TSLanguage. The runtime dispatches on two range checks; the rest of the lookup logic per tier is unchanged. States 0 (error) and 1 (start state) are pinned to the Dense tier so they remain at indices 0 and 1, matching the runtime's hard-coded expectations. Cost is bounded at ~2 * SYMBOL_COUNT * 2 bytes per grammar. Cleanup: drop --table-fmt CLI, OptLevel::ForceHybridTable / ForceCompressedTable, RenderError::ConflictingParseTableFlags, heuristic_should_compress, and use_compressed_tables since the free picker provably picks the smallest representation per state. Tests pass against the regenerated fixtures. The size savings are measured in a follow-up corpus run. |
||
|---|---|---|
| .. | ||
| benches | ||
| eslint | ||
| npm | ||
| src | ||
| build.rs | ||
| Cargo.toml | ||
| LICENSE | ||
| package.nix | ||
| README.md | ||
Tree-sitter CLI
The Tree-sitter CLI allows you to develop, test, and use Tree-sitter grammars from the command line. It works on MacOS,
Linux, and Windows.
Installation
You can install the tree-sitter-cli with cargo-binstall:
cargo binstall tree-sitter-cli
or you can build it from source:
cargo install --locked tree-sitter-cli
You can also download a pre-built binary for your platform from the releases page.
Dependencies
The tree-sitter binary itself has no dependencies, but specific commands have dependencies that must be present at runtime:
- To generate a parser from a grammar, you must have
nodeon your PATH. - To run and test parsers, you must have a C and C++ compiler on your system.
Commands
-
generate- Thetree-sitter generatecommand will generate a Tree-sitter parser based on the grammar in the current working directory. See the documentation for more information. -
test- Thetree-sitter testcommand will run the unit tests for the Tree-sitter parser in the current working directory. See the documentation for more information. -
parse- Thetree-sitter parsecommand will parse a file (or list of files) using Tree-sitter parsers.