[antlr-interest] ANTLR Optional statements
Tom Moog
tmoog at polhode.com
Thu Apr 11 15:27:15 PDT 2002
Ahhh. I was misled by the difference in antlr2 and
pccts syntax. I saw the (...)? and didn't see the
"=>" on the far right side. My mistake.
Yes, this was pccts fix #196, I think. You have to
use a special option (-alpha) to get a warning - so
it's a two pass algorithm. After you know there
is a "(alpha)? beta" problem you can verify it with
-alpha. A little bit too late, usually.
Tom
On Thu, 11 Apr 2002, Terence Parr wrote:
>
> On Wednesday, April 10, 2002, at 03:30 PM, Tom Moog wrote:
>
> >
> > Part 1:
> >
> > The extra EOF in the follow set is a general problem.
> > When antlr2 or pccts analyzes a grammar and finds an
> > orphan rule they assume that it is a start rule. Since
> > every start rule should have EOF in the follow-set they
> > add one. They should probably warn the user, but they
> > don't.
>
> Well, you might have a grammar with lots of start rules...should one
> really get a warning for that? Certainly it would be nice to be able to
> get a list of these suckers. Not sure a warning is proper since every
> single grammar will get a warning then ;)
>
> > There is a warning about this in the "Notes For New Users
> > of pccts" and why pccts has a "-info o" option which
> > lists all orphan rules.
>
> Ah...you've beaten me to the punch :) Thanks for all your hard work on
> PCCTS!
>
> > Part 2
> >
> > If antlr2 doesn't see class_head, then obviously it will
> > compute the follow set improperly. Sounds like a bug
>
> It sees class_head in the predicate but not in the list of rule
> references apparently. Therefore a standard FOLLOW will not compute it
> properly. I think I remember saying that a predicate is not part of the
> grammar and is merely there to show a minimum lookahead language that
> predicts an alternative. It should not be included in FOLLOW
> computations. HOWEVER, it needs to compute FIRST sets properly. If the
> lookahead can see past class_head it must include what follows that
> specific reference since it knws the context of the FOLLOW.
>
> > to me. My hypothesis is that it is skipping the block
> > following the syntax predicate in computing first and follow
> > sets. This is correct for first sets, but incorrect for
> > follow sets.
>
> ANTLR computes standard static k lookahead to determine if the backtrack
> is necessary even if you specify one. I should be computing this on the
> alternative not the predicate.
>
> Tom: is this similar to the error you pointed out in PCCTS that you
> fixed regarding syn preds?
>
> Ter
>
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list