Formale Sprachen Teil 3 Klaus Becker 2006. 2 Syntax und Semantik.

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

Die Schulkonsole für Lehrerinnen und Lehrer
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Imperative Programmierung
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
-17 Konjunkturerwartung Europa September 2013 Indikator > +20 Indikator 0 a +20 Indikator 0 a -20 Indikator < -20 Europäische Union gesamt: +6 Indikator.
Parser generieren Yet Another Compiler – Compiler YACC.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
FH-Hof Formale Sprachen - Maschinenmodelle Richard Göbel.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Beispiele für Ausdrucksalgebren
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Agenda Motivation Formale Sprachen Compiler Compilerentwicklung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
AC Analyse.
Studienverlauf im Ausländerstudium
Schieferdeckarten Dach.ppt
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Virtueller Rundgang Casa Mariposa in Playa del Coco.
Formale Sprachen und Automaten
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
Leistungsbeschreibung Brückenplanung RVS RVS
Schulung Bebauungplanung mit
für Weihnachten oder als Tischdekoration für das ganze Jahr
Syntaxanalyse Bottom-Up und LR(0)
Der Test fängt mit dem nächsten Bild an!
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
1. Welcher Nerv innerviert diesen Muskel? NEU!
Analyse von Ablaufdiagrammen
PROCAM Score Alter (Jahre)
Geometrische Aufgaben
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Das ist die Geschichte eines kleinen Jungen aus der Schweiz.
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Symmetrische Blockchiffren DES – der Data Encryption Standard
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Großer Altersunterschied bei Paaren fällt nicht auf!
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Städtisches Gymnasium Beverungen Friedel Berlage
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Pigmentierte Läsionen der Haut
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Mathematical Programming Nichtlineare Programmierung.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Es war einmal ein Haus
Mensch – Maschine - Kommunikation
Wintersemester 2005 / Vorlesung
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
 Am Ende der letzten Stunde hatten wir über die Grenzen unserer Automaten-Modell gesprochen. Dr. Lars Ettelt2  Tipp: Parkhaus.  Einfahrt erst wenn.
 Präsentation transkript:

Formale Sprachen Teil 3 Klaus Becker 2006

2 Syntax und Semantik

3 Teil 1 Mini-Programmiersprache

4 Zielsetzung Ziel ist es, für eine einfache Programmiersprache einen Interpreter und einen Compiler zu entwickeln. Die hier betrachtete Programmiersprache orientiert sich an der Sprache zur Steuerung des Roboters Karol. hinlegen schritt wiederhole solange NichtIstZiegel wiederhole solange NichtIstWand schritt *wiederhole linksDrehen *wiederhole

5 Die Programmiersprache Zur Vereinfachung der Darstellung verwenden wir abkürzende Bezeichner für die Anweisungen der Programmiersprache. hinlegen schritt wiederhole solange NichtIstZiegel wiederhole solange NichtIstWand schritt *wiederhole linksDrehen *wiederhole h s wh nz wh nw s *wh l *wh

6 Die Programmiersprache MyKa Elementare Anweisungen: hZiegel hinlegen aZiegel aufheben sSchritt vorwärts llinks drehen rrechts drehen h s wh nz wh nw s *wh l *wh Elementare Bedingungen: nznicht auf Ziegel nwnicht vor Wand Kontrollanweisung: wh wiederhole solange... *wh Ein MyKa-Programm setzt sich – wie im Beispiel gezeigt – aus elementaren und Kontrollanweisungen zusammen. Bei der Darstellung von MyKa-Programmen dürfen mehrere Anweisungen in eine Zeile geschrieben werden,...

7 Zweistufige Sprachbeschreibung Zeichen: {h, a, s, l, r, nz, nw, wh, *wh} {h s wh nz wh nw s *wh l *wh,...} Sätze / Tokenfolgen: Wörter / Token: {ASCII: a, b, c,..., ´*´, ´ ´, chr(13), chr(10),...} Festlegung der korrekten Token (Wörter) Festlegung der korrekten Tokenfolgen (Sätze) Oft ist es sinnvoll, eine formale Sprache zweistufig festzulegen: Zeilenumbruch Alphabet für Token Alphabet für Programme Sprache der Token Sprache der Programme

8 Eine Grammatik für MyKa ! Terminalsymbole S = s L = l R = r H = h A = a NW = n w NZ = n z WHA = w h WHE = '*' w h... "Start Symbol" = ! Produktionen ::= ::= NW ::= NZ ::= S ::= L ::= R ::= H ::= A ::= WHA WHE MyKa1.grm

9 Aufgabe Starten Sie das Werkzeug GOLD Parser Builder und laden Sie die Datei MyKa1.grm. Testen Sie die hier vorgegebene Grammatik zur präzisen Festlegung der Programmiersprache MyKa.

10 Es fehlt die Semantik Bisher wurde nur die Syntax der Sprache MyKa festgelegt. Die Bedeutung der einzelnen Sprachelemente scheint klar zu sein. Aber ist das wirklich so? Bereits bei der elementaren Anweisung h ist nicht klar, wie viele Ziegel hingelegt werde, ob der / die Ziegel in die Zelle, in der sich der Roboter befindet, gelegt werden, oder in die vor dem Roboter usw.. Ziel ist es im Folgenden, auch die Semantik der Programmiersprache exakt zu beschreiben. Zwei Ansätze sollen hierzu vorgestellt werden: Zum einen soll die Bedeutung der Konstrukte der Sprache MyKa durch das Verhalten eines Interpreters festgelegt werden (Interpreteransatz). Zum anderen soll die Bedeutung von Konstrukten der Sprache MyKa auf die Bedeutung der Konstrukte einer anderen (bereits bekannten) Sprache zurückgeführt werden (Übersetzeransatz). Letztlich werden hier somit ein Interpreter und ein Übersetzer (Compiler) für die Programmiersprache MyKa entwickelt. Zur syntaktischen Vorbereitung werden zudem ein Scanner und ein Parser für diese Sprache benutzt.

11 Teil 2 Scanner und Parser

12 Syntaxanalyse Zur Analyse der Syntax der Sprache MyKa sollen im Folgenden ein Scanner und ein Parser entwickelt werden. Nach der Syntaxanalyse soll feststehen, ob eine vorgegebene Zeichenfolge ein syntaktisch korrektes MyKa- Programm darstellt. h s wh nz wh nw s *wh l *wh

13 Scanner Aufgabe eines Scanners ist es, aus einer Zeichenfolge lexikalische Einheiten zu bilden und diese als Tokenfolge aufzubereiten. h s wh nz wh nw s *wh l *wh Scanner h s wh nz wh nw s *wh l *wh Scanner-Automat

14 Scanner-Automat n q0 q1 q20 q3 q30 ´ ´; chr(13) q2 q10 ´ ´; chr(13); chr(10) w * zwzw h s; l; r; h; a Fehlerzustand Der Scanner benutzt einen endlichen Automaten zur Erkennung der lexikalischen Einheiten. Immer dann, wenn der Endzustand erreicht wird, ist ein Token erkannt. Danach beginnt der Scanner seine Arbeit wieder im Anfangszustand. w

15 Parser Aufgabe eines Parsers ist es, eine Tokenfolge auf syntaktische Korrektheit zu analysieren (und evtl. die Tokenfolge geeignet aufzubereiten). Parser Ok! Parser-Automat h s wh nz wh nw s *wh l *wh

16 Parser-Automat q0 q1 q2 any / s : any / l : any / r : any / h : any / a : wh / *wh : pop any / wh : push wh Der Parser benutzt einen Kellerautomaten zur syntaktischen Analyse der Tokenfolge. any / nz : any / nw : else / *wh : any / nz : any / nw : any / s : any / l : any / r : any / h : any / a : any / wh : any / *wh : Fehlerzustand Oberstes Kellerzeichen / Eingabezeichen: Kelleroperation Der Kellerautomaten akzeptiert eine Zeichenfolge, wenn der Automat nach Abarbeitung der Zeichenfolge im Enzustand ist und wenn zudem der Keller leer ist.

17 Aufgabe Testen Sie den implementierten Scanner. Schauen Sie sich die Implementierung an. Berücksichtigen Sie beim Scanner-Automaten zusätzlich folgende Kontrollanweisung: if th el *if Ergänzen Sie die Implementierung des Scanner-Automaten entsprechend und testen Sie den erweiterten Scanner.

18 Aufgabe Testen Sie den implementierten Parser. Schauen Sie sich die Implementierung an. Berücksichtigen Sie beim Parser-Automaten zusätzlich folgende Kontrollanweisung: if th el *if Ergänzen Sie die Implementierung des Parser-Automaten entsprechend und testen Sie den erweiterten Parser.

19 Teil 3 Ein Programm-Interpreter

