Better than average syntax highlighting and formatting for emacs.
Go to file
Will Lillis 3b328005c9 fix(generate): rewrite parse_grammar with forward DFS
The previous implementation of `InputGrammar::normalize` (inlined  in
`parse_grammar` iterated over every variable, checking whether  it was
reachable _backwards_ from teh root by recursing over rules that
referenced it.

This means that each and every top level call re-traversed the entire
graph. The runtime performance of this backwards walk was dependent on
the _order_ of rules as declared in `grammar.js`. All existing grammars
have an ordering that's reasonably friendly to this iteration pattern
(BFS-ish order, top down from the start rule), but this leaves us open
to a catastrophic performance cliff.

Instead, seed a `used` set with the start rule, the word token, and an
names referenced from `extras`/`externals`. Then propagate via direct rule
references. This yields anywhere from a 2-~2200x speedup for
`parse_grammar`. This greatly speeds up `--no-parser` runs, but is
relatively unimportant for `parser.c` generation for _existing_
grammars. The important piece is eliminating the potential cliff.
2026-05-10 23:53:48 -04:00
.cargo chore: remove CARGO_WORKSPACE_DIR var 2025-09-24 16:14:08 -04:00
.github ci: bump korthout/backport-action in the actions group 2026-05-05 08:19:21 +02:00
.zed Add zed config file (enable all cargo features for rust-analyzer) 2025-04-23 16:32:21 -07:00
crates fix(generate): rewrite parse_grammar with forward DFS 2026-05-10 23:53:48 -04:00
docs docs: note zero point unbounded behavior in query functions 2026-04-30 04:28:59 -04:00
lib Validate Wasm language memory reads (#5569) 2026-05-06 11:54:31 -07:00
test/fixtures lexer: pass code-unit length to U16_NEXT in UTF-16 decoders 2026-04-26 03:38:47 -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 build(deps): bump wasmtime-c-api to v36.0.8 2026-05-05 08:19:02 +02:00
Cargo.lock build(deps): bump wasmtime-c-api to v36.0.8 2026-05-05 08:19:02 +02:00
Cargo.toml build(deps): bump clap_complete from 4.6.2 to 4.6.3 in the cargo group 2026-05-05 08:19:48 +02:00
CMakeLists.txt fix(build): define _BSD_SOURCE 2026-01-12 19:41:58 -05:00
CONTRIBUTING.md docs: improve docs for contributing to docs 2025-01-10 22:57:54 -05:00
Dockerfile Add a simple dockerfile for testing 2024-03-18 12:35:10 -07: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 make: drop redundant cargo check 2026-02-09 22:52:13 -05:00
Package.swift fix(build): define _BSD_SOURCE 2026-01-12 19:41:58 -05: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