MIPS 注册正则表达式

MIPS registers regex

我正在 mips 汇编解析器中工作,使用 yacc 和 lex,我需要识别给定指令中的寄存器。该寄存器可以是:

我尝试完成第一部分($t0,...,$t31R0,...$R31),但没有成功。我的正则表达式是 ($t|R)([1|2][0-9]|3[0-1]|[0-9])。正如您在图像 1 中看到的,正则表达式匹配 R56 寄存器中的 R5,这是不需要的。我该如何解决这个问题?

我会使用:

((?:$t|[rR])(?:[12]?[0-9]|3[01]))\b|($zero)

匹配:

  • $tRr 后跟从 0 到 32 的数字(感谢单词边界 \b
  • $zero

参见 live demo