On May 31, 2011, at 9:34 PM, Brendan Eich <[email protected]> wrote:
> On May 31, 2011, at 9:08 PM, Kam Kasravi wrote: > >> On May 31, 2011, at 2:55 PM, Brendan Eich <[email protected]> wrote: >> >>> On May 31, 2011, at 2:30 PM, Waldemar Horwat wrote: >>> >>>> I would not want to use anything like a PEG to standardize a grammar. >>>> Here's why: >>>> >>>> PEG being unambiguous by construction simply means that it resolves all >>>> ambiguities by picking the earliest rule. This turns all rules following >>>> the first one into negative rules: X matches Z only if it DOESN'T match a >>>> Y or a Q or a B or .... You could pick the same strategy to disambiguate >>>> an LR(1) grammar, and it would be equally bad. > > > [just noting you are replying to Waldemar's words here, not mine. /be] > >> PEGs use of ordered choice provides an opportunity to minimize backtracking, >> but it still backtracks given a nonterminal where the first ordered choice >> is incorrect. A PEG must return one parse tree or an error after potentially >> exhausting all choices (unlike GLR). > > Yes. The problem with PEGs is not ambiguity (multiple parse trees for one > sentence) but the negative-rule future hostility problem that Waldemar cited. > That is hard to see at any given instant. It comes up when evolving a > language. > > >> I believe there are differing motivations to pick a parser depending on your >> goals, if you're experimenting with the grammar or want a parser to >> transform an extended grammar then PEGs make alot of sense because they >> closely matche the BNF grammar and it's easy to introduce new grammar rules. >> It's likely PEGs could provide diagnostics related to LR(1) ambiguity, at >> least with pegjs it looks like this could be built into the algorithm. I >> understand the motivation to avoid any parser which tolerates ambiguous >> LR(1) grammars, but PEGs can be great tools given the LR(1) requirement is >> enforced. > > This matches Tom's testimony. > > At this point I'm working under assumption ES.next sticks with the LR(1) > grammar. First target: destructuring, using an extended Reference type. There > are alternatives (thanks to dherman for discussion today about this) but I > think this is the minimal patch to ES5. > > Arrow function syntax can be handled similarly, provided Expression covers > ArrowFormalParameters. But that is a strawman, so it'll go after > destructuring. There was no suggestion on my part to deviate from LR(1), rather provide some info on PEG parsers annd their ability to parse ECMA-262 5th Edition and some proposed strawmen extensions. Its valuable to know the strengths of different types of parsers and the types of parsers currently in action. Is it a given that the grammar extensions in the various strawmen are all LR(1)? > > /be
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

