Use subset directive grammar

View: New views
3 Messages — Rating Filter:   Alert me  

Use subset directive grammar

by Mike Samuel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

From section 14.1 of
http://wiki.ecmascript.org/lib/exe/fetch.php?id=es3.1%3Aes3.1_proposal_working_draft&cache=cache&media=es3.1:es5-tc392008-040.pdf

    A Directive Prologue is a sequence of zero or more
ExpressionStatement productions,
    each of which having an Expression consists entirely of a
StringLiteral, that occur as the initial
    SourceElement productions of a Program or FunctionBody.

What does "consists entirely" mean?

From the grammar in the appendix, to get from ExpressionStatement to
StringLiteral, I have to go through the following grammar chain:
    ExpressionStatement -> AssignmentExpression ->
ConditionalExpression -> (lots of operator precedence elided)
    -> LeftHandSideExpression -> NewExpression -> MemberExpression ->
PrimaryExpression -> Literal -> StringLiteral

One way to define "consists entirely" might be: an A that consists
entirely of B if it matches A and B and all tokens were consumed by
matching B.
That definition is consistent with
  "use strict"
but not
  "use strict";
since the ";" is actually part of the ExpressionStatement production.

Is there a definition of "consists entirely" that matches
  "use strict";
and
  "use strict"
but not
  ("use strict");
?

Or can the last be part of a directive prologue?
_______________________________________________
es-discuss mailing list
es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss

RE: Use subset directive grammar

by Allen Wirfs-Brock-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Nice catch...it looks like I need to mention the semicolon (which may be supplied by automatic semicolon insertion).

The parentheses form is not intended to be a directive.

allen

>-----Original Message-----
>From: es-discuss-bounces@... [mailto:es-discuss-
>bounces@...] On Behalf Of Mike Samuel
>Sent: Monday, September 21, 2009 6:33 PM
>To: es-discuss@...
>Subject: Use subset directive grammar
>
>From section 14.1 of
>http://wiki.ecmascript.org/lib/exe/fetch.php?id=es3.1%3Aes3.1_proposal_w
>orking_draft&cache=cache&media=es3.1:es5-tc392008-040.pdf
>
>    A Directive Prologue is a sequence of zero or more
>ExpressionStatement productions,
>    each of which having an Expression consists entirely of a
>StringLiteral, that occur as the initial
>    SourceElement productions of a Program or FunctionBody.
>
>What does "consists entirely" mean?
>
>From the grammar in the appendix, to get from ExpressionStatement to
>StringLiteral, I have to go through the following grammar chain:
>    ExpressionStatement -> AssignmentExpression ->
>ConditionalExpression -> (lots of operator precedence elided)
>    -> LeftHandSideExpression -> NewExpression -> MemberExpression ->
>PrimaryExpression -> Literal -> StringLiteral
>
>One way to define "consists entirely" might be: an A that consists
>entirely of B if it matches A and B and all tokens were consumed by
>matching B.
>That definition is consistent with
>  "use strict"
>but not
>  "use strict";
>since the ";" is actually part of the ExpressionStatement production.
>
>Is there a definition of "consists entirely" that matches
>  "use strict";
>and
>  "use strict"
>but not
>  ("use strict");
>?
>
>Or can the last be part of a directive prologue?
>_______________________________________________
>es-discuss mailing list
>es-discuss@...
>https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss

Parent Message unknown RE: Use subset directive grammar

by Allen Wirfs-Brock-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Here's what I'm current going with:

A Directive Prologue is the longest sequence of ExpressionStatement productions occurring as the initial SourceElement productions of a Program or FunctionBody and where each ExpressionStatement in the sequence consists entirely of a StringLiteral token followed a semicolon. The semicolon may appear explicitly or may be inserted by automatic semicolon insertion. A Directive Prologue may be an empty sequence.

>-----Original Message-----
>From: es5-discuss-bounces@... [mailto:es5-discuss-
>bounces@...] On Behalf Of David-Sarah Hopwood
>Sent: Monday, September 21, 2009 8:35 PM
>To: es5-discuss@...
>Subject: Re: Use subset directive grammar
>
>Mike Samuel wrote:
>>>From section 14.1 of
>>
>http://wiki.ecmascript.org/lib/exe/fetch.php?id=es3.1%3Aes3.1_proposal_w
>orking_draft&cache=cache&media=es3.1:es5-tc392008-040.pdf
>>
>>     A Directive Prologue is a sequence of zero or more
>> ExpressionStatement productions,
>>     each of which having an Expression consists entirely of a
>> StringLiteral, that occur as the initial
>>     SourceElement productions of a Program or FunctionBody.
>>
>> What does "consists entirely" mean?
>>
>>>From the grammar in the appendix, to get from ExpressionStatement to
>> StringLiteral, I have to go through the following grammar chain:
>>     ExpressionStatement -> AssignmentExpression ->
>> ConditionalExpression -> (lots of operator precedence elided)
>>     -> LeftHandSideExpression -> NewExpression -> MemberExpression ->
>> PrimaryExpression -> Literal -> StringLiteral
>>
>> One way to define "consists entirely" might be: an A that consists
>> entirely of B if it matches A and B and all tokens were consumed by
>> matching B.
>> That definition is consistent with
>>   "use strict"
>> but not
>>   "use strict";
>> since the ";" is actually part of the ExpressionStatement production.
>
>Hmm. An error in this definition was pointed out before by Jim Blandy:
><https://mail.mozilla.org/pipermail/es5-discuss/2009-August/003195.html>
>but the attempted fix seems to have been incorrect.
>
>As I suggested then, it should say:
>
>  A Directive Prologue is a sequence of zero or more ExpressionStatement
>  productions, each of which consists, excluding any terminating
>semicolon,
>  entirely of a StringLiteral, that occur as the initial SourceElement
>  productions of a Program or FunctionBody.
>
>"having an Expression that consists entirely of a StringLiteral" is
>wrong.
>
>--
>David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com
>
>_______________________________________________
>es5-discuss mailing list
>es5-discuss@...
>https://mail.mozilla.org/listinfo/es5-discuss
_______________________________________________
es-discuss mailing list
es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss