Ich würde eine Baumstruktur verwenden und das ganze auslesen und dann auswerten. Das kann man rekursiv mit einem PChar als Zeiger auf die aktuelle Stelle im String sehr gut lösen.
So habe ich das bei infix-Notation genauso wie bei PN oder UPN gemacht. Bei dieser Vorgehensweise konnte ich den Baum dann auch symbolisch analysieren und auswerten, genauso wie Variablen einsetzen, eine Funktion symbolisch ableiten usw.
Sprich du fängst am Anfang an und sagst: Werte mal aus.
Die Parserfunktion gibt dann jeweils einen Knoten zurück mit einem Wert oder mit einem Operator und zwei Werten. Diese beiden Werte sind dann wiederum Knoten. Sprich:
Die Funktion bekommt den Anfang übergeben. Entweder findet sie dann als erstes einen Operator, dann ruft sie sich selbst zweimal auf (und bekommt die beiden Operanden) oder sie findet einen Wert, dann gibt sie diesen einzeln ohne Operator zurück.
Teekeks hat folgendes geschrieben : |
Edit: man könnte ja auch einfach nur das ganze von Hinten nach vorne interpretieren, dann scheint es das selbe wie die UPN zu sein. |
Ganz genau!