differens languages for the actual compiled build’s extensions and levels.
Semantic mappings turn grammar kinds into concepts such as Function, Class, Method, Import, Variable, Struct, and Trait. Unmapped grammar nodes retain their raw CST kind. A future grammar-only registration can provide generic structure without a custom semantic mapping.
A code-classified extension without a registered grammar uses raw lines. This includes unsupported composite formats and other extensions shown by classification alone. Header, CSS/SQL, Vue/Svelte/Astro, and other coverage should be checked against
languages rather than inferred from the filename.
The examples on the language pages were checked against the native CLI. Each page lists concept mappings and known limits. Semantic diffing identifies syntax/declaration changes; it does not prove behavioral equivalence or implement a compiler’s type system.
For new grammar or concept mappings, see contributing. For non-code formats, see tier adapters.
Semantic concepts and raw grammar kinds
The code tier is T5.differens languages labels the full build’s registered
languages as semantic, L6: these grammars have mappings to concepts such as
Function, Class, and Import. T5 and L6 describe different things; L6 is not
a seventh content tier.
Within a supported grammar, an unmapped CST kind keeps its raw grammar name.
A future grammar-only registration could provide generic L5 coverage, but the
current full build lists semantic mappings for all its registered languages.
An arbitrary grammar is not discovered or downloaded at runtime.
How extractors recover names
The native mappings are Rust functions incrates/differens-tiers/src/code/concepts.rs and labels.rs. Tree-sitter supplies
the syntax tree; these functions choose concepts and labels. There is no public
JavaScript LanguageExtractor interface in the Rust workspace.
Most names come from a grammar’s name field. C/C++ declarations follow a
possibly nested declarator, Python assignments read their left-hand expression,
and Kotlin uses identifier recovery where its grammar omits field names. Go
methods also carry receiver identity so same-named methods remain distinguishable.