ポーランド語表記を解決するインタープリターがあります。トークンにすべての操作と数値があり、トークンのリストがあります。たとえば- - 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(value, value) の場合、numberTokens
それ自体から減算する必要がある値を指定する必要がありますが、次のトークンが操作トークンの場合はどうなるでしょうか? または私たちは持ってい- 5 - 7 2
ますか?最初の操作が行われるべきであることを検出するような再帰関数を実装する方法がわかりません - 7 2 次に - 5 および resultof(- 7 2)、結果を記憶し、以前の実行されていない操作に戻ります。何か助けはありますか?