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