[antlr-interest] How does INTEGER+ '.' INTEGER+ match "2."?

Ken Klose kenklose at gmail.com
Sun Aug 8 17:35:22 PDT 2010


Thanks for replying.

2. is not a valid PRICE.  PRICE should have at least 1 digit following the
'.'.  In the context of the string that I am trying to match "2." doesn't
have any particular significance, it is neither an INTEGER nor a PRICE.  It
is simply an INTEGER following by an SYMBOL token.  What I don't understand
is why ANTLR is getting hung up trying to match it as a PRICE when it
doesn't conform to the PRICE specification.  PRICE specifies another INTEGER
following the '.' which this input doesn't have.

On Sun, Aug 8, 2010 at 7:28 PM, Gerald Rosenberg <gerald at certiv.net> wrote:

>
> ------ Original Message (Sunday, August 08, 2010 6:42:55 PM) From: Ken
> Klose ------
> Subject: [antlr-interest] How does INTEGER+ '.' INTEGER+ match "2."?
>
>  INTEGER: DIGIT+;
>> PRICE: INTEGER '.' INTEGER;
>>
> Integer and price are ambiguous and, if "2." is a valid price, need to make
> the decimal field optional.
>
> Try:
>
> INTEGER : DIGIT+
>                        (  '.' (DIGIT+)? { $type=PRICE; }  // define PRICE
>  in the token block
>                         |  // just an integer
>                        )
>                ;
>
>
>
>


More information about the antlr-interest mailing list