如何lex 0 .. 255?

Maw*_*awg 0 antlr antlr3

我想接受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)