[CB-Logo]
Compilerbau I WS97/98
Übungen

Blatt 8

Abgabe: Montag, 5.1.1997

(ggf. Lösungen)

[Compilerbau-Homepage]

Aufgabe 1 (4 Pkt)

Die bei Blatt 5 erstellten Programme bzw. deren über die Homepage zugänglichen Sourcecodes sollen bewertet werden. Sie haben dazu insgesamt 10 Punkte, und sollten diese über die verfügbaren Programe verteilen. Die Bewertung schicken Sie (nicht in Gruppen, diese Aufgabe sollte jedEr lösen!!) bitte entweder unter Angabe von Paaren aus Programmnummer und Punkten per Email an D. Lammers, oder Sie benutzen das Bewertungsformular.

Aufgabe 2 (11 Pkt)

Betrachten Sie die Grammatik
G = (N,T,P,ArithAusdruck) mit
T={REAL, INT, '+', '*', '-', '/', '(', ')'},
N={ArithAusdruck, UnaryArithOp, BinArithOp},
P={
ArithAusdruck::=
REAL|INT|'(' ArithAusdruck ')'| UnaryArithOp ArithAusdruck | ArithAusdruck BinArithOp ArithAusdruck ,
UnaryArithOp::=
'+' | '-' ,
BinArithOp::=
'+' | '-' | '*' | '/'
}
  1. (4P) Zeigen Sie: Diese Grammatik ist nicht eindeutig.
  2. (7P) In MML wird die Mehrdeutigkeit im o.a. Teil durch vollständige Klammerung umgangen. Ändern Sie nach einem anderen Verfahren die Grammatik so, daß sie eindeutig ist, und beweisen Sie diese Eigenschaft.

Aufgabe 3 (5 Pkt)

Machen Sie sich mit flex (als Präprozessor für bison) vertraut, indem Sie einen lexikalischen Parser für die im Script Seite 10 angegebenen Tokenklassen für die Sprache MML angeben. (Abgabe: Die kommentierte flex-Eigabedatei)
[Compilerbau-Homepage]
IfI Mathe WWU

Dietmar Lammers
Last modified: Thu Dec 18 09:08:27 MET 1997