On 01/11/2017 10:28, Michael Dyck wrote:
In the past, it has been said (usually by Brendan Eich) that TC39 intends that the ECMAScript
grammar be LR(1). Is that still the case? (I'm not so much asking about the "1", but more
about the "LR".)
If so, I'm wondering how lookahead-restrictions (e.g., [lookahead <!
terminals]) fit into the LR approach. It seems like there are three possibilities:
- modify the grammar (before the parser is constructed),
- modify the construction of the parser, and/or
- modify the operation of the parser.
It's not clear to me that any of these (or any combination of these) will work.
Has anyone algorithmically generated an LR parser from the spec grammar? If so,
how did you you handle lookahead-restrictions?
I'm the source of the LR(1) condition. I've been doing that ever since
ECMAScript Edition 3, and in fact am using the LR parser to help design and
debug the spec. I have an implementation of the parser with a few extensions
to the LR grammar, including support for parametrized productions, lookahead
restrictions, and lexer-parser feedback used to disambiguate things such as
what token / will start. I validate various things such as making sure that
there is no place where both an identifier and a regular expression can occur.
Waldemar
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss