tree-sitter.tree-sitter/crates/cli
Will Lillis 65e8b25413
wip(generate): emit 3-way per-state parse table layout (plan B)
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.
2026-05-19 18:18:20 -04:00
..
benches cli: fix clippy warnings from edition bump 2026-02-18 00:59:34 -05:00
eslint build(deps): bump brace-expansion in /crates/cli/eslint 2026-03-27 14:57:11 +01:00
npm feat: start working on v0.27 2025-12-13 14:14:33 +01:00
src wip(generate): emit 3-way per-state parse table layout (plan B) 2026-05-19 18:18:20 -04:00
build.rs fix(cli): correct resource paths 2025-08-25 10:21:48 +03:00
Cargo.toml feat(dist): enable install via cargo binstall (#5533) 2026-04-24 08:52:01 +02:00
LICENSE chore: copy license to all packages 2025-09-11 03:12:35 -04:00
package.nix feat: remove the need of an external JS runtime for processing grammars 2025-09-16 02:24:11 -04:00
README.md feat(dist): enable install via cargo binstall (#5533) 2026-04-24 08:52:01 +02:00

Tree-sitter CLI

crates.io badge npmjs.com badge

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 node on your PATH.
  • To run and test parsers, you must have a C and C++ compiler on your system.

Commands

  • generate - The tree-sitter generate command will generate a Tree-sitter parser based on the grammar in the current working directory. See the documentation for more information.

  • test - The tree-sitter test command will run the unit tests for the Tree-sitter parser in the current working directory. See the documentation for more information.

  • parse - The tree-sitter parse command will parse a file (or list of files) using Tree-sitter parsers.