feat: add multi-engine regex flavour support
This commit is contained in:
@@ -6,20 +6,38 @@ Regex Tools has one public profile:
|
||||
community
|
||||
```
|
||||
|
||||
It uses only reviewed open-source dependencies and builds without private
|
||||
registry credentials. ECMAScript uses regexpp 4.12.2. PCRE2 uses an
|
||||
application-owned lexical provider for partial explanations and the actual
|
||||
bundled PCRE2 compiler for authoritative acceptance. Python and Java use
|
||||
application-owned lexical providers for partial explanations and
|
||||
flavour-native replacement tokens; bundled CPython `re` and TeaVM
|
||||
`java.util.regex` respectively remain authoritative for compilation.
|
||||
The Java provider follows the bundled TeaVM 0.15.0 replacement subset:
|
||||
single-digit `$n` is executable, `$12` is `$1` followed by literal `2`, and
|
||||
Java SE `${name}` references are surfaced as a compatibility limitation.
|
||||
It uses reviewed open-source dependencies and builds without private registry
|
||||
credentials. No licensed parser is installed, referenced or required.
|
||||
|
||||
JavaScript/ECMAScript uses regexpp 4.12.2 for ECMAScript 2025 syntax. That is
|
||||
the only current complete grammar-backed normalized syntax tree. All other
|
||||
profiles use application-owned, deliberately partial lexical providers:
|
||||
|
||||
| Profile | Authoritative compiler | Lexical-provider boundary |
|
||||
| ----------------------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
||||
| PCRE2 | Standalone PCRE2 10.47 | Common captures and PCRE2 constructs; no complete structural grammar or branch-reset numbering |
|
||||
| PHP | PHP 8.5.8 `preg` / PCRE2 10.44 | Common PCRE2/PHP capture forms and numbered replacement references; no delimiter or complete `preg` template model |
|
||||
| Perl | Perl 5.28.1 via legacy WebPerl 0.09-beta | Common captures and fixed bridge references only; embedded code and complete Perl interpolation are unavailable |
|
||||
| Python | CPython 3.14.2 `re` | Common Python captures and replacement references |
|
||||
| Ruby | CRuby 4.0.0 `Regexp` | Common Onigmo capture forms and `String#gsub` references |
|
||||
| Java | TeaVM 0.15.0 `java.util.regex` | Common Java captures and TeaVM replacement subset; not OpenJDK |
|
||||
| C++ | Emscripten 6.0.4 libc++ `std::wregex` | Capture discovery only for the default modified ECMAScript grammar; alternate grammars remain compiler-authoritative |
|
||||
| Go | Go 1.26.5 standard-library `regexp` | Common RE2 capture forms and `regexp.Expand` references |
|
||||
| Rust | Rust `regex` crate 1.13.1 | Common capture forms and `Captures::expand` references |
|
||||
| .NET | .NET 10.0.10 `System.Text.RegularExpressions` | Common captures/substitutions; no balancing-group or capture-history structure |
|
||||
| Scala/JVM compatibility | Same TeaVM 0.15.0 Java engine | Java-compatible syntax only; no Scala runtime, wrapper or extractor model |
|
||||
|
||||
The Java and Scala providers follow the bundled TeaVM 0.15.0 replacement
|
||||
subset: single-digit `$n` is executable, `$12` is `$1` followed by literal
|
||||
`2`, and `${name}` is surfaced as a compatibility limitation. The Scala
|
||||
provider deliberately shares that implementation and says so.
|
||||
|
||||
Every partial provider exposes its gaps through coverage metadata. Actual
|
||||
acceptance, capture numbering and replacement output always come from the
|
||||
selected runtime. ECMAScript analysis, case generation and formatting are not
|
||||
applied to these partial trees.
|
||||
|
||||
The product deliberately does not implement or reference an `@r101/parser`
|
||||
profile. No commercial package alias, import, tarball, credential, licence key
|
||||
or private CI path exists. Additional flavour syntax is implemented
|
||||
incrementally as open-source providers behind the same application-owned
|
||||
interface. Partial coverage is exposed as metadata and never presented as a
|
||||
complete parser.
|
||||
or private CI path exists. Further syntax coverage can grow behind the same
|
||||
application-owned interface without changing the runtime identity.
|
||||
|
||||
Reference in New Issue
Block a user