Prof. Dr. R. Laue                                                                                                                                  WS9899
                                Informatik III
                                Übungsblatt 9
                                Abgabe: 25.1.99 in der Vorlesung

URL:         /axel/informatik3_ws9899_blatt9.html
Dieses  Übungsblatt ist alleine zu bearbeiten.
 

Aufgabe 24 (8+6 Punkte)
Erweitern Sie den Taschenrechner  wie folgt:
- Er soll Zuweisungen erlauben. Dazu muß in lex  eine Variable erkannt werden. Wir nehmen der Einfachheit halber an, daß als zulässige Variablennamen, nur A,B,...,Z vorkommen. Die Variablen soll  mit 0 initialisiert werden. Wenn  yacc eine Zuweisung erkennt, wird in der Variable das Richtige abgespeichert. Es bleibt noch das Problem wann in yacc der Wert aus einer Variable ausgelesen wird.  (8 Punkte)
Beispiel:
input>  A*B;
output> 0
input> C=7;
output> 7;
input> A+C-5;
output> 2

- Es soll ein if -then -else Statement erlaubt werden.  Wahr soll  ein Ausdruck != 0 sein.  Dazu von lex die passenden Token. (6 Punkte)
Beispiel:
input> if (1) 5+7;
output> 12
 
 

Aufgabe 25 (6 + 8 Punkte)
Erweitern Sie die Taschenrechnergrammatik, sodaß FLOAT und INT als Typ vorkommt. Es sollen ferner Variablen mittels
FLOAT name;
INT name;
deklariert werden. Dann sollen Zuweisungen erlaubt werden.   (6 Punkte)
Mittels einer attributierten Grammatik soll nun eine  Typprüfung definiert werden, sodaß nur  Operationen und Zuweisungen zwischen gleichen Typen passieren. (8 Punkte)