這是我的語言的算術表達式:ADD 100 MUL 5 DIV 10 SUB 7 MOD 10 4
如何爲此算術表達式編寫語法?
其中ADD
=此外,SUB
=減法,MUL
=乘法,DIV
=師,MOD
=模。
上述表達式也可以重新編入標準100 + (5 * (10/(7 - (10 % 4))))
,括號中包含括號以標記操作順序。
這比標準完全不同,因爲評價與最右邊的操作開始,即MOD 10 4
,那麼這個結果隨後被用於評估下一個操作,即SUB 7 2
,其中2
是模的結果操作。括號不是這個語法所必需的。
我已經得到了從https://ruslanspivak.com/lsbasi-part6/持有的標準符號語法,那就是:
<expr> := <term> ((ADD|SUB) <term>)*
<term> := <factor> ((MUL|DIV|MOD) <factor>)*
<factor> := integer
在我的語言,我在寫算術運算的語法一無所知。上面的語法需要修改嗎?或者我需要寫一個全新的語法?
編寫語法就像編寫程序一樣。您提出了一些代碼/語法片段,您可以決定它是否符合您的期望,如果不符合,則更改它,直到它出現爲止。如果你理解語法,這應該不難。如果你不這樣做,這些經驗將幫助你理解它們。你試圖做什麼來寫你自己的語法或測試這一個是好的? –
我已經成功編寫了解析標準算術表達式(+, - ,*,/,%)的方法和代碼,就像指南所做的那樣,我只是將Python代碼轉換爲C#。我也通過修改指南中的語法成功地解析了一個單獨的操作:':=(ADD | SUB)',但我一直在解決如何使用多個操作解析表達式。 –