Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen

Ähnliche Präsentationen


Präsentation zum Thema: "Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen"—  Präsentation transkript:

0 Lexikalische Analyse Stephan Poll

1 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

2 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

3 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

4 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

5 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,…

6 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

7 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

8 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

9 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+)?

10 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

11 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

12 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

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

14 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

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

16 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

17 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

18 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

19 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:

20 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

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

22 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 ε

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

24 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 „*“

25 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

26 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

27 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

28 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

29 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

30 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

31 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!

32 Konstruktion eines DEA aus einem NEA
Beispiel

33 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

34 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}

35 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

36 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

37 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

38 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

39 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

40 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

41 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

42 Das war's…. Fragen ?


Herunterladen ppt "Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen"

Ähnliche Präsentationen


Google-Anzeigen