diff --git a/spec.html b/spec.html
index 0eb35ec774f..d847205005b 100644
--- a/spec.html
+++ b/spec.html
@@ -14164,7 +14164,7 @@
Static Semantics: MV
The MV of SignedInteger :: `-` DecimalDigits is the negative of the MV of |DecimalDigits|.
- The MV of DecimalDigit :: `0` or of HexDigit :: `0` or of OctalDigit :: `0` or of BinaryDigit :: `0` is 0.
+ The MV of DecimalDigit :: `0` or of HexDigit :: `0` or of OctalDigit :: `0` or of LegacyOctalEscapeSequence :: `0` or of BinaryDigit :: `0` is 0.
The MV of DecimalDigit :: `1` or of NonZeroDigit :: `1` or of HexDigit :: `1` or of OctalDigit :: `1` or of BinaryDigit :: `1` is 1.
@@ -14365,6 +14365,7 @@ Syntax
EscapeSequence ::
CharacterEscapeSequence
+ `0` [lookahead <! DecimalDigit]
LegacyOctalEscapeSequence
NonOctalDecimalEscapeSequence
HexEscapeSequence
@@ -14387,11 +14388,15 @@ Syntax
`u`
LegacyOctalEscapeSequence ::
- OctalDigit [lookahead <! OctalDigit]
+ `0` [lookahead <- {`8`, `9`}]
+ NonZeroOctalDigit [lookahead <! OctalDigit]
ZeroToThree OctalDigit [lookahead <! OctalDigit]
FourToSeven OctalDigit
ZeroToThree OctalDigit OctalDigit
+ NonZeroOctalDigit ::
+ OctalDigit but not `0`
+
ZeroToThree :: one of
`0` `1` `2` `3`
@@ -14416,22 +14421,11 @@ Syntax
<LF> and <CR> cannot appear in a string literal, except as part of a |LineContinuation| to produce the empty code points sequence. The proper way to include either in the String value of a string literal is to use an escape sequence such as `\\n` or `\\u000A`.
- Supplemental Syntax
- When processing an instance of the production LegacyOctalEscapeSequence :: OctalDigit the following production is used to refine the interpretation of |LegacyOctalEscapeSequence|.
-
- StrictZeroEscapeSequence ::
- `0` [lookahead <! DecimalDigit]
-
-
Static Semantics: Early Errors
EscapeSequence :: LegacyOctalEscapeSequence
-
-
- - It is a Syntax Error if the source code matching this production is strict mode code and |EscapeSequence| is not covering a |StrictZeroEscapeSequence|.
-
-
+
EscapeSequence :: NonOctalDecimalEscapeSequence
@@ -14486,6 +14480,9 @@ Static Semantics: SV
-
The SV of SingleStringCharacter :: LineContinuation is the empty String.
+ -
+ The SV of EscapeSequence :: `0` is the String value consisting of the code unit 0x0000 (NULL).
+
-
The SV of CharacterEscapeSequence :: SingleEscapeCharacter is the String value consisting of the code unit whose value is determined by the |SingleEscapeCharacter| according to .
@@ -41516,15 +41513,13 @@ Lexical Grammar
+
- When processing an instance of the production the following production is used to refine the interpretation of |LegacyOctalEscapeSequence|.
-
-
@@ -43071,7 +43066,7 @@ The Strict Mode of ECMAScript
A conforming implementation, when processing strict mode code, must disallow instances of the productions NumericLiteral :: LegacyOctalIntegerLiteral and DecimalIntegerLiteral :: NonOctalDecimalIntegerLiteral.
- A conforming implementation, when processing strict mode code, must disallow instances of the production EscapeSequence :: LegacyOctalEscapeSequence that do not cover a |StrictZeroEscapeSequence|, and instances of the production EscapeSequence :: NonOctalDecimalEscapeSequence.
+ A conforming implementation, when processing strict mode code, must disallow instances of the productions EscapeSequence :: LegacyOctalEscapeSequence and EscapeSequence :: NonOctalDecimalEscapeSequence.
Assignment to an undeclared identifier or otherwise unresolvable reference does not create a property in the global object. When a simple assignment occurs within strict mode code, its |LeftHandSideExpression| must not evaluate to an unresolvable Reference. If it does a *ReferenceError* exception is thrown (). The |LeftHandSideExpression| also may not be a reference to a data property with the attribute value { [[Writable]]: *false* }, to an accessor property with the attribute value { [[Set]]: *undefined* }, nor to a non-existent property of an object whose [[Extensible]] internal slot has the value *false*. In these cases a `TypeError` exception is thrown ().