On 02/07/2017 06:39, Michael Dyck wrote:
On 17-02-06 07:32 PM, Waldemar Horwat wrote:
On 02/04/2017 07:20, Michael Dyck wrote:
On 17-02-03 05:32 PM, Waldemar Horwat wrote:
On 02/03/2017 08:17, Michael Dyck wrote:
On 17-02-02 06:23 PM, Waldemar Horwat wrote:

Lookahead restrictions fit very well into an LR(1) engine

Again: Great, but how? E.g., do you pre-process the grammar, modify the
construction of the automaton, and/or modify the operation of the parser?

For each state × token combination, the automaton describes what happens
when you're in state S and see a token T.  The lookahead restrictions remove
possible transitions; without them there would be ambiguities where a given
state × token combination would want to do two incompatible things.

Okay, so do you generate the automaton (ignoring lookahead restrictions)
and then remove transitions (using lookahead restrictions)? Or do you
integrate the lookahead-restrictions into the generation of the automaton?

It's integrated.  You can't generate a valid automaton without the lookahead
restrictions.

So, when you're making LR items for a production with a lookahead-restriction 
(l-r), do you:

-- treat the l-r as a (nullable) symbol, so that you get an item with the dot 
before the l-r, and one with the dot after, or

-- treat the l-r as occurring between two adjacent symbols, so that you get an item where 
the dot is "at" the l-r, or

-- something else?

It's something else — it's directly tied into the generation of the automaton 
states.  Each automaton state contains a collection of possible places in the 
expansions of grammar rules that the state can represent.  Following a terminal 
symbol T from a state A leads to a state B.  A lookahead restriction prevents 
state B's collection from including expansions that would have been prohibited 
by the lookahead restriction on T.  If that generates an inconsistency (for 
example, if there are two ways to get to an identical state, one with a 
lookahead restriction and one without), the grammar validation fails.

    Waldemar

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

Reply via email to