11. Aufgabe:
In der Vorlesung wurde ein Algorithmus vorgestellt, der mit Hilfe eines
Stapels, einen in Infix-Notation vorliegenden
arithmetischen Ausdruck in seine Postfix-Notation überführt (Skript Teil III).
Wir betrachten im folgenden arithmetische Ausdrücke mit den Operatoren
und der Punktrechnung-vor-Strichrechnung-Prioritätsregel.
Für jeden Transformationsschritt geben Sie bitte die aktuell angewandte Regel, die Zeichenkette die noch an der Eingabe steht, die Zeichenkette die bereits an der Ausgabe steht, sowie den Inhalt des Stapels aus.
Das Programm soll zunächst den vollständigen Ausdruck (in Infix-Notation) als Zeichenkette einlesen und diese dann zeichenweise verarbeiten. Die Postfix-Form des Ausdrucks soll ebenfalls in einer Zeichenkette gespeichert werden. Die Größe der Eingabe- und Ausgabezeichenkette (vom Typ ARRAY OF CHAR) soll durch eine Konstantendefinition festgelegt werden. Realisieren Sie den Stapel durch eine verkettete Liste.
Für jeden Transformationsschritt soll das Programm die o.g. Ausgaben machen (angewandte Regel, Eingabe-, Ausgabestring und Stapelinhalt).
Vergleichen Sie die Ausgabe des Programms mit den Ergebnissen Ihrer Simulation aus Teil 1.
12. Aufgabe:
Schreiben Sie ein Modula-2-Programm zum Aufbau eines Analysebaumes
aus der
Postfix-Notation eines arithmetischen Ausdrucks (Skript Teil III).
Verwenden Sie die folgenden Datenstrukturen für den Analysebaum:
TYPE TREE = POINTER TO NODE; NODE = RECORD info : CHAR; left, right : TREE; END;
Implementieren Sie die folgenden Prozeduren und Funktionsprozeduren:
Als RETURN-Wert soll ein Zeiger auf die Wurzel des Baumes zurückliefert werden.
Testen Sie die von Ihnen implementierten Prozeduren und Funktionsprozeduren mit den Postfix-Formen der folgenden arithmetischen Ausdrücke