在ANTLR4中忽略第一个“0”?

时间:2014-09-13 14:45:31

标签: antlr4

我目前正在使用我的MIPS汇编程序,迟早会遇到问题。这些说明如下:

JAL $000A2000

结果(十六进制)为:

0C 00 28 80

这是错误的,因为这意味着:

JAL $0000A200

当我在指令中遗漏零时,例如:

JAL $00A2000

它起作用了,结果是:     0C 02 88 00

所以,但我不想总是忽略" 0"用手。我希望ANTLR4忽略左边的第一个值。例如,我喜欢ANTLR4转向:

JAL $000A2000

进入这个:

JAL $00A2000

我还是ANTLR4的新手,还不知道如何实现这一目标。我感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果我不得不猜测你提到的令牌的lexer规则是什么样的,我可能会选择这个:

Stuff : '$' [0-9a-fA-F]+ ;

此规则将与$00A2000$000A2000匹配,但也会匹配$f$C083FFa0b88200。所有其他验证都将在代码中执行,而不是作为语法的一部分。

如果您尝试更具体地编写词法分析器或解析器规则,则会对您的代码准确报告和处理输入中发生的错误的能力产生重大负面影响。