Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
13. Jan 2006
Du brauchst nur einen Stack. Auf diesen kommen die Zwischenergebnisse, wie ich es oben beschrieben habe.
Nicht wirklich, bei UPN gibt es keine Operatorrangfolge :wink: .
Am Besten gebe ich mal ein kleines Beispiel:
1 2 + 3 *
Zuerst muss dein Parser die "1" als Zahl erkennen und wirft sie auf den Stack (PUSH):
(Stack) 1Als nächstes wird die 2 gepusht:
(Stack) 1 2
Da der "+"-Operator...
Forum: Object-Pascal / Delphi-Language
Delphi
by Khabarakh,
13. Jan 2006
Wo genau kommst du nicht weiter? Du musst eigentlich nur den String von links nach rechts parsen. Falls du ein Literal(z.B. "13") / eine Konstante (z.B. "Pi") unter der Nase hast, pushst du sie auf den Stack. Bei einem Operator holst du so viele Argumente vom Stack herunter, wie der Operator Operanden hat, und pushst das Ergebnis wieder auf den Stack. Wenn alles funktioniert hat, ist genau ein...