From 421a6aeb9df0e85289312b027274cb6336dfd267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Tue, 16 May 2017 01:02:12 +0200 Subject: [PATCH] Normative: Only allow standalone reverse solidus in Annex B regular expression when immediately followed by `c` (#910) --- spec.html | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spec.html b/spec.html index 02867306da..88cb4c2bda 100644 --- a/spec.html +++ b/spec.html @@ -647,6 +647,7 @@

Grammar Notation

DecimalDigit [lookahead <! DecimalDigit]

matches either the letter `n` followed by one or more decimal digits the first of which is even, or a decimal digit not followed by another decimal digit.

+

Similarly, if the phrase “[lookahead ∈ _set_]” appears in the right-hand side of a production, it indicates that the production may only be used if the immediately following input token sequence is a member of the given _set_. If the _set_ consists of a single terminal the phrase “[lookahead = _terminal_]” may be used.

If the phrase “[no |LineTerminator| here]” appears in the right-hand side of a production of the syntactic grammar, it indicates that the production is a restricted production: it may not be used if a |LineTerminator| occurs in the input stream at the indicated position. For example, the production:

ThrowStatement : @@ -29444,7 +29445,7 @@

ClassEscape

The production ClassEscape :: `-` evaluates as follows:

- 1. Return the CharSet containing the single character - U+002D (HYPHEN-MINUS). + 1. Return the CharSet containing the single character `-` U+002D (HYPHEN-MINUS).

The production ClassEscape :: CharacterEscape evaluates as follows:

@@ -38148,6 +38149,7 @@

Syntax

ExtendedAtom :: `.` `\` AtomEscape[~U] + `\` [lookahead == `c`] CharacterClass[~U] `(` Disjunction[~U] `)` `(` `?` `:` Disjunction[~U] `)` @@ -38160,7 +38162,7 @@

Syntax

`{` DecimalDigits `,` DecimalDigits `}` ExtendedPatternCharacter :: - SourceCharacter but not one of `^` `$` `.` `*` `+` `?` `(` `)` `[` `|` + SourceCharacter but not one of `^` `$` `\` `.` `*` `+` `?` `(` `)` `[` `|` AtomEscape[U] :: [+U] DecimalEscape @@ -38218,6 +38220,11 @@

Pattern Semantics

Assertion () evaluation rules for the Assertion :: `(` `?` `=` Disjunction `)` and Assertion :: `(` `?` `!` Disjunction `)` productions are also used for the |QuantifiableAssertion| productions, but with |QuantifiableAssertion| substituted for |Assertion|.

Atom () evaluation rules for the |Atom| productions except for Atom :: PatternCharacter are also used for the |ExtendedAtom| productions, but with |ExtendedAtom| substituted for |Atom|. The following evaluation rules are also added:

+

The production ExtendedAtom :: `\` [lookahead == `c`] evaluates as follows:

+ + 1. Let _A_ be the CharSet containing the single character `\\` U+005C (REVERSE SOLIDUS). + 1. Call CharacterSetMatcher(_A_, *false*) and return its Matcher result. +

The production ExtendedAtom :: InvalidBracedQuantifier evaluates as follows:

1. Throw a *SyntaxError* exception. @@ -38272,7 +38279,7 @@

Runtime Semantics: CharacterRangeOrUnion ( _A_, _B_ )

1. If _Unicode_ is *false*, then 1. If _A_ does not contain exactly one character or _B_ does not contain exactly one character, then - 1. Let _C_ be the CharSet containing the single character - U+002D (HYPHEN-MINUS). + 1. Let _C_ be the CharSet containing the single character `-` U+002D (HYPHEN-MINUS). 1. Return the union of CharSets _A_, _B_ and _C_. 1. Return CharacterRange(_A_, _B_).