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

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to