JSON text is not a subset of PrimaryExpression
richard.gibson at gmail.com
Wed Jul 19 03:16:44 UTC 2017
Another relevant option: Feature Request: Make ECMA262 a superset of JSON
On Tue, Jul 11, 2017 at 9:33 AM, Mike Samuel <mikesamuel at gmail.com> wrote:
> https://tc39.github.io/ecma262/#sec-json.parse says
> Valid JSON text is a subset of the ECMAScript PrimaryExpression syntax
> as modified by Step 4 above. Step 2 verifies that JText conforms to
> that subset, and step 6 verifies that that parsing and evaluation
> returns a value of an appropriate type.
> IIUC, if JSON text where a subset of PrimaryExpression then there
> should be no string that parses via JSON.parse which does not eval
> when wrapped in parentheses.
> On recent (Chrome, Safari, Firefox),
> var s = String.fromCharCode(0x22, 0x2028, 0x22)
> JSON.parse(s); // Passes
> eval('(' + s + ')'); // raises SyntaxError
> I believe the only reason it's not a subset is that both exclude line
> terminators from quoted string bodies but JSON does not treat U+2028
> and U+2029 as line terminator chars while EcmaScript does.
> Could we change "is a subset of" to "is almost a subset of" or "is a
> subset (modulo LineTerminators) of"?
> Some related discussion at
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss