|
|
|
WS 98/99 |
|
|
Aufgabe 1 (3 + 3 Punkte)
Ausdrücke, die durch die folgende Grammatik generiert werden, können Zuweisungen enthalten (S und E sind Nichtterminale, :=, +, (, ) und id sind Terminale).
S -> E E -> E := E | E + E | ( E ) | idDie Semantik dieser Ausdrücke ist wie in C. Das heißt, b:=c is ein Ausdruck, der b den Wert von c zuweist; der r-Wert dieses Ausdrucks ist der gleiche wie der von c. Weiterhin weist a:=(b:=c) den Wert von c zuerst b und dann a zu.
- Konstruieren Sie eine Attributgrammatik zur Überprüfung, daß die linke Seite einer Zuweisung ein l-Wert ist. Benutzen Sie dazu ein ererbtes Attribut side des Nichtterminals E, um anzuzeigen, ob der durch E generierte Ausdruck auf der linken oder rechten Seite einer Zuweisung erscheint.
- Erweitern Sie die Attributgrammatik aus (a) um ein synthetisiertes Attribut je Nichtterminal, um P-Code für die Ausdrucksauswertung zu erzeugen. Die aktuelle Adreßumgebung steht dabei in einem ererbten Attribut rho des Wurzelknotens zur Verfügung.
Aufgabe 2 (1 + 4 + 3 Punkte)
Gegeben sei die Attributgrammatik G mit
VN = {S,A,B}, VT = {a,b,c}, Syn(S) = {z}, Inh(S) = {} Syn(A) = {z}, Inh(A) = {i} Syn(B) = {x,y}, Inh(B) = {i,j} S -> A mit S.z = A.z, A.i = 0 A -> aB mit B.i = A.i, B.j = B.x, A.z = B.y B -> b mit B.x = B.i, B.y = B.j B -> c mit B.x = 0, B.y = B.i
- Zeichnen Sie die produktionslokalen Abhängigkeitsgraphen.
- Weisen Sie nach, daß G l-ordered ist durch Bestimmen geeigneter totaler Ordnungen T(X) für jedes X aus VN.
- Schreiben Sie ein Programmschema (Besuchsplan), das es gestattet, die Attributexemplare in einem Baum auszuwerten.