Universität Karlsruhe (TH)

Ähnliche Dokumente
Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Theoretische Informatik und Logik Übungsblatt 2 (2017S) Lösung

6 Kontextfreie Grammatiken

Ein Fragment von Pascal

Alphabet, formale Sprache

Grundlagen der Theoretischen Informatik

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

Automaten und formale Sprachen. Lösungen zu den Übungsblättern

Beweisidee: 1 Verwende den Keller zur Simulation der Grammatik. Leite ein Wort. 2 Problem: der Keller darf nicht beliebig verwendet werden, man kann

Programmierkurs Java

Theoretische Informatik I

Grundlagen der Programmierung 2 (Comp-D)

Berechenbarkeitstheorie 7. Vorlesung

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Kontextfreie Sprachen Kontextfreie Sprachen und Grammatiken. Satzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

(Prüfungs-)Aufgaben zu formale Sprachen

Automaten und formale Sprachen Notizen zu den Folien

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Kapitel IV Formale Sprachen und Grammatiken

Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen

I.5. Kontextfreie Sprachen

Compilerbau 12. Übungsblatt, Sommersemester 2015 Abgabetermin:

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Operationen auf Grammatiken

Algorithmen und Formale Sprachen

Grundlagen der Theoretischen Informatik

Klammersprache Definiere

Mehrdeutige Grammatiken

Grundlagen der Theoretischen Informatik

Automaten und formale Sprachen Notizen zu den Folien

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

VU Software Paradigmen / SS 2014

Baumadjunktionsgrammatiken

Mehrdeutige Grammatiken

Vorname:... Matrikel-Nr.:... Unterschrift:...

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Grundlagen der theoretischen Informatik

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

9.4 Grundlagen des Compilerbaus

9 Theoretische Informatik und Compilerbau

Compiler: Parser. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

F2 Zusammenfassung Letzte Tips zur Klausur

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Einführung in die Theoretische Informatik

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Theoretische Grundlagen der Informatik

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Compiler/Interpreter

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

1. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik

Software Entwicklung 1

Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten

Grundlagen der Theoretischen Informatik

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

1 Automatentheorie und Formale Sprachen

Aufgabensammlung Theo Inf I 1

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

THIA - Übungsblatt 2.

Das Postsche Korrespondenzproblem

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

VU Software Paradigmen / SS 2012

Formale Sprachen, Automaten, Compiler

Theoretische Informatik I

Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen

Syntax von Programmiersprachen

Syntax von Programmiersprachen

Übung Praktische Informatik I

Informatik IC2. Balazs Simon

Lexikalische Programmanalyse der Scanner

Grundlagen der Theoretischen Informatik

Formale Sprachen und Grammatiken

2. Gegeben sei folgender nichtdeterministischer endlicher Automat mit ɛ-übergängen:

Informatik III. Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung

Zwei Bemerkungen zum Schluss

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Einführung. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :49. Einführung 1/26

Von der Grammatik zum AST

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Formale Sprachen und Automaten

Grundlagen der Theoretischen Informatik

Nichtdeterministischer Kellerautomat

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Lerninhalte ALFONS Lernwelt Deutsch 4. Klasse

Formale Sprachen Jörg Roth Formale Sprachen

5. Die syntaktische Analyse

Grundlagen der Informatik II Übungsblatt: 1, WS 17/18 mit Lösungen

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

2.2 Syntax, Semantik und Simulation

TU Kaiserslautern. Übungsblatt 2: Software-Entwicklung 1 (WS 2017/18) Hinweise zu Einreichaufgaben. Hinweise zu den Übungen

Grundbegriffe. Grammatiken

