Nested Quasis
Mark S. Miller
erights at google.com
Mon Feb 6 18:49:31 PST 2012
On Mon, Feb 6, 2012 at 3:26 PM, Waldemar Horwat <waldemar at google.com> wrote:
> On 02/03/2012 08:07 PM, Mark S. Miller wrote:
>
> On Fri, Feb 3, 2012 at 12:58 PM, Waldemar Horwat <waldemar at google.com<mailto:
>> waldemar at google.com>> wrote:
>>
>> On 02/02/2012 06:27 PM, Waldemar Horwat wrote:
>>
>> [...]
>>
>> Note that this is more complex than just having the parser switch
>> modes for the treatment of / as division vs. regexp. Here comments and
>> white space are also affected, which can in turn the structure of the lexer
>> upside down. The kinds of cases I'm thinking of are:
>>
>> `abc$/*comment*/identifier//
>> `
>> (here we have a /**/ comment and a // comment)
>>
>>
>> There is no valid quasiHole above, so the whole thing matches a
>> QuasiOnly. The QuasiOnly includes all characters between the backticks.
>> Nothing is taken to be a comment, just like it wouldn't be if it appeared
>> within a string.
>>
>
> According to which lexical grammar? According to the one you provided
> earlier in this thread, `abc$ is a QuasiOpen token:
>
> QuasiOpen ::
> ` QuasiChar* $
>
>
> Parsing further, /*comment*/identifier is a single identifier token as far
> as the syntactic grammar is concerned.
I was imprecise. I'll try again, using only lexical grammar concepts and
making explicit where whitespace, comments, etc may appear.
Token ::
IdentifierName
Punctuator
NumericLiteral
StringLiteral
Quasi
Quasi ::
QuasiOnly
QuasiOpen QuasiHole (QuasiMiddle QuasiHole)* QuasiClose
QuasiOnly ::
` QuasiChar* `
QuasiOpen ::
` QuasiChar* $
QuasiMiddle ::
QuasiChar* $
QuasiEnd ::
QuasiChar* `
QuasiChar ::
SourceCharacter *but not one of $ or `*
$ $
$ `
$ \ EscapeSequence
QuasiHole ::
Identifier
{ Spacing* (BalancedCurlySequence Spacing*)* }
BalancedCurlySequence ::
Token *but not one of { or }*
{ Spacing* (BalancedCurlySequence Spacing*)* }
Spacing ::
WhiteSpace
LineTerminator
Comment
Within a Quasi, no character sequences are interpreted as whitespace or
comments except where indicated by Spacing above.
--
Cheers,
--MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120206/ef5dc846/attachment.html>
More information about the es-discuss
mailing list