20 Interpreter Ein Interpreter führt die Anweisungen Schritt für Schritt aus. Er beschreibt damit das Verhalten der jeweiligen Anweisungen. Eine präzise Interpreter- beschreibung kann somit zur Festlegung der Semantik der Elemente der Programmier- sprache benutzt werden (Interpreter-Semantik). Zustand vorher: abzuarbeitendes Programm; Roboterwelt h s wh nz wh nw s *wh l *wh Zustand nachher: abzuarbeitendes Programm; Roboterwelt

21 Ausführungstransformationen h s wh nz wh nw s *wh l *wh s wh nz wh nw s *wh l *wh wh nz wh nw s *wh l *wh 1 wahr wh nw s *wh l wh nz wh nw s

22 Ausführungstransformationen s wh nw s *wh l wh nz wh nw s... wh nw s *wh l wh nz wh nw s... 1 wahr s wh nw s *wh l wh nz wh nw s... 1 wh nw s *wh l wh nz wh nw s wahr

23 Ausführungstransformationen l wh nz wh nw s *wh l *wh wh nz wh nw s *wh l *wh 1 falsch wh nw s *wh l wh nz wh nw s wahr

24 Transformationsregeln... s s... Vor der Wand

25 Transformationsregeln... h h... Anzahl: n Anzahl: n+1

26 Transformationsregeln wh *wh... wahr wh *wh falsch wh *wh...

27 Semantikfestlegung mit Regeln Solange d. Restprogramm-Stapel nicht leer ist wende die zum obersten Stapelelement passende Transformationsregel an... s... Das Verhalten des Interpreters wird hier präzise mit Hilfe von Transformationsregeln festgelegt. Diese bilden somit die Grundlage für eine Implementierung des Interpreters.

28 Aufgabe Testen Sie den implementierten Interpreter. Schauen Sie sich die Implementierung an. Entwerfen Sie Transformationsregeln, die die Ausführung der folgenden Kontrollanweisung beschreiben: if th el *if Ergänzen Sie die Implementierung des Interpreters entsprechend der Transformationsregeln.

29 Teil 4 Ein Programm-Übersetzer

30 Übersetzer Ein Übersetzer transformiert Programme der Ausgangs- Programmiersprache (Quellsprache) in eine andere Sprache (Zielsprache). Eine präzise Übersetzer- beschreibung kann zur Festlegung der Semantik der Elemente der Ausgangs- Programmiersprache benutzt werden, sofern die Semantik der Zielsprache klar ist (Übersetzer-Semantik). Zustand vorher: abzuarbeitendes Programm; Roboterwelt Zustand nachher: abzuarbeitendes Programm; Roboterwelt h s wh nz wh nw s *wh l *wh h s nz 10 nw 8 s 4 l 2

31 Von der Quell- zur Zielsprache falsch h s nz? wahr falsch nw? wahr s l h s nz 10 nw 8 s 4 l 2h s wh nz wh nw s *wh l *wh Die Quellsprache MyKa verfügt über die Kontrollstruktur wh... *wh zur Ausführung von Wiederholungen. Die Zielsprache soll solche Wiederholungen durch GOTO- Sprünge ersetzen.

32 Von der Quell- zur Zielsprache falsch h s nz? wahr falsch nw? wahr s l 0: h 1: s 2: nz? 3: f: goto 10 4: w: nw? 5: f: goto 8 6: w: s 7: goto 4 8: l 9: goto 2 10: stop h s nz 10 nw 8 s 4 l 2 0: h 1: s 2: nz 3: 10 4: nw 5: 8 6: s 7: 4 8: l 9: 2 10: h s wh nz wh nw s *wh l *wh h s nz 10 nw 8 s 4 l GOTO-Programme werden in verkürzter Form als Folge von Token (siehe oben) dargestellt.

33 Übersetzungsvorgang im Detail h s wh nz wh nw s *wh l *wh 0 s wh nz wh nw s *wh l *wh 1 h wh nz wh nw s *wh l *wh 2 h s... nz wh nw s *wh l *wh 2 h s 2

34 Übersetzungsvorgang im Detail wh nw s *wh l *wh 4 h s nz * 2... nz wh nw s *wh l *wh 2 h s 2 s *wh l *wh 6 h s nz * nw * 4 2 nw s *wh l *wh 4 h s nz * 4 2

