[antlr-interest] Re: another nondeterminism question
    mzukowski at yci.com 
    mzukowski at yci.com
       
    Wed Jul 16 11:49:05 PDT 2003
    
    
  
In fact you may need a syntactic predicate because of the linear
approximation issue:
S: ('a'|"bb")=>('a' | "bb")+
   | 'b' {$setType(B);}
   ;
Let me know, I don't have time to try it out right now.
Monty
-----Original Message-----
From: mzukowski at yci.com [mailto:mzukowski at yci.com] 
Sent: Wednesday, July 16, 2003 11:46 AM
To: antlr-interest at yahoogroups.com
Subject: RE: [antlr-interest] Re: another nondeterminism question
OK, this is an linear approximation issue.  If you had A:"aa" | "bb" things
would work.  This example is very abstract.  I would code it like this:
S: ('a' | "bb")+
   | 'b' {$setType(B);}
   ;
Look up linear approximation in the FAQ & archives.
Monty
-----Original Message-----
From: Adrian Sandor [mailto:aditsu at yahoo.com] 
Sent: Wednesday, July 16, 2003 11:26 AM
To: antlr-interest at yahoogroups.com
Subject: [antlr-interest] Re: another nondeterminism question
ok, I tried with the following grammar:
class l1 extends Lexer;
options{k=2;}
protected A: 'a' | "bb";
B: 'b';
S: (A)=>(A)+;
and I got:
ANTLR Parser Generator   Version 2.7.2   1989-2003 jGuru.com
t1.g: warning:lexical nondeterminism between rules B and S upon
t1.g:     k==1:'b'
t1.g:     k==2:<end-of-token>
t1.g:5: warning:Syntactic predicate ignored for single alternative
Adrian
--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> That's a weird bug you ran into, I think.  It should give warnings
in both
> cases.  You could solve this with a syntactic predicate:
> 
> S: (A)=>(A)+;
> 
> -----Original Message-----
> From: Adrian Sandor [mailto:aditsu at y...]
> Sent: Friday, July 11, 2003 9:54 AM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] another nondeterminism question
> 
> 
> why do I get a nondeterminism warning for this grammar:
> 
> class l1 extends Lexer;
> options{k=2;}
> protected A: 'a' | "bb";
> B: 'b';
> S: (A)+;
> 
> but I don't get any warning when I change S to:
> 
> S: A (A)+;
> 
> and how can I solve it for the first case?
> I tried many things but to no avail...
> 
> thanks
> Adrian
> 
> 
>  
> 
> 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/ 
 
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