3.7 KiB
Syntax provider profile
Regex Tools has one public profile:
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.