Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lexikalische Analyse Stephan Poll. 1 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen.

Ähnliche Präsentationen


Präsentation zum Thema: "Lexikalische Analyse Stephan Poll. 1 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen."—  Präsentation transkript:

1 Lexikalische Analyse Stephan Poll

2 1 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

3 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

4 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

5 4 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

6 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

7 6 Grundsymbole Beispiel: if (a < 0) a=a+1; Mögliche Strukturierung Keywords  if Identifier  a Delimiter  (, +, …. Literals  1

8 7 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

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

10 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*

11 10 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

12 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

13 12 Endliche Automaten Nichtdeterministische Endliche Automaten Zustandsübergänge unter ε Folgezustand nicht immer eindeutig Ein NEA ist ein 5-Tupel M = (Σ,Q, Δ,q 0,F) Σ :Eingabealphabet Q: Zustandsmenge Δ ⊆ Q ⅹ ( Σ ⋃ { ε }) ⅹ Q :Übergangsfunktion q 0 ∈ Q :Startzustand F ⊆ Q: Endzustände

14 13 Endliche Automaten Deterministische endliche Automaten Keine Übergänge unter ε Folgezustand eindeutig Übergangsrelation als partielle Funktion δ : δ : Q ⅹ Σ → Q

15 14 Darstellung von Automaten Übergangsdiagramm Kantenmarkierter, endlicher und gerichteter Graph Beispiel: regulärer Ausdruck r = (a|b) + c

16 15 Darstellung von Automaten Übergangstabelle Beispiel: r = (a|b) + c  Zustand Eingabesymbol abc

17 16 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

18 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

19 18 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

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

21 20 Konstruktion eines NEA aus einem regulären Ausdruck Konstruktion Teilautomat für ε Regeln für die Kombination (s|t)

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

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

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

25 24 Konstruktion eines NEA aus einem regulären Ausdruck 4. NEA für (x|z)*

26 25 Konstruktion eines NEA aus einem regulären Ausdruck 5. NEA für y(x|z)*yz

27 26 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

28 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

29 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) = Z 2 Nach Ende der Eingabe: Prüfen, ob Menge von möglich Zuständen einen akzeptierten Zustand enthält

30 29 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen und reguläre Ausdrücke II.3 Endliche Automaten III.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 IV.Implementierung eines Scanners V.Zusammenfassung

31 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

32 31 Konstruktion eines DEA aus einem NEA Algorithmus 1.Menge DZ = ε-clousure (s 0 ) 2.Prüfen, ob unmarkierter Zustand in DZ  wenn ja: weiter, sonst 7. 3.Nimm ersten Zustand Z aus Z der nicht markiert ist 4.Markiere Z 5.Für jedes Eingabesymbol s: i.Z n = ε-clousure ( move ( Z, s) )  falls Z n nicht in DZ ii. sonst iii. ii.Z n zu DZ als unmarkierter Zustand iii.UT [ Z, s ] = Z n 6.Gehe zu 2. 7.Ende

33 32 Konstruktion eines DEA aus einem NEA Beispiel

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

35 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{4,5,7,8,9,10} F{13}

36 35 Minimierung eines DEA Algorithmus 1.Konstruktion der Ausgangspartition P 2.Für jede Gruppe G in P für jedes Eingabezeichen a i.Überprüfen, ob jeder Zustand in G unter a Übergang in selbe Gruppe G 2 hat  wenn nein, weiter, sonst 3. ii.G Zerlegen, weiter mit i. 3.Neue Partition P 2

37 36 Minimierung eines DEA Algorithmus (weiter) 4.Falls P 2 identisch mit P weiter, sonst 2. mit P = P 2 5.Repräsentanten wählen

38 37 Minimierung eines DEA Beispiel P : G 1 = {A,B,C,D,E}, G 2 = {F}

39 38 Minimierung eines DEA Beispiel (weiter) G 1 : Trennung durch z G 1.1 = {A,B,C,E} G 1.2 = {D} G 1.1 : Trennung durch y G = {A} G = {B,C,E} Finale Partition: P neu : G = {A}, G = {B,C,E}, G 1.2 = {D}, G 2 = {F}

40 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

41 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

42 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

43 42 Das war's…. Fragen ?


Herunterladen ppt "Lexikalische Analyse Stephan Poll. 1 Inhalt I.Einordnung und Funktion der lexikalische Analyse II.Grundlagen II.1 Grundsymbole II.2 Reguläre Sprachen."

Ähnliche Präsentationen


Google-Anzeigen