Transkript:

Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen prachtechnologie und Compiler W 2008/2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. nelting snelting@ipd.info.uni-karlsruhe.de Übungsleiter: Matthias Braun braun@ipd.info.uni-karlsruhe.de Lösung zu Übungsblatt 2 Ausgabe: 30.10.2008 Besprechung: 5.11.2008 Aufgabe 1: Praxis: Flex Unter http://pp.info.uni-karlsruhe.de/lehre/w200809/compiler/uebung/minicalc.zip finden ie ein C-Programm zum Berechnen von einfachen mathematischen Ausdrücken. Auf der Homepage zur Übung 1 finden sich weitere Informationen zur Installation von flex. 1.1 canner Der enthaltene canner wurde in flex geschrieben, ist allerdings unvollständig. Erweitern ie diesen um folgende Tokentypen: T PLU: das + Zeichen T MINU: das - Zeichen T TAR: das * Zeichen T LAH: das / Zeichen T LBRACE: das ( Zeichen T RBRACE: das ) Zeichen T NUMBER: Eine Zahl. Diese beginnt mit einer Ziffernfolge. Danach kann ein Punkt und optional weitere Ziffern folgen. Alternativ darf die Zahl nur mit einem Punkt beginnen, wenn danach mindestens eine Ziffer folgt. Enthält die Zahl einen Punkt, so darf der Buchstabe e oder E angehängt werden, gefolgt von einem optionalen + oder - und weiteren Ziffern. Zusätzlich soll bei T NUMBER Tokens der Wert der Zahl im Token vermerkt werden. Hinweise: In flex enthält die Variable yytext den erkannten tring. Die Funktion scanf ermöglicht es einen tring in eine Gleitpunktzahl zu konvertieren: sscanf( string, %f, &variable); Der parser Code enthält eine Debughilfe. http://pp.info.uni-karlsruhe.de/lehre/w200809/compiler/uebung/minicalc_solution. zip 1 http://pp.info.uni-karlsruhe.de/lehre/w200809/compiler/uebung

2 Aufgabe 2: Kontextfreie Grammatik 1 2.1 Einfache Grammatiken 1 Betrachten ie die folgende kontextfreie Grammatik und den tring aa+a*: + a Geben ei eine Linksableitung für den tring an. + a+ aa+ aa+a Geben ie eine Rechtsableitung für den tring an. a + a a+ a aa+a Geben ie einen Parse-Baum für den tring an. + a a a Ist die Grammatik mehrdeutig oder nicht? Begründen ie Ihre Antwort. Die Grammatik ist nicht mehrdeutig. Beschreiben ie die von dieser Grammatik generierte prache. Die Grammatik beschreibt eine Postfix-Notation von Ausdrücken mit einer + und einer - Operation. 2.2 Einfache Grammatiken 2 Wiederholen ie die vorige Aufgabe mit ( ) und dem tring (()()).

3 Linksableitung: ( ) ( ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) Rechtsableitung: ( ) ( ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) ( ( ) ( ) ) Parsebaum: ( ) ( ) ( ) Die Grammatik ist nicht eindeutig, Beispiel für einen alternativen Parsebaum des trings: ( ) ( ) ( ) Die von der Grammatik generiert prache ist die Menge aller korrekten Klammerungen. 2.3 Entwerfen von Grammatiken Entwerfen ie Grammatiken für: Die Menge aller trings aus 0 und 1 mit derselben Anzahl von 0 und 1 0 1 1 0 Die Menge aller trings aus 0 und 1 mit einer ungleichen Anzahl von 0 und 1 G Z + G Z G G O + G O G G G 0 G 1 G G 1 G 0 G Z + 0 Z Z 0 Z O + 1 O O 1 O Die Menge aller trings aus 0 und 1 in der 011 nicht als Teilstring vorkommt

4 Als endlicher Automat würde das so aussehen: 1 0 0 1 1 start Z 1 Z 2 F Z 0 Daraus lässt sich leicht eine Grammatik konstruieren: 0 1 0Z 1 Z 1 0Z 1 1Z 2 Z 2 0Z 1

