diff --git a/spec.html b/spec.html index bc1a904013f..f1c4cfd6451 100644 --- a/spec.html +++ b/spec.html @@ -35198,31 +35198,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, NamedCaptureGroups] :: + Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] - Disjunction[UnicodeMode, UnicodeSetsMode, N] :: - Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N] - Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N] `|` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] + Disjunction[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: + Alternative[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] + Alternative[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `|` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] - Alternative[UnicodeMode, UnicodeSetsMode, N] :: + Alternative[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: [empty] - Alternative[?UnicodeMode, ?UnicodeSetsMode, ?N] Term[?UnicodeMode, ?UnicodeSetsMode, ?N] + Alternative[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] Term[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] - Term[UnicodeMode, UnicodeSetsMode, N] :: - Assertion[?UnicodeMode, ?UnicodeSetsMode, ?N] - Atom[?UnicodeMode, ?UnicodeSetsMode, ?N] - Atom[?UnicodeMode, ?UnicodeSetsMode, ?N] Quantifier + Term[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: + Assertion[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] + Atom[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] + Atom[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] Quantifier - Assertion[UnicodeMode, UnicodeSetsMode, N] :: + Assertion[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: `^` `$` `\b` `\B` - `(?=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` - `(?!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` - `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` - `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` + `(?=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` Quantifier :: QuantifierPrefix @@ -35236,13 +35236,13 @@

Syntax

`{` DecimalDigits[~Sep] `,}` `{` DecimalDigits[~Sep] `,` DecimalDigits[~Sep] `}` - Atom[UnicodeMode, UnicodeSetsMode, N] :: + Atom[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: PatternCharacter `.` - `\` AtomEscape[?UnicodeMode, ?N] + `\` AtomEscape[?UnicodeMode, ?NamedCaptureGroups] CharacterClass[?UnicodeMode, ?UnicodeSetsMode] - `(` GroupSpecifier[?UnicodeMode]? Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` - `(?:` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?N] `)` + `(` GroupSpecifier[?UnicodeMode]? Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?:` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` SyntaxCharacter :: one of `^` `$` `\` `.` `*` `+` `?` `(` `)` `[` `]` `{` `}` `|` @@ -35250,11 +35250,11 @@

Syntax

PatternCharacter :: SourceCharacter but not SyntaxCharacter - AtomEscape[UnicodeMode, N] :: + AtomEscape[UnicodeMode, NamedCaptureGroups] :: DecimalEscape CharacterClassEscape[?UnicodeMode] CharacterEscape[?UnicodeMode] - [+N] `k` GroupName[?UnicodeMode] + [+NamedCaptureGroups] `k` GroupName[?UnicodeMode] CharacterEscape[UnicodeMode] :: ControlEscape @@ -37397,11 +37397,11 @@

1. If _v_ is *true* and _u_ is *true*, then 1. Let _parseResult_ be a List containing one or more *SyntaxError* objects. 1. Else if _v_ is *true*, then - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, +UnicodeSetsMode, +N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, +UnicodeSetsMode, +NamedCaptureGroups]|). 1. Else if _u_ is *true*, then - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, ~UnicodeSetsMode, +N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, ~UnicodeSetsMode, +NamedCaptureGroups]|). 1. Else, - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, +N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, +NamedCaptureGroups]|). 1. Return _parseResult_. @@ -48962,37 +48962,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, NamedCaptureGroups] :: + [+UnicodeMode] Assertion[+UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] + [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] Quantifier + [+UnicodeMode] Atom[+UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] + [~UnicodeMode] QuantifiableAssertion[?NamedCaptureGroups] Quantifier + [~UnicodeMode] Assertion[~UnicodeMode, ~UnicodeSetsMode, ?NamedCaptureGroups] + [~UnicodeMode] ExtendedAtom[?NamedCaptureGroups] Quantifier + [~UnicodeMode] ExtendedAtom[?NamedCaptureGroups] + + Assertion[UnicodeMode, UnicodeSetsMode, NamedCaptureGroups] :: `^` `$` `\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, ?NamedCaptureGroups] `)` + [+UnicodeMode] `(?!` Disjunction[+UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + [~UnicodeMode] QuantifiableAssertion[?NamedCaptureGroups] + `(?<=` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?<!` Disjunction[?UnicodeMode, ?UnicodeSetsMode, ?NamedCaptureGroups] `)` - QuantifiableAssertion[N] :: - `(?=` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)` - `(?!` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)` + QuantifiableAssertion[NamedCaptureGroups] :: + `(?=` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?!` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?NamedCaptureGroups] `)` - ExtendedAtom[N] :: + ExtendedAtom[NamedCaptureGroups] :: `.` - `\` AtomEscape[~UnicodeMode, ?N] + `\` AtomEscape[~UnicodeMode, ?NamedCaptureGroups] `\` [lookahead == `c`] CharacterClass[~UnicodeMode, ~UnicodeSetsMode] - `(` GroupSpecifier[~UnicodeMode]? Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)` - `(?:` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?N] `)` + `(` GroupSpecifier[~UnicodeMode]? Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?NamedCaptureGroups] `)` + `(?:` Disjunction[~UnicodeMode, ~UnicodeSetsMode, ?NamedCaptureGroups] `)` InvalidBracedQuantifier ExtendedPatternCharacter @@ -49004,42 +49004,42 @@

Syntax

ExtendedPatternCharacter :: SourceCharacter but not one of `^` `$` `\` `.` `*` `+` `?` `(` `)` `[` `|` - AtomEscape[UnicodeMode, N] :: + AtomEscape[UnicodeMode, NamedCaptureGroups] :: [+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, ?NamedCaptureGroups] + [+NamedCaptureGroups] `k` GroupName[?UnicodeMode] - CharacterEscape[UnicodeMode, N] :: + CharacterEscape[UnicodeMode, NamedCaptureGroups] :: ControlEscape `c` AsciiLetter `0` [lookahead ∉ DecimalDigit] HexEscapeSequence RegExpUnicodeEscapeSequence[?UnicodeMode] [~UnicodeMode] LegacyOctalEscapeSequence - IdentityEscape[?UnicodeMode, ?N] + IdentityEscape[?UnicodeMode, ?NamedCaptureGroups] - IdentityEscape[UnicodeMode, N] :: + IdentityEscape[UnicodeMode, NamedCaptureGroups] :: [+UnicodeMode] SyntaxCharacter [+UnicodeMode] `/` - [~UnicodeMode] SourceCharacterIdentityEscape[?N] + [~UnicodeMode] SourceCharacterIdentityEscape[?NamedCaptureGroups] - SourceCharacterIdentityEscape[N] :: - [~N] SourceCharacter but not `c` - [+N] SourceCharacter but not one of `c` or `k` + SourceCharacterIdentityEscape[NamedCaptureGroups] :: + [~NamedCaptureGroups] SourceCharacter but not `c` + [+NamedCaptureGroups] SourceCharacter but not one of `c` or `k` - ClassAtomNoDash[UnicodeMode, N] :: + ClassAtomNoDash[UnicodeMode, NamedCaptureGroups] :: SourceCharacter but not one of `\` or `]` or `-` - `\` ClassEscape[?UnicodeMode, ?N] + `\` ClassEscape[?UnicodeMode, ?NamedCaptureGroups] `\` [lookahead == `c`] - ClassEscape[UnicodeMode, N] :: + ClassEscape[UnicodeMode, NamedCaptureGroups] :: `b` [+UnicodeMode] `-` [~UnicodeMode] `c` ClassControlLetter CharacterClassEscape[?UnicodeMode] - CharacterEscape[?UnicodeMode, ?N] + CharacterEscape[?UnicodeMode, ?NamedCaptureGroups] ClassControlLetter :: DecimalDigit @@ -49210,13 +49210,13 @@

Static Semantics: ParsePattern ( _patternText_, _u_, _v_ )

1. If _v_ is *true* and _u_ is *true*, then 1. Let _parseResult_ be a List containing one or more *SyntaxError* objects. 1. Else if _v_ is *true*, then - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, +UnicodeSetsMode, +N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, +UnicodeSetsMode, +NamedCaptureGroups]|). 1. Else if _u_ is *true*, then - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, ~UnicodeSetsMode, +N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[+UnicodeMode, ~UnicodeSetsMode, +NamedCaptureGroups]|). 1. Else, - 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, ~N]|). + 1. Let _parseResult_ be ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, ~NamedCaptureGroups]|). 1. If _parseResult_ is a Parse Node and _parseResult_ contains a |GroupName|, then - 1. Set _parseResult_ to ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, +N]|). + 1. Set _parseResult_ to ParseText(_patternText_, |Pattern[~UnicodeMode, ~UnicodeSetsMode, +NamedCaptureGroups]|). 1. Return _parseResult_.