Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Diplom (RGS 9) Compilerbau Sommersemester 2005 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und Ihre Matrikelnummer zu Beginn auf das Deckblatt der Klausur. Überprüfen Sie, ob die Klausur vollständig ist. 2.) Bearbeiten Sie die Aufgaben möglichst auf den jeweiligen Blättern. Der Platz auf dem Aufgabenblatt ist so bemessen, daß er für die Lösung der Aufgabe ausreicht. Andernfalls verwenden Sie die Rückseite oder ein mit Ihrem Namen, Ihrer Matrikelnummer und der Aufgabennummer gekennzeichnetes separates Blatt. 3.) Als Hilfsmittel ist, außer einem Schreibgerät, nur das Folienskript Compilerbau (mit ihren persönlichen Ergänzungen) zugelassen. 4.) Schreiben Sie mit dokumentenechten Stiften. Mit Bleistiften, Tintenkiller o.ä. erstellte Lösungen sind ungültig! Rotschreibende Stifte sind ebenfalls verboten! Schreiben Sie bitte leserlich! Aufgabe 1 2 3 4 5 6 7 8 Σ Erreichbare Punkte 10 10 48 16 10 15 5 6 120 Erreichte Punkte V i e l E r f o l g!!! Note:
Aufgabe 1 Reguläre Ausdrücke, Zustandsdiagramme 10 (5 + 5) Punkte a) Gegeben sei das Alphabet A = {a, b, c}. Geben Sie einen regulären Ausdruck für die Menge der Wörter über A an, die mit a beginnen, mit b enden und genau dreimal das Symbol c enthalten. Beispiel: korrekt falsch acccb accca abcabcabcb abcabcabcabcb aaacaacaacb cccb b) Geben Sie für den regulären Ausdruck (a b) c (a b)+ ein Zustandsdiagramm an. 2
Aufgabe 2 Produktionsregeln, Mehrdeutigkeit 10 (5 + 5) Punkte a) L = {w {0, 1}* Für w gilt, dass 011 nicht als Teilstring vorkommt}. Geben Sie die Produktionen einer kontextfreien Grammatik für L an. Beispiel: 1100101 ist ein Wort aus L, 01100 ist nicht in L b) Ist die kontextfreie Grammatik mit den Produktionsregeln S a S b S b S a ε mehrdeutig? Begründen Sie ihre Antwort! 3
Aufgabe 3 Top-Down-Analyse 48 (4 + 20 + 16 + 4 + 4) Punkte a) Wieso bzw. wann machen gemeinsame Präfixe bei verschiedenen Alternativen einer Produktionen Schwierigkeiten beim Top-Down-Parsing? b) Gegeben sind die folgenden Produktionen einer Grammatik mit Startsymbol S: S ab Aa. A Bab Aaa a. B Sb Bbb b. Eliminieren Sie in den Produktionen die Linksrekursion. 4
Aufgabe 3 Top-Down-Analyse - Fortsetzung 48 (4 + 20 + 16 + 4 + 4) Punkte c) Wozu braucht man beim Top-Down-Parsen die FIRST-Mengen? d) Wieso braucht man außer den FIRST-Mengen auch die FOLLOW-Mengen? e) Wieso darf höchstens eine der FIRST-Mengen der Alternativen einer Produktion ein ε enthalten? 5
Aufgabe 4 LR-Parser 16 (10 + 6) Punkte Gegeben ist eine Grammatik mit folgenden Produktionen: (1) S A (2) A abb (3) A ade (4) A bbc (5) A bdd (6) B d a) Analysieren Sie mit unten stehender Parsetabelle das Wort adb. a b c d e $ S A B 0 s2 s3 1 1 acc 2 s5 4 3 s7 6 4 s8 5 r6 r6 s9 6 s10 7 r6 r6 s11 8 r2 9 r3 10 r4 11 r5 6
Aufgabe 4 LR-Parser - Fortsetzung 16 (10 + 6) Punkte b) Wie kommt es zu shift/reduce-konflikten? Geben Sie ein Beispiel an. 7
Aufgabe 5 Lex / Flex 10 Punkte Schreiben Sie die Regeln für (f)lex auf, mit deren Hilfe Sie auf einer Binärdatei 1-er Drillinge zählen. Ein 1-er Drilling sind drei aufeinander folgende 1-er. Beispiel: 01011110111 in diesem Binärmuster sind 3 Drillinge enthalten 1111 = 2 Drillinge, 111 = 1 Drilling. Der Einfachheit halber dürfen Sie davon ausgehen, dass Sie eine Textdatei mit 0-en und 1-en vorliegen haben. 8
Aufgabe 6 Yacc / Bison 15 Punkte Gegeben sind die folgenden Syntaxregeln, die an die Syntax von CPL erinnern: program decl_part. decl_part { var_decl func_decl }+. var_decl type id_list ;. type int bool. id_list id {, id }. func_decl type id ( params ) body. params type id {, type id } ε. Geben Sie die entsprechenden Produktionen für yacc/bison an. Bedenken Sie, dass Sie die Syntaxregeln mit den EBNF-Symbolen { und } umschreiben müssen. Die Nonterminalsymbole body und id müssen Sie nicht mehr beschreiben. 9
Aufgabe 7 Semantik / Attribute 5 (3 + 2) Punkte a) Geben Sie jeweils 1 Beispiel für ein ererbtes und ein synthetisiertes Attribut für die Sprache C an. b) Attribute von Bezeichnern werden in der Symboltabelle gespeichert. Die Symboltabelle muss geschachtelte Gültigkeitsbereiche verwalten können. Nennen Sie 2 Beispiele für solche geschachtelten Gültigkeitsbereiche aus C. 10
Aufgabe 8 Laufzeitspeicherorganisation 6 Punkte Gegeben sei das folgende Pascal-ähnliche Programm: program P end P; procedure P1 procedure P11 end P11; procedure P12 end P12; end P1; procedure P2 procedure P21 end P21; procedure P22 end P22; end P2; procedure P3 procedure P31 end P31; procedure P32 end P32; procedure P33 end P33; end P3; Die Aufrufkette sieht zum Zeitpunkt t 1 aus wie folgt: P P3 P32 P31 P2. Wie sieht zum Zeitpunkt t 1 der Laufzeitstapel aus. Geben Sie die statischen Links an. 11