1.9 KiB
Explanation model
The ECMAScript community provider converts regexpp nodes into a stable application AST inside the syntax worker. Nodes carry deterministic IDs, UTF-16 ranges, raw source, capture metadata, quantifier bounds, assertion kind, support status, provider identity and provenance.
Explanations are original deterministic text selected by node type. Nullable and minimum/maximum consumed-length properties are derived recursively where the normalized node semantics support them. Backreference lengths and exact bounds for Unicode properties of strings remain unknown rather than being guessed.
regexpp 4.12.2 does not expose tolerant recovery. A malformed pattern therefore gets the provider's exact diagnostic plus an application-owned error node. No partial regexpp AST is claimed.
The PCRE2 provider currently emits a deliberately partial lexical tree for common capture forms. It does not infer branch-reset numbering or claim full nesting; authoritative compilation, capture counts, names and result ranges come from PCRE2 itself.
The Python and Java providers likewise emit deliberately partial lexical trees.
They recognize their documented capture and replacement forms for navigation
and display, but do not claim full grammar acceptance. CPython re and TeaVM
Pattern remain authoritative for compilation. Java capture names displayed
with native numbered spans come from the bounded lexical metadata; they are not
invented as a TeaVM-reported name table.
The explanation tree is structural. It is never called an actual execution trace. Selecting a node selects and scrolls its exact editor range; selecting pattern text chooses the smallest enclosing node. PCRE2’s separate trace viewer contains actual bounded automatic callouts; its movement labels remain a distinct derived layer and are never copied into the structural explanation. Python and Java expose no actual execution trace.