44 lines
3.7 KiB
Markdown
44 lines
3.7 KiB
Markdown
# Syntax provider profile
|
|
|
|
Regex Tools has one public profile:
|
|
|
|
```text
|
|
community
|
|
```
|
|
|
|
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. Further syntax coverage can grow behind the same
|
|
application-owned interface without changing the runtime identity.
|