MIPS 注册正则表达式
MIPS registers regex
我正在 mips 汇编解析器中工作,使用 yacc 和 lex,我需要识别给定指令中的寄存器。该寄存器可以是:
$t0,$t1,...$t31
$zero
r0,r1,...,r31
R0,R1,...,R31
我尝试完成第一部分($t0,...,$t31
和 R0,...$R31
),但没有成功。我的正则表达式是 ($t|R)([1|2][0-9]|3[0-1]|[0-9])
。正如您在图像 1 中看到的,正则表达式匹配 R56
寄存器中的 R5
,这是不需要的。我该如何解决这个问题?
我会使用:
((?:$t|[rR])(?:[12]?[0-9]|3[01]))\b|($zero)
匹配:
$t
或 R
或 r
后跟从 0 到 32 的数字(感谢单词边界 \b
)
$zero
参见 live demo。
我正在 mips 汇编解析器中工作,使用 yacc 和 lex,我需要识别给定指令中的寄存器。该寄存器可以是:
$t0,$t1,...$t31
$zero
r0,r1,...,r31
R0,R1,...,R31
我尝试完成第一部分($t0,...,$t31
和 R0,...$R31
),但没有成功。我的正则表达式是 ($t|R)([1|2][0-9]|3[0-1]|[0-9])
。正如您在图像 1 中看到的,正则表达式匹配 R56
寄存器中的 R5
,这是不需要的。我该如何解决这个问题?
我会使用:
((?:$t|[rR])(?:[12]?[0-9]|3[01]))\b|($zero)
匹配:
$t
或R
或r
后跟从 0 到 32 的数字(感谢单词边界\b
)$zero
参见 live demo。