Funktionsbaum wird falsch berechnet (Formelparser)
-
Hi,
also mein Formelparser baut soweit einen zufriedenstellenden Baum der Funktion auf, der auch in den meisten Fällen richtig berechnet wird.
Nun habe ich aber mal den Term "1-1-1-1-1" zum Parsen eingegeben, wobei folgender Funktionsbaum herauskommt
- [4] / \ 1 - [3] / \ 1 - [2] / \ 1 - [1] / \ 1 1
So nun rekursiere ich nach dem Postorder-Verfahren durch den Baum und berechne die entsprechenden Werte.
Das Problem ist nun, dass er als erstes den Operator ausführt, der mit [1] markiert ist und so da 0 entsteht (1-1=0). Und so setzt es sich fort:[2] 1-0=1
[3] 1-1=0
[4] 1-0=1!=-3.Nun wollte ich fragen, welche Taktik ihr empfehlen würdet solch einen Funktionsbaum zu berechnen, um solche Fehler zu vermeiden.
-
Dann ist Deine Grammatik falsch. '-' ist nunmal nicht rechts-, sondern linksassoziativ.
-
Könnte jemand andeuten, wie der Baum aussehen müsste, wenn meine Grammatik richtig wäre.
//Edit:
Liege ich damt richtig ?
- / \ - 1 / \ 1 1 ...
-
Ja.
-
Wunderbar.
Jetzt funktionierst.
Vielen Dank nochmals.