Compilerbau WiSe 2002/03

Übungsblatt 4

Aufgabe 1

Gegeben sei die durch die folgenden Produktionen bestimmte Grammatik (Terminalsymbole sind jeweils in '' geklammert):
 P = { S ::= 'if' B 'then' E 'else' E | 'if' B 'then' E
       E ::= 'a' |  E ';' E | S
       B ::= E | 'b' 
      
Ist die Grammtik eindeutig? Beweisen Sie ihre Antwort!

Aufgabe 3

Bringen Sie die Grammatik aus Aufgabe 1 in Chomsky Normalform, und analysieren Sie das Wort if b then a ; a mit dem Algorithmus nach Cocke-Kasami-Younger.

Aufgabe 3

  1. Sie konnten bei Blatt3 / Aufgabe 2 die Erkennung der Schlüsselwörter durch eine vorgeschaltete lexikalische Analyse oder direkt durch die Grammatik machen. Welchen Weg haben Sie gewählt, und warum? Haben Sie den Backslash (\) mit in das Keywort einbezogen? Warum bzw. warum nicht?
  2. Parsen Sie das Beispiel zu Blatt 3 / Aufgabe 2. An welcher Stelle müsste welcher Zielcode generiert werden?

Dietmar Lammers
Last modified: Sun Nov 16 12:13:28 CET 2003