我有解釋波蘭表示法的解釋器。我擁有令牌中的所有操作和數字,並且我有一個令牌列表。因此,例如- - 5 4 2
是與這些標記列表:具有標記列表的解釋器遞歸波蘭表示法
SubtractionToken,SubtractionToken,NumberToken,NumberToken,NumberToken,STOPToken。
例令牌:
class SubstractToken : IBinaryOperation
{
public Number Interpret(Number value1, Number value2)
{
Number c = new Number(value1.Value() - value2.Value());
return c;
}
}
class Number : IToken
{
private int value;
public Number(int val)
{
value = val;
}
public int Value()
{
return value;
}
}
所以,我無法理解如何讓遞歸函數來解決這個問題。因爲當我SubstractionToken.Inrerpret(值,值)我需要從numberTokens
給出的值應該從自身減去,但如果下一個標記是操作標記會發生什麼?或者我們有- 5 - 7 2
?我不知道如何實現這樣的遞歸函數,它會檢測到第一個操作應該被執行 - 7 2 then - 5並返回結果( - 7 2),記住結果並回到先前未完成的操作。任何幫助?
聽起來像你需要比解釋器更多的解析器。 – stuartd
@stuartd:OP可能試圖同時解析和解釋。 – IAbstract
看看[this](http://codereview.stackexchange.com/questions/48632/math-equation-as-string-to-reverse-polish-notation-parser)。我在2年前寫了這個作爲一個學習項目。它當然可以改進,但它應該有所幫助。 – JRLambert