43
Lexikalische Analyse Stephan Poll

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

Embed Size (px)

Citation preview

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

Lexikalische Analyse

Stephan Poll

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

2

InhaltI. 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

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

3

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

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

4

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

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

5

InhaltI. 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

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

6

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

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

7

Grundsymbole

Beispiel:

if (a < 0) a=a+1;

Mögliche Strukturierung

Keywords if

Identifier a

Delimiter ( , + , ….

Literals 1

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

8

InhaltI. 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

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

9

Reguläre Sprachen und reguläre Ausdrücke

Reguläre SpracheDie vom Scanner erkannten Einheiten bilden eine nichtleere reguläre

Sprache

Beschreibung erfolgt über reguläre Ausdrücke

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

10

Reguläre Sprachen und reguläre Ausdrücke

Regulärer AusdruckJedes 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*

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

11

InhaltI. 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

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

12

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

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

13

Endliche Automaten

Nichtdeterministische Endliche AutomatenZustandsü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

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

14

Endliche Automaten

Deterministische endliche AutomatenKeine Übergänge unter ε

Folgezustand eindeutig

Übergangsrelation als partielle Funktion δ:

δ : Q ⅹ Σ → Q

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

15

Darstellung von Automaten

Übergangsdiagramm

Kantenmarkierter, endlicher und

gerichteter Graph

Beispiel:

regulärer Ausdruck

r = (a|b)+c

0

1

2

a

b

b

a

3

c

c

ab

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

16

Darstellung von Automaten

ÜbergangstabelleBeispiel: r = (a|b)+c

ZustandEingabesymbol

a b c

0 1 2

1 1 2 3

2 1 2 3

0

1

2

b

a

a

b

3

c

c

ab

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

17

InhaltI. 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

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

18

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

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

19

InhaltI. 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

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

20

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:

i fa

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

21

Konstruktion eines NEA aus einem regulären Ausdruck

Konstruktion Teilautomat für ε

Regeln für die Kombination(s|t)

i f

ε

N(s)

N(t)

ε ε

ε

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

22

Konstruktion eines NEA aus einem regulären Ausdruck

Regeln für die Kombination (weiter)(st)

i N(s) N(t) f

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

23

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 ε

i fx

i fy

i fz

i fε

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

24

Konstruktion eines NEA aus einem regulären Ausdruck

2. Kombination von den NEA für y

und εy

1 2

3. NEA für (x|z)

5 6

7 8ε ε

ε

x

z

9

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

25

Konstruktion eines NEA aus einem regulären Ausdruck

4. NEA für (x|z)*

5 6

7 8ε ε

ε

x

z

4 9εε 10

ε

ε

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

26

Konstruktion eines NEA aus einem regulären Ausdruck

5. NEA für y(x|z)*yz

2

ε

5 6

7 8ε ε

ε

x

z

4 9

z11 ε 12

ε

13

10

0 ε 1y

ε

ε

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

27

InhaltI. 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

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

28

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

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

29

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

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

30

InhaltI. 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

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

31

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

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

32

Konstruktion eines DEA aus einem NEA

Algorithmus

1. Menge DZ = ε-clousure (s0)

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. Zn = ε-clousure ( move ( Z , s) ) falls Zn nicht in DZ ii. sonst iii.

ii. Zn zu DZ als unmarkierter Zustand

iii. UT [ Z , s ] = Zn

6. Gehe zu 2.

7. Ende

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

33

Konstruktion eines DEA aus einem NEA

Beispiel

2

ε

5 6

7 8ε ε

ε

x

z

4 9

z11 ε 12

ε

13

10

0 ε 1y

ε

ε

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

34

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}

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

35

Konstruktion eines DEA aus einem NEA

ZustandDEA

Zustandsmenge

NEAA {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}

F

A

D

B

C

E

x

z

x

z x

y

y

y

z

y

z

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

36

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 G2 hat

wenn nein, weiter, sonst 3.

ii. G Zerlegen , weiter mit i.

3. Neue Partition P2

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

37

Minimierung eines DEA

Algorithmus (weiter)

4. Falls P2 identisch mit P weiter, sonst 2. mit P = P2

5. Repräsentanten wählen

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

38

Minimierung eines DEA

Beispiel

P : G1 = {A,B,C,D,E} , G2 = {F}

F

A

D

B

C

E

x

z

x

z x

y

y

y

z

y

z

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

39

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}

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

40

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

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

41

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

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

42

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

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

43

Das war's….

Fragen ?