Hallo Jens,
»» Variante 1: Der Operator mit dem höchsten Rang wird ALS LETZTER ausgewertet.
»» Variante 2: Der Operator mit dem höchsten Rang wird ALS ERSTER ausgewertet.
Das ist nicht unbedingt ein Widerspruch.
Nimm ein einfaches Beispiel:
r = 2 + 4*(5+8)
Ein typischer Parser würde so vorgehen:
1 ersten Teilausdruck auswerten und merken: 2
2 Operator merken: Plus
3 nächsten Teilausdruck auswerten und merken: 4
4 Operator (Mal) mit letztem gemerkten vergleichen
bei niedrigerer Rangordnung: bisherige Teilausdrücke mit Operator verknüpfen,
Ergebnis merken und zurück zu Schritt 3
bei höherer Rangordnung: nächsten Teilausdruck (hier: (5+8)) auswerten und merken
und zurück zu Schritt 4
Dieses Vorgehen, das ich hier wahrscheinlich nicht mustergültig geschildert habe, führt dazu, dass beim Analysieren eines solchen komplexen Ausdrucks erst die Operatoren mit niedriger Priorität (Addition, Subtraktion) und dann die mit höherer Priorität (Multiplikation, Division) untersucht werden, dann aber in umgekehrter Reihenfolge tatsächlich berechnet werden.
Die Operatoren werden in dieser Tabelle aber von unten nach oben (!) ausgewertet, mithin die höchste Rangstufe, nämlich 1, zuletzt.
Sie werden von unten nach oben "ausgewertet", also berechnet, ja. Aber vorher werden sie von oben nach unten erstmal interpretiert.
So long,
Martin
Die letzten Worte des Polizisten:
Ich hab mitgezählt: Sechs Schuss, jetzt hat er keine Munition mehr!