我需要實現一個簡單的公式解析器。我正在做的是首先創建一個postfix notation,然後evaluating the postfix string。不幸的是,該算法不允許使用括號,即(2 + 3)* a。任何人都知道如何擴展算法以允許括號?包含括號的公式解析器
由於提前,
弗蘭克
我需要實現一個簡單的公式解析器。我正在做的是首先創建一個postfix notation,然後evaluating the postfix string。不幸的是,該算法不允許使用括號,即(2 + 3)* a。任何人都知道如何擴展算法以允許括號?包含括號的公式解析器
由於提前,
弗蘭克
後綴符號的整點是消除括號中間符號,讓你可以更容易地計算表達式。如果你當前的算法不允許在中綴表達式中使用括號,那麼你使用的算法不好。
即使中綴版本有括號,shunting yard algorithm也允許您從中綴轉換爲後綴。
作爲一種替代方案,算術表達式的語法非常簡單,您可以輕鬆實現遞歸下降解析器來評估表達式。
語法會是這個樣子:
<expression> ::= <term> <add_sub> <expression>
<term> ::= <factor> <mul_div> <term>
<factor> ::= '(' <expression> ')' | <number>
<add_sub> ::= '+' | '-'
<mul_div> ::= '*' | '/'
(你必須定義爲整數,浮點值,分數等,這取決於你的需求)
上面的語法需要照顧括號和運營商優先
嗨弗拉德,我發現我使用的算法是一個「精簡」分流院子。隨着維基百科的信息,我能夠適應它。非常感謝! – Aaginor 2010-07-07 16:24:51