[antlr-interest] Disambiguating Decimal and Integer '.'

Kaleb Pederson kaleb.pederson at gmail.com
Thu Oct 1 17:18:51 PDT 2009


Thanks Jim!

--Kaleb

http://twitter.com/kalebpederson
http://kalebpederson.com

On Thursday 01 October 2009 03:49:53 pm Jim Idle wrote:
> Wiki - front page - lexing for dot, range, .....
> 
> http://www.antlr.org/wiki/display/ANTLR3/Lexer+grammar+for+floating+point%2C+dot%2C+range%2C+time+specs
> 
> This grammar also caters for 999.toString() type things as it comes from JavaFX.
> 
> Jim
> 
> > -----Original Message-----
> > From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> > bounces at antlr.org] On Behalf Of Kaleb Pederson
> > Sent: Thursday, October 01, 2009 3:47 PM
> > To: Gavin Lambert
> > Cc: antlr-interest at antlr.org
> > Subject: Re: [antlr-interest] Disambiguating Decimal and Integer '.'
> > 
> > On Thursday 01 October 2009 01:06:54 pm Gavin Lambert wrote:
> > > At 08:12 2/10/2009, Kaleb Pederson wrote:
> > >  >INTEGER
> > >  >    :   NUMBER+;
> > >  >
> > >  >DECIMAL
> > >  >    :   INTEGER '.' INTEGER;
> > >
> > > You should have a look at the wiki and the mailing list
> > > archives.  This is a fairly common problem with a fairly simple
> > > solution:
> > 
> > I've looked, read, and re-read, but apparently I don't know exactly
> > what to look for, so thanks for pointing it out.  I'd be interested to
> > any references in the wiki or archives if you have them.  My google-fu
> > and not-so-random searching didn't bring up anything useful.
> > 
> > > fragment INTEGER : NUMBER+ ;
> > >
> > > DECIMAL
> > >    :  INTEGER ('.' INTEGER | { $type = INTEGER; })
> > >    ;
> > 
> > This did not work, nor did adding an options {k=2;} statement.
> > 
> > > If that doesn't work by itself, you can add a predicate to force a
> > > two-character lookahead:
> > >
> > > DECIMAL
> > >    :  INTEGER (('.' NUMBER) => '.' INTEGER | { $type = INTEGER; })
> > >    ;
> > 
> > This worked great, thank you!  I would not have thought to try
> > something like that.  I was attempting to have the DECIMAL non-terminal
> > avoided, rather than allowing it to match the same thing as an INTEGER
> > and changing the type on it.  Perhaps that caused some tunnel vision.
> > 
> > --Kaleb
> > 
> > http://twitter.com/kalebpederson
> > http://kalebpederson.com
> > 
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> > email-address
> 
> 
> 
> 
> 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