我目前正在使用我的MIPS汇编程序,迟早会遇到问题。这些说明如下:
JAL $000A2000
结果(十六进制)为:
0C 00 28 80
这是错误的,因为这意味着:
JAL $0000A200
当我在指令中遗漏零时,例如:
JAL $00A2000
它起作用了,结果是: 0C 02 88 00
所以,但我不想总是忽略" 0"用手。我希望ANTLR4忽略左边的第一个值。例如,我喜欢ANTLR4转向:
JAL $000A2000
进入这个:
JAL $00A2000
我还是ANTLR4的新手,还不知道如何实现这一目标。我感谢您的帮助。
答案 0 :(得分:1)
如果我不得不猜测你提到的令牌的lexer规则是什么样的,我可能会选择这个:
Stuff : '$' [0-9a-fA-F]+ ;
此规则将与$00A2000
和$000A2000
匹配,但也会匹配$f
和$C083FFa0b88200
。所有其他验证都将在代码中执行,而不是作为语法的一部分。
如果您尝试更具体地编写词法分析器或解析器规则,则会对您的代码准确报告和处理输入中发生的错误的能力产生重大负面影响。