[antlr-interest] How to fix the ambiguous grammar

Jie Li jay23jack at gmail.com
Mon Jun 4 22:18:00 PDT 2012


Thanks Ter. Do you mean I should turn the backbracking off? If I can't, do
you have any suggestion?

Jie

On Mon, Jun 4, 2012 at 9:57 PM, Terence Parr <parrt at cs.usfca.edu> wrote:

> It sounds like you have backtracking turned on and that whichever rule
> calls 'a' has B following the reference to 'a'. When it can't figure out
> what to do with an ambiguity it picks the 1st match.
> Ter
> On Jun 4, 2012, at 9:49 PM, Jie Li wrote:
>
> > Hi all,
> >
> > I'm new to antlr and struggling to fix the grammar like below:
> >
> > a:   A
> >    | A B ;
> >
> > But this grammar doesn't support "A B" as it complains it expects the end
> > character after "A". If I switch the order of this grammar, e.g. "A B"
> > comes before "A", then it doesn't support "A" as it complains it expects
> > "B" after "A".
> >
> > Then I tried:
> >
> > a:  A
> >   | A {input.LT(1).getText().equals("B")}? B;
> >
> > It does work for both rules now. But I wonder if there is some more
> elegant
> > way?
> >
> > Thanks,
> > Jie Li
> >
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
>


More information about the antlr-interest mailing list