我正在用ANTLR解析一个简单的正数:
NUMBER : ('0'..'9')+;
在
中解析此数字的建议方法是什么?byte (8 bits)
short (16 bits)
int (32 bits)
long (64 bits)
BigInteger (x bits)
?也就是说,例如,如果数字符合short
,我更愿意分配short
,而不是integer
,long
或{{1} }。
这应该尽可能高效。出于这个原因,我首先尝试BigInteger
,然后作为byte
,...,其中异常意味着应该尝试下一个类型。
答案 0 :(得分:0)
如果您的目标是Java,那么解析基本类型没有任何意义,因为目标语言有效地处理这些。因此,如果您想在语言应用程序中捕获每个标记,我建议您只定义基本类型。如果您的目标是Java,那么大整数应该作为引用类型(解析器规则)处理。如果您使用不同的目标语言,那么它可能具有不同的上下文。
primitiveType
: 'boolean'
| 'char'
| 'byte'
| 'short'
| 'int'
| 'long'
| 'float'
| 'double'
;