我有一个简单的antlr规则来捕获像“running.exception = 2.j = 15”这样的短语,我想确定在这种情况下初始化为2的值。
然而,ANTLR将2.视为浮动。反正有没有把它识别为int?
我的规则:
exception
:
(
ID*
'.exception='
INT
'.'
ID*
);
答案 0 :(得分:3)
尝试这样的事情:
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"
,如下所示:
FLOAT '0.12' FLOAT '.34' INT '56' DOT '.' INT '78'