mirror of
https://github.com/tree-sitter/tree-sitter.git
synced 2026-09-10 15:36:29 -04:00
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. |
||
|---|---|---|
| .. | ||
| src | ||
| theme | ||
| .gitignore | ||
| book.toml | ||
| package.nix | ||