我正在參加Nand-2-Tetris課程。我們被要求編寫和彙編。 C命令的類型爲dest=comp;jump
,其中每個部分都是可選的。正則表達式捕捉彙編C指令
我試圖編寫一個正則表達式來使一切變得更容易 - 我希望能夠在給定行上編譯表達式,並且只需通過組編號就知道我正在使用的表達式的哪一部分。例如,對於表達式:A=M+1;JMP
我想獲得group(1) = A
,group(2) = M
和group(3) = JMP
。
我的問題是,每個部分是可選的,所以我不知道如何寫這個正則表達式。到目前爲止,我想出了:
(A?M?D?)\s=([^;\s]*)\s?(?=;[\s]*([a-zA-Z]{1,4})|$)
這適用於大多數情況下,但它不工作,因爲我期望它。例如,缺乏補償將不起作用(D;JGT
)。我試過積極的向前看,但它沒有奏效。
彙編器是_parser_,雖然正則表達式可以肯定是你使用一個工具,它不是唯一的問題。 –
同意。這看起來像是「如果你只有一把錘子,每個問題看起來像釘子」。正則表達式是一個強大的工具,但是將它用於這類任務需要耗費你的時間和任何需要閱讀代碼的人。 – MadOverlord