5 Aufgabe 3: Kontextfreie Grammatik 2 Gegeben folgende Grammatik: atz ubjekt Praedikat. ubjekt Nomen Attribut Nomen Pronomen Artikel Adjektive ubstantiv Praedikat Verb Adverben Adjektiv Verb Objekte Adverben Attribut Adjektive Adjektive Adjektiv Objekte Objekt Objekt Objekt Objekt Nomen Attribut Adverben Adverben Adverb Attribut Praeposition ubstantiv Artikel der die das des dem den ein eine eines einem dieser kein PossesivPronomen Verb bin ist hat gehe traf fliegen Adverb naemlich vielleicht hier damals morgen gerne leider links hinterher ubstantiv Junge Bruder chloss Jaeger Leben Blau Gelb Fliegen CD atz Verb Adjektiv schnell fliegende teure schoen neue Pronomen ich du er sie es PossesivPronomen PossesivPronomen mein dein sein seinem Praeposition in an mit 3.1 Ableitungen Geben ie eine Ableitung für folgende ätze an: 1. das Leben ist naemlich schön. atz ubjekt Praedikat. Nomen Attribut Praedikat. Nomen Praedikat. Artikel Adjektive ubstantiv Praedikat. das Leben Praedikat. das Leben Verb Adverben Adjektiv. das Leben ist Adverben Adverb schoen. das Leben ist naemlich schoen. 2. Blau ist das neue Gelb. atz ubjekt Praedikat. Nomen Attribut Praedikat. Nomen Praedikat. Artikel Adjektive ubstantiv Praedikat. ubstantiv Praedikat. Blau Praedikat. Blau Verb Objekte Adverben Attribut. Blau ist Objekte Adverben Attribut. Blau ist Objekt Adverben Attribut. Blau ist Nomen Attribut Adverben Attribut. Blau ist Nomen Adverben Attribut. Blau ist Artikel Adjektive ubstantiv Adverben Attribut. Blau ist das Adjektive ubstantiv Adverben Attribut. Blau ist das Adjektive Adjektiv ubstantiv Adverben Attribut. Blau ist das Adjektiv ubstantiv Adverben Attribut. Blau ist das neue ubstantiv Adverben Attribut. Blau ist das neue Gelb Adverben Attribut. Blau ist das neue Gelb Attribut. Blau ist das neue Gelb. 3. schnell fliegende Fliegen fliegen Fliegen hinterher.

6 atz ubjekt Praedikat. Nomen Attribut Praedikat. Nomen Praedikat. Artikel Adjektive ubstantiv Praedikat. Adjektive ubstantiv Praedikat. Adjektive Adjektiv ubstantiv Praedikat. Adjektive Adjektiv Adjektiv ubstantiv Praedikat. Adjektive Adjektive Adjektiv ubstantiv Praedikat. Adjektive Adjektiv ubstantiv Praedikat. schnell Adjektiv ubstantiv Praedikat. schnell fliegende ubstantiv Praedikat. schnell fliegende Fliegen Praedikat. schnell fliegende Fliegen Verb Objekte Adverben Attribut. schnell fliegende Fliegen fliegen Objekte Adverben Attribut. schnell fliegende Fliegen fliegen Objekt Adverben Attribut. schnell fliegende Fliegen fliegen Nomen Attribut Adverben Attribut. schnell fliegende Fliegen fliegen Artikel Adjektive ubstantiv Attribut Adverben Attribut. schnell fliegende Fliegen fliegen Artikel Adjektive ubstantiv Attribut Adverben Attribut. schnell fliegende Fliegen fliegen ubstantiv Attribut Adverben Attribut. schnell fliegende Fliegen fliegen Fliegen Attribut Adverben Attribut. schnell fliegende Fliegen fliegen Fliegen Adverben Attribut. schnell fliegende Fliegen fliegen Fliegen Adverben Adverb Attribut. schnell fliegende Fliegen fliegen Fliegen Adverb Attribut. schnell fliegende Fliegen fliegen Fliegen hinterher Attribut. schnell fliegende Fliegen fliegen Fliegen hinterher. 4. der Junge bringt seinem Bruder die teure CD. atz ubjekt Praedikat. Nomen Attribut Praedikat. Nomen Praedikat. Artikel Adjektive ubstantiv Praedikat. der Adjektive ubstantiv Praedikat. der ubstantiv Praedikat. der Junge Praedikat. der Junge Verb Objekte Adverben Attribut. der Junge bringt Objekte Adverben Attribut. der Junge bringt Objekt Objekt Adverben Attribut. der Junge bringt Nomen Attribut Objekt Adverben Attribut. der Junge bringt Artikel Adjektive ubstantiv Attribut Objekt Adverben Attribut. der Junge bringt PossesivPronomen Adjektive ubstantiv Attribut Objekt Adverben Attribut. der Junge bringt seinem Adjektive ubstantiv Attribut Objekt Adverben Attribut. der Junge bringt seinem Adjektive ubstantiv Attribut Objekt Adverben Attribut. der Junge bringt seinem ubstantiv Attribut Objekt Adverben Attribut. der Junge bringt seinem Bruder Attribut Objekt Adverben Attribut. der Junge bringt seinem Bruder Objekt Adverben Attribut. der Junge bringt seinem Bruder Nomen Adverben Attribut. der Junge bringt seinem Bruder Artikel Adjektive ubstantiv Adverben Attribut. der Junge bringt seinem Bruder die Adjektive ubstantiv Adverben Attribut. der Junge bringt seinem Bruder die Adjektive Adjektiv ubstantiv Adverben Attribut. der Junge bringt seinem Bruder die Adjektiv ubstantiv Adverben Attribut. der Junge bringt seinem Bruder die teure ubstantiv Adverben Attribut. der Junge bringt seinem Bruder die teure CD Adverben Attribut. der Junge bringt seinem Bruder die teure CD Attribut. der Junge bringt seinem Bruder die teure CD. 5. dieser atz kein Verb. Keine Ableitung möglich atz gehört nicht zur prache. 3.2 Mehrdeutigkeit Ist die Grammatik eindeutig? Geben ie ein Gegenbeispiel oder eine Begründung für die Eindeutigkeit an!

