2012-01-13 61 views
0

我知道有很多關於解析數學表達式的問題。我研究並學習了將中綴字符串轉換爲後綴的算法,並使用後綴字符串來計算表達式的值。當操作數包含多個字符時解析表達式?

但是我發現的所有例子都只處理表達式的操作數僅包含一個字符的情況。例如「1 + 2」。

如果表達式爲「1 + 123」,該怎麼辦?後綴字符串將變成「1123+」,因此無法進行評估。

我想過的方法是從中綴字符串中讀取操作數的每個字符,並暫時將它們保存在tempStack中。並且,讀取操作符時,將tempStack中的操作數轉換爲整數,然後將其推入後綴數組中。

但是接下來的問題是,我的操作數是整型,但我的操作符是字符類型。所以我不能把它們放在同一個陣列中。

請爲我提供正確的方法。我知道有API來完成這項工作,但我想學習這些以加強我的知識。

非常感謝。

+0

你在找什麼是[運算符優先解析器](http://en.wikipedia.org/wiki/Operator-precedence_parser)。或者使用兩個堆棧,一個用於操作數,另一個用於操作員。 – 2012-01-13 12:50:18

回答

0

除非用空格分隔標記,否則不要將輸入轉換爲「後綴字符串」。輸入「1 + 123」然後將變成例如「1 123+」。但是最好將一個令牌放在堆棧上,例如一個字符串數組。如果您使用的語言支持代數數據類型,您可以創建一個Token類型並將其推入一堆Token

相關問題