[英]java - parse number formatted as string to byte/short/integer/long
我正在用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'
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.