Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Vorlesung Compilertechnik Sommersemester 2008
Baumautomaten Christian Klein Betreuer : Tim Priesnitz
Zerlegung von Graphen.
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
7. Automaten Ein Automat ist ein Sechstupel A= (I, O, Q, , q0, F).
Institut für Informatik Abt. Intelligente Systeme
8. Formale Sprachen und Grammatiken
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Technische Universität Dortmund
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Notationen A = ist eine endliche, nichtleere menge,
Grammatiken, Definitionen
Kapitel 4 Syntaktische Analyse: LR Parsing.
Parser generieren Yet Another Compiler – Compiler YACC.
Spielbäume Richard Göbel.
Java: Objektorientierte Programmierung
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Parser für CH3-Sprachen
Motivation Richard Göbel.
Stoyan Mutafchiev Betreuer: Ilhan, Tim
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (02 – Endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (06 – Reduktion endlicher Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (12 – Kellerautomaten, PDA) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (04 – Automaten mit ε-Transitionen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (03 – Nichtdeterminierte endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Agenda Motivation Lexikalische Analyse Generierung eines Scanners
Java – Werkzeuge zur Entwicklung endlicher Automaten
Agenda Motivation Formale Sprachen Compiler Compilerentwicklung
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
GROOVE Graphs for Object-Oriented Verification Seminar: SEFSIS Sommersemester 2006 Basil Becker
Christian Schindelhauer
Von der Sprache zum Programm
Semantik von UML Sequenzdiagrammen
Endliche Automaten Informatik JgSt. 13, Abitur 2009
Grenzen der Regularität
Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung
Akzeptor & Sprache.
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Entwurf und Implementierung eines Scanner-Generatorsystems
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Städtisches Gymnasium Beverungen Friedel Berlage
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 3: Potenzreihen und kontextfreie Sprachen (Vgl. Buch von A. Salomaa)
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.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Arne Vater Wintersemester 2006/07 28.
Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung
Informatik III Christian Schindelhauer Wintersemester 2006/07
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
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.
Arne Vater Wintersemester 2006/ Vorlesung
Mensch – Maschine - Kommunikation
Wintersemester 2005 / Vorlesung
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
 Am Ende der letzten Stunde hatten wir über die Grenzen unserer Automaten-Modell gesprochen. Dr. Lars Ettelt2  Tipp: Parkhaus.  Einfahrt erst wenn.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Gliederung 0. Motivation und Einordnung 1. Endliche Automaten
 Präsentation transkript:

Lexikalische Analyse Stephan Poll

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Einordnung und Funktion der lexikalischen Analyse Lexikalische Analyse Erste Phase des Analyseteils im Rahmen des Compilerbaus Modul des Compilers : Scanner Verschränktes Arbeiten mit dem Modul für die syntaktische Analyse Compiler: Ein in der Quellsprache soll in die Maschinensprache übersetzt werden Modul für Syntaxanalyse: Parser

Einordnung und Funktion der lexikalischen Analyse Aufgaben eines Scanners: Transformieren des Eingabestroms  Erkennen von Elementen der Quellsprache  Codieren der erkannten Elemente Output : Strom atomarer Einheiten  zur Weiterverarbeitung durch Parser Der Input besteht aus Elementen der Quellsprache  für Scanner zunächst große Zeichenkette Außerdem : Ausblenden von Zeichen wie Zeilenwechsel und Leerraum

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Grundsymbole Was sind Grundsymbole? Grundsymbole : zu erkennende Elemente der Zielsprache Art und Anzahl muss definiert werden Formale Definition erfolgt mit Hilfe von regulären Ausdrücken Scanner kennt nicht von vornherein  erst definieren Alternative Bezeichnungen: Token, Symbole,…

Grundsymbole Beispiel: if (a < 0) a=a+1; Mögliche Strukturierung Keywords  if Identifier  a Delimiter  ( , + , …. Literals  1 Spezialsymbole Literals  Notation für Werte von jeweiligen Datentypen

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Reguläre Sprachen und reguläre Ausdrücke Die vom Scanner erkannten Einheiten bilden eine nichtleere reguläre Sprache Beschreibung erfolgt über reguläre Ausdrücke

Reguläre Sprachen und reguläre Ausdrücke Regulärer Ausdruck Jedes Element eines Alphabets ist ein regulärer Ausdruck und beschreibt eine reguläre Sprache Verknüpfung einzelner Ausdrücke zu neuem Ausdruck reguläre Ausdrücke r und s: (rs) (r|s) r* Zuerst Alphabet Erwähnen Nichts sonst ist ein regulärer Ausdruck Mit regulärem Ausdruck festlegen , wie Grundsymbole strukturiert  Zum Beispiel Fließkomma zahl (.)+ (zahl)+ (E (+|-)? Zahl+)?

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Endliche Automaten Liegen als formales Modell der Erkennung von Grundsymbolen zu Grunde Beschreiben Verhalten mit Hilfe von Zuständen und Aktionen Ein Automat ist endlich, wenn die ihm zu Grunde liegende Zustandsmenge endlich ist Arten Nichtdeterministische endliche Automaten Deterministische endliche Automaten Was haben e A mit Analyse zu tun Endliche Automaten können verwendet werden, um zu simulieren Reg. A  Zustand abhängig von Eingabe  Endzustand nur bei korrekter Eingabe

Endliche Automaten Nichtdeterministische Endliche Automaten Zustandsübergänge unter ε Folgezustand nicht immer eindeutig Ein NEA ist ein 5-Tupel M = (Σ,Q, Δ,q0,F) Σ : Eingabealphabet Q : Zustandsmenge Δ ⊆ Q ⅹ (Σ ⋃ {ε}) ⅹ Q : Übergangsfunktion q0 ∈ Q : Startzustand F ⊆ Q : Endzustände Vorteil: Einfach zu konstruieren Nachteil: Simulation Σ und Q endlich Q beschreibt, welche Folgezustände möglich

Endliche Automaten Deterministische endliche Automaten Keine Übergänge unter ε Folgezustand eindeutig Übergangsrelation als partielle Funktion δ: δ : Q ⅹ Σ → Q Ebenfalls 5-Tupel M = (Σ,Q, δ ,q0,F)

Darstellung von Automaten Übergangsdiagramm Kantenmarkierter, endlicher und gerichteter Graph Beispiel: regulärer Ausdruck r = (a|b)+c Graph gehört zu einem DEA, der r beschreibt + bedeutet einmal oder mehr

Darstellung von Automaten Übergangstabelle Beispiel: r = (a|b)+c  Zustand Eingabesymbol a b c 1 2 3

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Erkennen von Grundsymbolen mit endlichen Automaten Zu jedem regulären Ausdruck lässt sich ein endlicher Automat konstruieren Eingabeüberprüfung durch Simulation Mögliches Vorgehen Konstruktion NEA  Simulation NEA Konstruktion NEA  Konstruktion DEA  Simulation DEA Konstruktion NEA  Konstruktion DEA  Minimierung DEA  Simulation DEA Konstruktion DEA  ggf. Minimierung  Simulation DEA

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Konstruktion eines NEA aus einem regulären Ausdruck Satz: “Zu jedem regulären Ausdruck r gibt es einen NEA, der die von r beschriebene reguläre Menge akzeptiert“ Konstruktion aus einem gegebenen Ausdruck r: Für jedes Symbol a aus dem r zu Grunde liegenden Alphabets ein Teilautomat:

Konstruktion eines NEA aus einem regulären Ausdruck Konstruktion Teilautomat für ε Regeln für die Kombination (s|t) Die Kombination erfolgt nach gewissen Regeln Die Endzustände der einzelnen Automaten sind nach Kombination keine Endzustände mehr

Konstruktion eines NEA aus einem regulären Ausdruck Regeln für die Kombination (weiter) (st) Endzustand und Anfangszustand verschmelzen

Konstruktion eines NEA aus einem regulären Ausdruck Beispiel: Regulärer Ausdruck r = y(x|z)*yz Vorgehen: 1.: Erstellen der Teilautomaten für x,y,z und ε

Konstruktion eines NEA aus einem regulären Ausdruck 2. Kombination von den NEA für y und ε 3. NEA für (x|z)

Konstruktion eines NEA aus einem regulären Ausdruck 4. NEA für (x|z)* Hinzufügen von zwei eps-Automaten Schleife von 9 nach vier für „*“

Konstruktion eines NEA aus einem regulären Ausdruck 5. NEA für y(x|z)*yz Hinzu noch: nea für y (Anfang und Ende), und z sowie eps….  verschmolzen Endzustand erwähnen  wenn Eingabe korrekt, NEA in Endzustand  akzeptierter Zustand

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Simulation eines NEA Idee NEA N zu einem regulären Ausdruck r Einlesen eines Inputstroms Ermitteln des Zustandsverlaufs Prüfen auf akzeptierten Zustand Problem Nichtdeterminiertheit

Simulation eines NEA Lösung Ermitteln aller möglichen Folgezustände Vorgehen Gegeben: aktueller Zustand z (oder Menge Z) und nächstes Eingabesymbol a move (z , a) = Z ε-clousure (Z) = Z2 Nach Ende der Eingabe: Prüfen, ob Menge von möglich Zuständen einen akzeptierten Zustand enthält Groß Z ist Menge von Zuständen

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten Erkennung von Grundsymbolen mit endlichen Automaten III.1 Konstruktion eines NEA aus einem regulären Ausdruck III.2 Simulation eines NEA III.3 Konstruktion eines DEA aus einem NEA III.3 Minimierung eines DEA III.4 Simulation eines DEA Implementierung eines Scanners Zusammenfassung

Konstruktion eines DEA aus einem NEA Satz: „ Wird eine Sprache L von einem NEA akzeptiert, so gibt es einen DEA der L akzeptiert.“ Prinzip:  Konstruktion eines DEA aus NEA durch Bildung von Zustandsgruppen Zustandsgruppen: ein- oder mehrelementig

Konstruktion eines DEA aus einem NEA Algorithmus Menge DZ = ε-clousure (s0) Prüfen, ob unmarkierter Zustand in DZ  wenn ja: weiter, sonst 7. Nimm ersten Zustand Z aus Z der nicht markiert ist Markiere Z Für jedes Eingabesymbol s: Zn = ε-clousure ( move ( Z , s) )  falls Zn nicht in DZ ii. sonst iii. Zn zu DZ als unmarkierter Zustand UT [ Z , s ] = Zn Gehe zu 2. Ende Schritt 1. : Ein unmarkierter Zustand Markiert erläutern Übergangstabelle!

Konstruktion eines DEA aus einem NEA Beispiel

Konstruktion eines DEA aus einem NEA Beispiel (weiter) A = ε-clousure (0) = {0,1} A: Schritt 5. für y B = ε-clousure ( move ( A , y ) ) = {2,3,4,5,7,10} B: Schritt 5. für x,y und z x  C = ε-clousure ( move ( B , x ) ) = {4,5,6,7,9,10} y  D = ε-clousure ( move ( B , y ) ) = {11,12} z  E = ε-clousure ( move ( B , z ) ) = {4,5,7,8,9,10} … A ist erster Zustand  aus zwei Zuständen des NEA Es gibt bei A für x und z keine Übergänge A wird nach durchlauf markiert  B ist neu+unmarkiert nur hinzugefügt weil noch kein identischer B nach z markiert

Konstruktion eines DEA aus einem NEA Zustand DEA Zustandsmenge NEA A {0,1} B {2,3,4,5,7,10} C {4,5,7,8,9,10} D {11,12} E F {13}

Minimierung eines DEA Algorithmus Konstruktion der Ausgangspartition P Für jede Gruppe G in P für jedes Eingabezeichen a Überprüfen, ob jeder Zustand in G unter a Übergang in selbe Gruppe G2 hat  wenn nein, weiter, sonst 3. G Zerlegen , weiter mit i. 3. Neue Partition P2 Verringerung der Zustandsanzahl, ohne Veränderung bzgl. der erkannten Sprache Tote Zustände Ausgangspartition: akzeptierte und nicht akzeptierte Zustände

Minimierung eines DEA Algorithmus (weiter) 4. Falls P2 identisch mit P weiter, sonst 2. mit P = P2 Repräsentanten wählen Verringerung der Zustandsanzahl, ohne dass sich Veränderung bzgl. der erkannten Sprache ergibt

Minimierung eines DEA Beispiel P : G1 = {A,B,C,D,E} , G2 = {F} Verringerung der Zustandsanzahl, ohne dass sich Veränderung bzgl. der erkannten Sprache ergibt

Minimierung eines DEA Beispiel (weiter) G1 : Trennung durch z G1.1 = {A,B,C,E} G1.2 = {D} G1.1 : Trennung durch y G1.1.1 = {A} G1.1.2 = {B,C,E} Finale Partition: Pneu : G1.1.1 = {A} , G1.1.2 = {B,C,E} , G1.2 = {D} , G2 = {F} Jeweils eine neue Iteration  neue Partition Gruppen mit nur einem Element nicht betrachtet

Simulation eines DEA Simulation durch „Nachschlagen in der Übergangstabelle“ Einzelne Symbole einer Eingabe sequentiell einlesen Aktuellen Zustand festhalten Überprüfen, ob nach vollständigem Einlesen aktueller Zustand ein Endzustand ist

Implementierung eines Scanners 2 Möglichkeiten der Implementierung Verwendung eines Scannergenerators Definieren der regulären Ausdrücke in festgelegter Terminologie Festlegen der Aktionen, die bei Erkennen von jeweiligen Grundsymbolen durchgeführt werden Beispiel für einen Generator: LEX Manuelle Implementierung Überlegungen bzgl. Reihenfolge und Struktur der Automaten Konstruktion von komplexen Automaten zur Überprüfung von mehreren regulären Ausdrücken

Zusammenfassung Lexikalische Analyse Zerlegen des Eingabestroms in atomare Einheiten Erkennen von Einheiten auf Basis vordefinierter Struktur  reguläre Ausdrücke Konstruktion von endlichen Automaten zu regulären Ausdrücken Simulation der Automaten zur Überprüfung einer Eingabe

Das war's…. Fragen ? 