我是本节的新手,我想识别以下范围[1-3] [0-9]中的两位数整数。 我把它写成
goal : firstD secondD WS firstD secondD;
firstD : '1'|'2'|'3';
secondD : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' ;
WS : (' '|'\t'|'\n'|'\r')+ {skip();} ;
但这会产生MismatchedTokenException。我的语法有什么问题吗?
答案 0 :(得分:1)
您获得了MismatchedTokenException
,因为您在WS
规则中使用了goal
规则。但是这个WS
规则来自词法分析器skip
。从goal
规则中删除它,或从{skip();}
中删除WS
部分。
答案 1 :(得分:0)
试试这个白色空间:
WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
;
并从目标定义中删除WS。