help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HyperTalk Grammar, Again


From: Hans Aberg
Subject: Re: HyperTalk Grammar, Again
Date: Mon, 21 Jan 2002 15:56:10 +0100

At 20:59 -0500 2002/01/20, Anthony DeRobertis wrote:
>I think it's about time I posted what I have of the grammar. It's 480 lines,
>so I'll just give a URL:
>  <http://freecard.sourceforge.net/InterpreterExpirement/parser.y>
>You'll need to find a nice 132-character display to make it readable ---
>sorry about that. Also, I use 4-character tabs...

I can give you inputs how I fiddle around with this grammar:

Bison says that you have a shift/reduce conflict in
  object_descr:
    part_descr
  | part_descr OF card_descr

One way to test what the problem is to introduce an extra token, and
replace to see if the conflict goes away. For example
  %token FOO
  object_descr:
    FOO
  | FOO OF card_descr
which it does. This means that the problem is that part_descr cannot
distinguish between rules when/not followed by OF.

Roughly speaking, Bison's algorithm would look at the items (where the . is
a pars so far attained)
(1)  object_descr -> part_descr .
(2)  object_descr -> part_descr . OF card_descr
If we want to distinguish between these two rules, we can look at
FOLLOW(part_descr), all token strings of length <= 1 that can immediately
follow this nonterminal.

For simplicity, cut down the grammar (which will keep the shift/reduce
conflict) to:
  factor: INTEGER | object_descr
  object_descr: part_descr | part_descr OF
  part_descr: BUTTON factor

Then:
  FOLLOW(part_descr) contains FOLLOW(factor)
  FOLLOW(factor) contains FOLLOW(object_descr)
  FOLLOW(object_descr) contains {OF}
Thus:
  FOLLOW(part_descr) = {INTEGER, OF, BUTTON}
Since OF is in this set, there is no way to distinguish between items (1)
and (2) above by looking at the following token alone.

If you want to check if LR(n) help you out, I think (but I am not exactly
sure on the theory) you could compute FOLLOW_n(part_descr).

But I tend to think that you have not thought sufficiently about how OF
should appropriately be put into your grammar.

  Hans Aberg





reply via email to

[Prev in Thread] Current Thread [Next in Thread]