35 Übersetzungsvorgang im Detail... s *wh l *wh 6 h s nz * nw * 4 2 *wh l *wh 7 h s nz * nw * s 4 2 l *wh 8 h s nz * nw 8 s 4 2 *wh 9 h s nz * nw 8 s 4 l 2

36 Übersetzungsvorgang im Detail *wh 9 h s nz * nw 8 s 4 l 2 10 h s nz 10 nw 8 s 4 l 2

37 Transformationsregeln... i+1... s... s... i... Solange die Quellcode-Schlange nicht leer ist wende die passende Transformationsregel an Das Verhalten des Übersetzers kann präzise mit Hilfe von Transformationsregeln festgelegt werden. Diese bilden dann die Grundlage für eine Implementierung des Übersetzers. Markenzähler Hilfsstapel für Rücksprungmarken Quellcode Zielcode

38 Regel für eine elementare Anweisung Eine elementare Anweisung wird direkt in die Code-Schlange übernommen. Der Markenzähler wird um 1 erhöht.... i+1... s... s... i...

39 Regel für die Wiederhole-Anweisung... i i... wh... i... Die aktuelle Markennummer wird zur späteren Festlegung der Rücksprungadresse in einem Hilfsstapel zwischengespeichert.

40 Regel für die Wiederhole-Anweisung... i+2... *... i Die Bedingung wird in die Code-Schlange übernommen. Zusätzlich wird ein Platzhalter (hier *) übernommen, der später mit einer Marke für einen Vorwärtssprung ersetzt wird. Hiermit soll ein Sprung aus der Schleife ermöglicht werden, wenn die Bedingung nicht erfüllt ist. Des weiteren wird der Markenzähler um 2 erhöht. Hiermit soll ein Sprung zur ersten Anweisung innerhalb der Schleife ermöglicht werden, sofern die Bedingung erfüllt ist.

41 Regel für das Ende einer Wiederholung... i+1... i+1 … k... *wh... i... * … k... Die auf einem Hilfsstapel abgelegte Rücksprungmarke wird in die Codeschlange übernommen. Zusätzlich wird das letzte * in der Codeschlange durch den neuen Markenzähler ersetzt. Hierdurch wird der Sprung aus der Schleife realisiert.

42 Aufgabe Testen Sie den implementierten Compiler. Schauen Sie sich die Implementierung an. Entwerfen Sie Transformationsregeln, die die Übersetzung der folgenden Kontrollanweisung beschreiben: if th el *if Ergänzen Sie die Implementierung des Compilers entsprechend der Transformationsregeln.

43 Teil 5 Aufgaben und Lösungsvorschläge

44 Aufgabe Erweitern Sie die Programmiersprache um folgende Kontrollanweisung: if t e *if Ergänzen Sie entsprechend den Scanner, den Parser, den Interpreter und den Übersetzer (Codegenerator).

45 Die Programmiersprache Zur Vereinfachung der Darstellung verwenden wir abkürzende Bezeichner für die Anweisungen der Programmiersprache. hinlegen schritt wiederhole solange NichtIstZiegel wiederhole solange NichtIstWand schritt *wiederhole linksDrehen *wiederhole wh nw if nz th h s el s *if *wh

46 Erweiterter Scanner-Automat n q0 q1 q20 q3 q30 ´ ´; chr(13) q2 q10 ´ ´; chr(13); chr(10) w * zwzw h s; l; r; h; a; t; e Fehlerzustand w q4 i f i q5 q6 t eh l

47 Erweiterter Parser-Automat q0 q1 q2 any / s : any / l : any / r : any / h : any / a : wh / *wh : pop if / *if : pop any / th : push th th / el : pop any / wh : push wh any / if : push if any / nz : any / nw : Fehlerzustand Oberstes Kellerzeichen / Eingabezeichen: Kelleroperation else / *wh : any / nz : any / nw :

48 Zusätzliche Regeln f. d. Interpreter... wahr if th el *if falsch if th el *if...

49 Aufgabe Beschreiben Sie die Arbeitsweise des Code-Interpreters mit Hilfe geeigneter Transformationsregeln. Ergänzen Sie hierzu den folgenden Lösungsvorschlag.

50 Lösungsvorschlag... >s...i... s >...i+1

51 Lösungsvorschlag

52 Literaturhinweise A. Hermes, D. Stobbe: Informatik Zwei, Klett-Verlag E. Modrow: Automaten, Schaltwerke, Sprachen. Dümmlers-Verlag E. Modrow: Theoretische Informatik mit Delphi. Emu-online 2005.