diff --git a/spec.html b/spec.html
index c9f63720526..1b254c08aa7 100644
--- a/spec.html
+++ b/spec.html
@@ -34950,31 +34950,31 @@
Patterns
The RegExp constructor applies the following grammar to the input pattern String. An error occurs if the grammar cannot interpret the String as an expansion of |Pattern|.
Syntax
- Pattern[UnicodeMode, UnicodeSetsMode, N] ::
- Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N]
+ Pattern[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
+ Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
- Disjunction[UnicodeMode, UnicodeSetsMode, N] ::
- Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N]
- Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N] `|` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N]
+ Disjunction[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
+ Alternative[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
+ Alternative[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `|` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
- Alternative[UnicodeMode, UnicodeSetsMode, N] ::
+ Alternative[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
[empty]
- Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N] Term[?UnicodeMode, ?UnicodeSetsMode, ?N]
+ Alternative[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] Term[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
- Term[UnicodeMode, UnicodeSetsMode, N] ::
- Assertion[?UnicodeMode, ?UnicodeSetsMode, ?N]
- Atom[?UnicodeMode, ?UnicodeSetsMode, ?N]
- Atom[?UnicodeMode, ?UnicodeSetsMode, ?N] Quantifier
+ Term[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
+ Assertion[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
+ Atom[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
+ Atom[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] Quantifier
- Assertion[UnicodeMode, UnicodeSetsMode, N] ::
+ Assertion[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
`^`
`$`
`\b`
`\B`
- `(?=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- `(?!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
+ `(?=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
Quantifier ::
QuantifierPrefix
@@ -34988,13 +34988,13 @@ Syntax
`{` DecimalDigits[~Sep] `,}`
`{` DecimalDigits[~Sep] `,` DecimalDigits[~Sep] `}`
- Atom[UnicodeMode, UnicodeSetsMode, N] ::
+ Atom[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
PatternCharacter
`.`
- `\` AtomEscape[?UnicodeMode, ?N]
+ `\` AtomEscape[?UnicodeMode, ?WithNamedCaptureGroups]
CharacterClass[?UnicodeMode, ?UnicodeSetsMode]
- `(` GroupSpecifier[?UnicodeMode]? Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- `(?:` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
+ `(` GroupSpecifier[?UnicodeMode]? Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?:` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
SyntaxCharacter :: one of
`^` `$` `\` `.` `*` `+` `?` `(` `)` `[` `]` `{` `}` `|`
@@ -35002,11 +35002,11 @@ Syntax
PatternCharacter ::
SourceCharacter but not SyntaxCharacter
- AtomEscape[UnicodeMode, N] ::
+ AtomEscape[UnicodeMode, WithNamedCaptureGroups] ::
DecimalEscape
CharacterClassEscape[?UnicodeMode]
CharacterEscape[?UnicodeMode]
- [+N] `k` GroupName[?UnicodeMode]
+ [+WithNamedCaptureGroups] `k` GroupName[?UnicodeMode]
CharacterEscape[UnicodeMode] ::
ControlEscape
@@ -48713,37 +48713,37 @@ Regular Expressions Patterns
This alternative pattern grammar and semantics only changes the syntax and semantics of BMP patterns. The following grammar extensions include productions parameterized with the [UnicodeMode] parameter. However, none of these extensions change the syntax of Unicode patterns recognized when parsing with the [UnicodeMode] parameter present on the goal symbol.
Syntax
- Term[UnicodeMode, UnicodeSetsMode, N] ::
- [+UnicodeMode] Assertion[+UnicodeMode, ?UnicodeSetsMode, ?N]
- [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?N] Quantifier
- [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?N]
- [~UnicodeMode] QuantifiableAssertion[?N] Quantifier
- [~UnicodeMode] Assertion[~UnicodeMode, ~UnicodeSetsMode, ?N]
- [~UnicodeMode] ExtendedAtom[?N] Quantifier
- [~UnicodeMode] ExtendedAtom[?N]
-
- Assertion[UnicodeMode, UnicodeSetsMode, N] ::
+ Term[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
+ [+UnicodeMode] Assertion[+UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
+ [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] Quantifier
+ [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups]
+ [~UnicodeMode] QuantifiableAssertion[?WithNamedCaptureGroups] Quantifier
+ [~UnicodeMode] Assertion[~UnicodeMode, ~UnicodeSetsMode, ?WithNamedCaptureGroups]
+ [~UnicodeMode] ExtendedAtom[?WithNamedCaptureGroups] Quantifier
+ [~UnicodeMode] ExtendedAtom[?WithNamedCaptureGroups]
+
+ Assertion[UnicodeMode, UnicodeSetsMode, WithNamedCaptureGroups] ::
`^`
`$`
`\b`
`\B`
- [+UnicodeMode] `(?=` Disjunction[+UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- [+UnicodeMode] `(?!` Disjunction[+UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- [~UnicodeMode] QuantifiableAssertion[?N]
- `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
- `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)`
+ [+UnicodeMode] `(?=` Disjunction[+UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ [+UnicodeMode] `(?!` Disjunction[+UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ [~UnicodeMode] QuantifiableAssertion[?WithNamedCaptureGroups]
+ `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
- QuantifiableAssertion[N] ::
- `(?=` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)`
- `(?!` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)`
+ QuantifiableAssertion[WithNamedCaptureGroups] ::
+ `(?=` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?!` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
- ExtendedAtom[N] ::
+ ExtendedAtom[WithNamedCaptureGroups] ::
`.`
- `\` AtomEscape[~UnicodeMode, ?N]
+ `\` AtomEscape[~UnicodeMode, ?WithNamedCaptureGroups]
`\` [lookahead == `c`]
CharacterClass[~UnicodeMode, ~UnicodeSetsMode]
- `(` GroupSpecifier[~UnicodeMode]? Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)`
- `(?:` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)`
+ `(` GroupSpecifier[~UnicodeMode]? Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
+ `(?:` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?WithNamedCaptureGroups] `)`
InvalidBracedQuantifier
ExtendedPatternCharacter
@@ -48755,42 +48755,42 @@ Syntax
ExtendedPatternCharacter ::
SourceCharacter but not one of `^` `$` `\` `.` `*` `+` `?` `(` `)` `[` `|`
- AtomEscape[UnicodeMode, N] ::
+ AtomEscape[UnicodeMode, WithNamedCaptureGroups] ::
[+UnicodeMode] DecimalEscape
[~UnicodeMode] DecimalEscape [> but only if the CapturingGroupNumber of |DecimalEscape| is ≤ CountLeftCapturingParensWithin(the |Pattern| containing |DecimalEscape|)]
CharacterClassEscape[?UnicodeMode]
- CharacterEscape[?UnicodeMode, ?N]
- [+N] `k` GroupName[?UnicodeMode]
+ CharacterEscape[?UnicodeMode, ?WithNamedCaptureGroups]
+ [+WithNamedCaptureGroups] `k` GroupName[?UnicodeMode]
- CharacterEscape[UnicodeMode, N] ::
+ CharacterEscape[UnicodeMode, WithNamedCaptureGroups] ::
ControlEscape
`c` AsciiLetter
`0` [lookahead ∉ DecimalDigit]
HexEscapeSequence
RegExpUnicodeEscapeSequence[?UnicodeMode]
[~UnicodeMode] LegacyOctalEscapeSequence
- IdentityEscape[?UnicodeMode, ?N]
+ IdentityEscape[?UnicodeMode, ?WithNamedCaptureGroups]
- IdentityEscape[UnicodeMode, N] ::
+ IdentityEscape[UnicodeMode, WithNamedCaptureGroups] ::
[+UnicodeMode] SyntaxCharacter
[+UnicodeMode] `/`
- [~UnicodeMode] SourceCharacterIdentityEscape[?N]
+ [~UnicodeMode] SourceCharacterIdentityEscape[?WithNamedCaptureGroups]
- SourceCharacterIdentityEscape[N] ::
- [~N] SourceCharacter but not `c`
- [+N] SourceCharacter but not one of `c` or `k`
+ SourceCharacterIdentityEscape[WithNamedCaptureGroups] ::
+ [~WithNamedCaptureGroups] SourceCharacter but not `c`
+ [+WithNamedCaptureGroups] SourceCharacter but not one of `c` or `k`
- ClassAtomNoDash[UnicodeMode, N] ::
+ ClassAtomNoDash[UnicodeMode, WithNamedCaptureGroups] ::
SourceCharacter but not one of `\` or `]` or `-`
- `\` ClassEscape[?UnicodeMode, ?N]
+ `\` ClassEscape[?UnicodeMode, ?WithNamedCaptureGroups]
`\` [lookahead == `c`]
- ClassEscape[UnicodeMode, N] ::
+ ClassEscape[UnicodeMode, WithNamedCaptureGroups] ::
`b`
[+UnicodeMode] `-`
[~UnicodeMode] `c` ClassControlLetter
CharacterClassEscape[?UnicodeMode]
- CharacterEscape[?UnicodeMode, ?N]
+ CharacterEscape[?UnicodeMode, ?WithNamedCaptureGroups]
ClassControlLetter ::
DecimalDigit