我想接受0到255之间的十进制数.这是我能想到的最好的:
fragment my_token :
('0'..'9') | // 0 -> 9
('1'..'9' '0'..'9') | // 0 -> 99
('1' '0'..'9' '0'..'9') | // 100 -> 199
('2' '0'..'4' '0'..'9') | // 200 -> 249
('25' '0'..'5'); // 250 -> 255
但我只是一个无知的n00b.Surelry还有更好的方法吗?
Sam*_*ell 10
如果您放松词法分析器并将检查推迟到以后,您将获得更好的结果.Lex NUMBER,当你稍后转换它时,如果值超出范围,你可以提供一个非常具体的错误信息.如果你使词法分析器严格并且有人输入256,则对于之前没有语法的人来说,产生的错误消息是难以辨认的.
NUMBER
: '0'..'9'+
;
Run Code Online (Sandbox Code Playgroud)