[antlr-interest] How to fix the ambiguous grammar
    Terence Parr 
    parrt at cs.usfca.edu
       
    Mon Jun  4 21:57:24 PDT 2012
    
    
  
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