我有一个简单的 antlr 规则来捕捉像“running.exception=2.j=15”这样的短语,我想确定在这种情况下初始化为 2 的值。
但是,ANTLR 将 2. 视为浮点数。反正有没有让它识别为int?
我的规则:
exception
:
(
ID*
'.exception='
INT
'.'
ID*
);
我有一个简单的 antlr 规则来捕捉像“running.exception=2.j=15”这样的短语,我想确定在这种情况下初始化为 2 的值。
但是,ANTLR 将 2. 视为浮点数。反正有没有让它识别为int?
我的规则:
exception
:
(
ID*
'.exception='
INT
'.'
ID*
);
尝试这样的事情:
grammar T;
parse
: (t=. {System.out.printf("\%-10s '\%s'\n", tokenNames[$t.type], $t.text);})* EOF
;
FLOAT
: DIGIT+ ( ('.' DIGIT)=> '.' DIGIT+
| {$type=INT;}
)
| '.' DIGIT+
;
DOT
: '.'
;
SPACE
: ' ' {skip();}
;
fragment DIGIT : '0'..'9';
fragment INT : ;
它将"0.12 .34 56. 78"
像这样解析输入:
浮动'0.12' 浮动'.34' INT'56' 点'。 INT'78'