@@ -18,8 +18,6 @@ title: Reguläre Sprachen, Ausdrucksstärke (Teil 2)
1818- Was sind formale und reguläre Grammatiken?
1919- In welchem Zusammenhang stehen all diese Begriffe?
2020
21-
22-
2321# Motivation
2422
2523## Was haben reguläre Sprachen mit Compilern zu tun?
@@ -36,12 +34,12 @@ Hier entsteht ein Tafelbild.
3634
3735## Wozu reguläre Sprachen im Compilerbau?
3836
39- - Reguläre Ausdrücke
37+ Reguläre Ausdrücke
4038
41- - definieren Schlüsselwörter und alle weiteren Symbole einer
42- Programmiersprache, z. B. den Aufbau von Gleitkommazahlen
43- - werden (oft von einem Generator) in DFAs umgewandelt
44- - sind die Basis des * Scanners* oder * Lexers*
39+ - definieren Schlüsselwörter und alle weiteren Symbole einer
40+ Programmiersprache, z. B. den Aufbau von Gleitkommazahlen
41+ - werden (oft von einem Generator) in DFAs umgewandelt
42+ - sind die Basis des * Scanners* oder * Lexers*
4543
4644# Lexer
4745
@@ -52,16 +50,15 @@ Ein **Lexer**
5250- kann aus regulären Ausdrücken automatisch generiert werden
5351
5452- wandelt mittels DFAs aus regulären Ausdrücken die Folge von Zeichen der
55- Quelldatei in eine Folge von sog. Token um
53+ Quelldatei in eine Folge von sog. Token um
5654
5755- bekommt als Input eine Liste von Paaren aus regulären Ausdrücken und
58- Tokennamen, z. B. ("while", WHILE)
56+ Tokennamen, z. B. ("while", WHILE)
5957
6058- Kommentare und Strings müssen richtig erkannt werden. (Schachtelungen)
6159
6260- liefert Paare von Token und deren Werte, sofern benötigt, z. B. (WHILE, \_ ),
63- oder (IDENTIFIER, "radius") oder (INTEGERZAHL, "334")
64-
61+ oder (IDENTIFIER, "radius") oder (INTEGERZAHL, "334")
6562
6663## Wofür reichen reguläre Sprachen nicht?
6764
@@ -77,19 +74,17 @@ beschreiben, die unendlich viele Werte annehmen können.
7774- Wo finden sich die oben genannten Variablen bei einem DFA wieder?
7875- Warum ist die erste Sprache oben nicht regulär, die zweite aber?
7976
80-
8177## Wie geht es weiter?
8278
8379Ein ** Parser**
8480
8581- führt mit Hilfe des Tokenstreams vom Lexer die Syntaxanalyse durch
8682
87- - basiert auf einer sog. kontextfreien Grammatik, deren Terminale die Token
88- sind
83+ - basiert auf einer sog. kontextfreien Grammatik, deren Terminale die Token sind
8984
9085- liefert die syntaktische Struktur in Form eines Ableitungsbaums (** syntax
91- tree** , ** parse tree** ), bzw. einen ** AST** (abstract syntax tree) ohne
92- redundante Informationen im Ableitungsbaum (z. B. Semikolons)
86+ tree** , ** parse tree** ), bzw. einen ** AST** (abstract syntax tree) ohne
87+ redundante Informationen im Ableitungsbaum (z. B. Semikolons)
9388
9489- liefert evtl. Fehlermeldungen
9590
@@ -109,7 +104,8 @@ Ein **Parser**
109104
110105::: outcomes
111106- k1: Ich kenne die Aufgaben eines Lexers
112- - k1: Ich kenne die Zusammenhänge zwischen DFAs, regulären Ausdrücken, regulären Grammatiken und Lexern
113- - k2: Ich kann für eine Beispielsprache begründen, warum sie nicht mit einem der oben genannten
114- Mechanismen beschrieben werden kann
107+ - k1: Ich kenne die Zusammenhänge zwischen DFAs, regulären Ausdrücken, regulären
108+ Grammatiken und Lexern
109+ - k2: Ich kann für eine Beispielsprache begründen, warum sie nicht mit einem der
110+ oben genannten Mechanismen beschrieben werden kann
115111:::
0 commit comments