7 Man kann mehrdeutige ätze konstruieren. Zum Beispiel: ich traf den Jaeger mit seinem Gewehr. Dieser atz ist (auch im Deutschen) syntaktisch mehrdeutig. den Jaeger mit seinem Gewehr kann beim Ableiten als einzelnes Objekt interpretiert werden. Alternativ kann man den Jaeger als Objekt interpretieren und traf... mit seinem Gewehr als Verb mit zugehörigem Attribut.

8 Aufgabe 4: Grammar Engineering 4.1 Elimination der Linksrekursion Es folgt eine Grammatik für reguläre Ausdrücke über die ymbole a und b: rexpr rexpr + rterm rterm rterm rterm rfactor rfactor rfactor rfactor rprimary rprimary a b Führen ie eine Linksfaktorisierung dieser Grammatik durch. Eine Linksfaktorisierung ändert an der gegebenen Grammatik nichts. Macht die Linksfaktorisierung sie für Top-Down-Parsing geeignet? Nein. Die Grammatiken enthält Linksrekursionen und ist daher für Top-Down-Parsing ungeeignet. Eliminieren ie anschließend die Linksrekursion aus der ursprünglichen Grammatik. Nutze Regeln aus der Vorlesung: A A α β lässt sich umformen zu: A βa und A αa Daraus ergibt sich: rexpr rterm rexpr rexpr + rexpr rterm rfactor rterm rterm rfactor rterm rfactor rprimary rfactor rfactor rfactor rprimary a b Eignet sich die resultierende Grammatik für Top-Down-Parsing. Ja. 4.2 Dangling-Else Die folgende Grammatik soll das aus der Vorlesung bekannte Problem des Dangling-Else beseitigen: if expr then matchedtmt matchedtmt if expr then matchedtmt else Zeigen ie, dass sie immer noch mehrdeutig ist.

9 Für den atz if expr then if expr then else if expr then else kann man 2 Parsebäume konstruieren: if expr then matchedtmt if expr then matchedtmt else matchedtmt if expr then matchedtmt else matchedtmt matchedtmt if expr then matchedtmt else if expr thenmatchedtmt else matchedtmt if expr then matchedtmt