Ich habe einen Interpreter, der die polnische Notation löst. Ich habe alle Operationen und Zahlen in Token und ich habe eine Liste von Token. So zum Beispiel - - 5 4 2
ist eine Liste mit diesen Token:Interpreter Rekursive Polnische Notation mit Token-Liste
SubtractionToken, SubtractionToken, NumberToken, NumberToken, NumberToken, STOPToken.
Beispiel Token:
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;
}
}
Also, ich kann nicht verstehen, wie rekursive Funktion, um diese Probleme zu lösen. Denn wenn ich SubtractionToken.Inrerpret (Wert, Wert) muss ich die Werte geben von numberTokens
was Subtrahieren von sich selbst sein sollte, aber was passiert, wenn das nächste Token ein Operationstoken ist? oder wir haben - 5 - 7 2
? Ich weiß nicht, wie man eine solche rekursive Funktion implementiert, die erkennt, dass die erste Operation durchgeführt werden sollte - 7 2 dann - 5 und Ergebnis von (- 7 2), erinnere mich an die Ergebnisse und zurück an die vorherigen nicht durchgeführten Operationen. Irgendeine Hilfe?
Klingt, als ob Sie mehr eines Parsers als eines Interpreters benötigen. – stuartd
@stuartd: OP versucht wahrscheinlich zur gleichen Zeit zu analysieren und zu interpretieren. – IAbstract
Werfen Sie einen Blick auf [diese] (http://codereview.stackexchange.com/questions/48632/math-equation-as-string-to-reverse-polish-notation-parser). Ich habe das vor etwa 2 Jahren als Lernprojekt geschrieben. Es kann sicherlich verbessert werden, aber es sollte helfen. – JRLambert