[antlr-interest] lexer: matching float vs int

Olya Krachina okrachin at purdue.edu
Tue Sep 9 09:19:30 PDT 2008


I still get the same error, even with your suggestion.

Quoting Chris Rebert <cvrebert at gmail.com>:

> I think you might need to left-factor here.
> Have you tried:
> 
> FLOAT: INT? '.' INT;
> 
> -Chris
> 
> Sent from my iPod
> 
> On Sep 8, 2008, at 9:01 PM, Olya Krachina <okrachin at purdue.edu> wrote:
> 
> > Hello,
> > I am new to antlr and i seem to be stuck on this.
> > i need to have 2 datatypes defined: int and float, currently i have  
> > them defined
> > like this in my .g file:
> >
> > INT:      ('0'..'9')+;
> > FLOAT:    ('0'..'9')*('.')('0'..'9')+ ;
> >
> > So, this does not work, when it comes across an int i think it tries  
> > to match
> > the longest string, i.e. float but finds space instead of '.' (since  
> > its an int)
> > and bails out.
> >
> > ps: i know this is more a regexp question, but if someone could help  
> > out, I
> > would greatly appreciate it.
> >
> > thanks
> >
> >
> > 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