DECIMAL_LITERAL : ('0' | '1'..'9' ('0'..'9')*) (INTEGER_TYPE_SUFFIX)? ;
FLOATING_POINT_LITERAL
: ('0'..'9')+
(
DOT ('0'..'9')* (EXPONENT)? (FLOAT_TYPE_SUFFIX)?
| EXPONENT (FLOAT_TYPE_SUFFIX)?
| FLOAT_TYPE_SUFFIX
)
| DOT ('0'..'9')+ (EXPONENT)? (FLOAT_TYPE_SUFFIX)?
;
DECIMAL_LITERALはc言語のintリテラルに一致し、FLOATING_POINT_LITERALはc言語のfloatリテラルに一致します。ただし、レクサーが3.44などのfloatに一致すると、3はルールDECIMAL_LITERALに一致します。
floatリテラルを認識させるにはどうすればよいですか?