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)