Nand-2-Tetris コースを受講しています。書き込みとアセンブラを求められます。C コマンドは、dest=comp;jump
各部分がオプションのタイプです。
私はすべてを簡単にするために正規表現を書こうとしていました-特定の行で式をコンパイルし、グループ番号だけで、式のどの部分を使用しているかを知りたいです。たとえば、式の場合: A=M+1;JMP
I want to get group(1) = A
, group(2) = M
and group(3) = JMP
.
私の問題は、各部分がオプションであるため、この正規表現の書き方が正確にわからないことです。これまでのところ、私は思いつきます:
(A?M?D?)\s=([^;\s]*)\s?(?=;[\s]*([a-zA-Z]{1,4})|$)
これはほとんどの場合に機能しますが、期待どおりには機能しません。たとえば、コンプがないと機能しません ( D;JGT
)。私は前向きな先読みを試みましたが、うまくいきませんでした。