Better than average syntax highlighting and formatting for emacs.
Go to file
Will Lillis f9dcb005cd fix(generate)!: use node identities in node-types bookkeeping
Some node-types bookkeeping still used the type name without its named
status. This caused anonymous nodes to inherit extra metadata from named
nodes with the same text, and could create false supertype cycles when a
named supertype and anonymous alias shared a name.

Key extra metadata and supertype dependencies by the complete
(type, named) identity.

Reject named aliases that collide with a canonical supertype. Such an
identity cannot be represented as both a concrete node and an abstract
supertype in node-types.json, and previously caused generation to panic.

All output entries now come from the map keyed by (type, named), so no
two entries can reach the final sort with the same identity. Remove the
unreachable root and extra tie-breakers and the now-redundant deduplication.

BREAKING CHANGE: Alters a public error enum for the generate crate.
2026-08-23 13:40:32 -04:00
.cargo chore: remove CARGO_WORKSPACE_DIR var 2025-09-24 16:14:08 -04:00
.github fix(ci): run all workspace tests 2026-08-20 02:47:10 -04:00
.zed Add zed config file (enable all cargo features for rust-analyzer) 2025-04-23 16:32:21 -07:00
crates fix(generate)!: use node identities in node-types bookkeeping 2026-08-23 13:40:32 -04:00
docs feat!: add an eof function 2026-08-21 20:02:58 -04:00
lib fix(rust): remove must_use attribute from Tree::changed_ranges 2026-08-23 09:45:42 +02:00
test/fixtures feat!: add an eof function 2026-08-21 20:02:58 -04:00
.dockerignore Add a simple dockerfile for testing 2024-03-18 12:35:10 -07:00
.editorconfig style(zig): reformat files 2025-08-28 20:54:25 +03:00
.envrc nix: support single-checkout and multi-workspace direnv setups 2026-02-18 00:50:06 -05:00
.gitattributes Reorganize rust crates into a flat crates directory, simplify some CI steps (#4496) 2025-06-06 14:25:37 -07:00
.gitignore refactor: rework nix flake 2025-09-09 03:03:35 -04:00
.taplo.toml treewide: add taplo config and reformat toml files 2026-02-18 00:59:34 -05:00
build.zig build(zig): update to zig 0.16 2026-04-15 14:54:53 +02:00
build.zig.zon Upgrade to latest wasmtime, improve robustness and perf of wasm-based parsing (#5847) 2026-08-20 21:02:11 +00:00
Cargo.lock Upgrade to latest wasmtime, improve robustness and perf of wasm-based parsing (#5847) 2026-08-20 21:02:11 +00:00
Cargo.toml Allow using Tree-sitter rust lib in multi-threaded web apps compiled to wasm32-unknown-unknown (#5851) 2026-08-14 17:05:42 -07:00
CMakeLists.txt fix(lib): address strict aliasing violations in TreeCursor type 2026-06-16 23:55:43 -04:00
CONTRIBUTING.md docs: improve docs for contributing to docs 2025-01-10 22:57:54 -05:00
flake.lock flake: update lockfile 2026-02-09 22:52:13 -05:00
flake.nix nix: fix clangd not working 2026-02-08 11:09:31 +01:00
FUNDING.json chore: add FUNDING.json 2023-11-08 00:08:07 -05:00
LICENSE chore: copy license to all packages 2025-09-11 03:12:35 -04:00
Makefile fix(lib): address strict aliasing violations in TreeCursor type 2026-06-16 23:55:43 -04:00
README.md docs: change WASM/wasm to Wasm 2025-08-21 09:56:32 +03:00

tree-sitter

DOI discord matrix

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