Files
regex-tools/docs/PARSER_PROFILES.md

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.