mirror of
https://github.com/tree-sitter/tree-sitter.git
synced 2026-09-10 23:46:21 -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. |
||
|---|---|---|
| .. | ||
| fuzz | ||
| templates | ||
| tests | ||
| fuzz.rs | ||
| highlight.rs | ||
| init.rs | ||
| input.rs | ||
| logger.rs | ||
| main.rs | ||
| paint.rs | ||
| parse.rs | ||
| playground.html | ||
| playground.rs | ||
| query.rs | ||
| query_testing.rs | ||
| tags.rs | ||
| test.rs | ||
| test_highlight.rs | ||
| test_tags.rs | ||
| tests.rs | ||
| tree_sitter_cli.rs | ||
| util.rs | ||
| version.rs | ||
| wasm.rs | ||