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.


Anmelden zum Antworten