java - 将字符串格式化为字符串为byte / short / integer / long

时间:2015-01-01 10:59:03

标签: java parsing numbers antlr antlr4

我正在用ANTLR解析一个简单的正数:

NUMBER : ('0'..'9')+;

中解析此数字的建议方法是什么?
byte (8 bits)
short (16 bits)
int (32 bits)
long (64 bits)
BigInteger (x bits)

?也就是说,例如,如果数字符合short,我更愿意分配short,而不是integerlong或{{1} }。

这应该尽可能高效。出于这个原因,我首先尝试BigInteger,然后作为byte,...,其中异常意味着应该尝试下一个类型。

1 个答案:

答案 0 :(得分:0)

如果您的目标是Java,那么解析基本类型没有任何意义,因为目标语言有效地处理这些。因此,如果您想在语言应用程序中捕获每个标记,我建议您只定义基本类型。如果您的目标是Java,那么大整数应该作为引用类型(解析器规则)处理。如果您使用不同的目标语言,那么它可能具有不同的上下文。

primitiveType
    :   'boolean'
    |   'char'
    |   'byte'
    |   'short'
    |   'int'
    |   'long'
    |   'float'
    |   'double'
    ;