2014-09-13 56 views
0

我目前正在研究MIPS彙編,遲早會遇到問題。說明這樣的:忽略ANTLR4中的第一個「0」?

JAL $000A2000 

橫空出世(十六進制)爲:

0C 00 28 80 

這是不對的,因爲這將意味着:

JAL $0000A200 

當我離開了零點我指令,如:

JAL $00A2000 

它的工作和結果是: 0C 02 88 00

所以,但我不想總是手動忽略「0」。我希望ANTLR4忽略來自左側的第一個值。作爲例子,我喜歡ANTLR4變成這樣:

JAL $000A2000 

到這一點:

JAL $00A2000 

我還是新來ANTLR4和還沒有一個想法,我將如何做到這一點。我很感激任何幫助。

回答

1

如果讓我猜詞法分析規則看起來像你提到的道理,我可能會選擇這樣的:

Stuff : '$' [0-9a-fA-F]+ ; 

此規則將匹配$00A2000$000A2000,但它也將匹配$f$C083FFa0b88200 。所有其他驗證都將在代碼中執行,而不是作爲語法的一部分。

如果您試圖更加明確地編寫詞法分析器或分析器規則,那麼它將對您的代碼準確報告和處理輸入中發生的錯誤的能力產生重大負面影響。

+0

是的,這就是我基本上做的。它將0-9a-fA-F與美元字​​符相匹配。但我實際上希望第一個值($ 02698D00 - >忽略「0」)被忽略/忽略,因爲它完全混淆了代碼。當然,我現在可以說,每個人都應該寫$ xxxyyyy,但這不對。 mips彙編的文檔希望它像$ xxxxyyyy。所以,我希望你寫$ xxxxyyy,antlr4忽略從左邊的第一個'x'(又名零),並且匹配$ xxxyyyy。 – Tetragrammaton 2014-09-13 20:03:52