tree-sitter/cli
Max Brunsfeld 066fd77d39
Fix cases where error recovery could infinite loop (#4257)
* Rename corpus test functions to allow easy filtering by language

* Use usize for seed argument

* Avoid retaining useless stack versions when reductions merge

We found this problem when debugging an infinite loop that happened
during error recovery when using the Zig grammar. The large number of
unnecessary paused stack versions were preventing the correct recovery
strategy from being tried.

* Fix leaked lookahead token when reduction results in a merged stack

* Enable running PHP tests in CI

* Fix possible infinite loop during error recovery at EOF

* Account for external scanner state changes when detecting changed ranges in subtrees
2025-03-04 13:50:56 -08:00
..
benches feat: remove lazy_static in favor of LazyLock 2025-01-21 00:21:35 -05:00
config chore: a few minor lints 2025-01-21 00:57:58 -05:00
eslint build(deps): bump cross-spawn from 7.0.3 to 7.0.5 in /cli/eslint 2024-11-22 23:18:29 -05:00
generate fix(generate): mark TSCharacterRange as static (#4255) 2025-03-04 15:26:13 +01:00
loader feat(bindings): add opt-in zig bindings 2025-01-25 03:47:19 -05:00
npm build: bump version to 0.25.1 2025-02-02 02:07:36 -05:00
src Fix cases where error recovery could infinite loop (#4257) 2025-03-04 13:50:56 -08:00
build.rs refactor(web): rename tree-sitter.js to web-tree-sitter.js 2025-02-11 22:56:50 -05:00
Cargo.toml build(cli): explicitly include files 2025-01-28 19:30:43 -05:00
README.md docs(rust): add --locked to installation instructions 2024-10-30 10:51:46 -04: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:

cargo install --locked tree-sitter-cli

or with npm:

npm install 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.