Einführung in den Compilerbau

Größe: px
Ab Seite anzeigen:

Download "Einführung in den Compilerbau"

Transkript

1 Einführung in den Compilerbau Lexikalische Analyse I Dr. Armin Wolf 2. Vorlesung SoSe 2010, Universität Potsdam 1

2 Organisatorisches Schriftliche Prüfung (Klausur) wie wäre es mit Mo. 26. Juli 2010? - Andere Termine gewünscht? 2

3 Lexikalische Analyse Strategie: Suche nach dem längsten Zeichenmuster, dazu evtl. Vorausschau und Backtracking Grundlage: reguläre Sprach-Ausdrücke endliche Automaten Vorgehensweise: Formulieren der regulären Ausdrücke der Sprachsymbole Konstruieren eines Nicht-determ. Endl. Automaten (NEA) Extrahieren eines Deterministischen Endlichen Automaten (DEA) Extrahieren eines minimalen (vollständigen) DEA zusätzliche Terminalzustände für Fehler. 3

4 Ziel/Vorgehen der lexikalischen Analyse Ziel: Spezifikation und Implementierung von Scannern Lernen von Techniken Vorgehensweise: 1. Beschreibung der Struktur der Symbole 2. Übersetzung der Beschreibung in ein Programm Erfolgt die Beschreibung der Symbole durch reguläre Ausdrücke, ist die Übersetzung relativ einfach und effizient und kann automatisch erfolgen. Lex- oder ANTLR-Compiler Symbol Quellprogramm Scanner Parser bestimme nächstes Symbol Symboltabelle 4

5 Aufgaben der lexikalischen Analyse und Abgrenzung gegenüber der Syntaxanalyse Aufgabe des Scanners - Erkennen von Symbolen im Quelltext (längstes Muster) - Bereinigung des Quelltextes: Kommentare, Leerzeichen, Tabulatoren, Zeilenumbrüche etc. ignorieren evtl. sehr schwierig: DO 5 I = 1.25 (Zuweisung zu einer Variablen DO5I ) versus DO 5 I = 1,25 (Schleife von 1 bis 25 mit Schleifenzähler I ) - Zuordnung von Dateipositionen (Zeile/Spalte) zu Fehlermeldungen. Warum Trennung von lexikalischer und syntaktischer Analyse? 1. Vereinfachung der Systemgestaltung: Parser muss nicht die Konvention der Kommentare berücksichtigen 2. Höhere Effizienz durch spezifische Implementierungstechniken, z.b. Anwendung von Puffern für die lexikalische Analyse 3. Verbesserung der Portabilität: Spezifische Eigenschaften des Eingabealphabets bleiben auf den Scanner beschränkt (Unicode versus ASCII o.ä.) 5

6 Terminologie Lexem Zeichenfolge im Quellprogramm, die eine lexikalische Einheit bildet Symbol unterschiedliche Lexeme in der Eingabe können zum gleichen Symbol in der Ausgabe führen, z.b. Bezeichner. Muster beschreibt in Regelform eine Menge von Lexemen, die durch ein bestimmtes Symbol repräsentiert werden, z.b. Letter (Letter Digit)*. Attribute sind den Symbolen zugeordnet, um spezifische Informationen zu speichern, z.b. das entsprechende Lexem. Häufig wird nur ein Attribut angegeben: der Verweis auf den Symboltabelleneintrag. Wort ist eine Folge von null oder mehr Symbolen, die aus dem Startsymbol der Grammatik der Sprache, zu der das Wort gehört, hergeleitet werden kann. Das leere Wort wird als ε geschrieben. String allgemeinerer Begriff als Wort. Beliebige Folge von Zeichen aus dem zugelassenen Alphabet. Während ein Wort die aus dem Startsymbol herleitbare Folge von Symbolen ist, hat ein String zunächst keine festgelegte Bedeutung. Sprache Menge aller Wörter (oder Menge aller von der Grammatik erlaubten Strings) 6

7 Effizientes Scannen: Verwendung zweiteiliger Eingabepuffer 2 Hälften (Array) mit jeweils n+1 Zeichen (n=typische Blocklänge) 2 Zeiger (Integer) beginn (des Lexems) / vorwärts (akt. Zeichen) 2 Sonderzeichen EOF am Ende der Pufferhälften Wenn vorwärts == EOF dann 3 Fälle unterscheiden: am Ende der 1. Hälfte 2. Hälfte neu laden (n Zeichen) und vorwärts++ (Beginn der 2. Hälfte) Am Ende der 2. Hälfte 1. Hälfte neu laden (n Zeichen) und vorwärts = 0 (Beginn der 1. Hälfte) weder noch: Dateiende erkannt: beende lexikalische Analyse. Lexem erkannt: entweder vorwärts auf Ende des Lexem oder auf nächstem Zeichen: beginn und vorwärts auf nächstes Zeichen Lexem nicht erkannt: Rücksetzen von vorwärts auf beginn (ggf. Alternativen probieren oder Fehlerbehandlung anstoßen) Problem: sehr lange Symbole (>2n Zeichen) nicht behandelbar. 7

8 Beispiele für Symbole/Lexeme Symbol Exemplarische Lexeme Informelle Beschreibung const if const if Schlüsselsymbol const Schlüsselsymbol if relation <, <=, ==,!=, >=, > binäre Relationszeichen id Pi, count, var123, Constraint, QuickSort, SingleResource, single Bezeichner: Buchstabe gefolgt von Buchstaben oder Ziffern num , 0, 42, 6.02E23 bel. numerische Konstante / Zahl literal (String) core dumped\n, WARNING, Error!!! Bel. Zeichen zw. und ausser selbst 8

9 Reguläre Ausdrücke Reguläre Ausdrücke - Definition: Gegeben sei ein Alphabet (Menge von Zeichen) Σ. 1. ε ist ein regulärer Ausdruck und bezeichnet {ε}, die Sprache/Menge, die den leeren String enthält. 2. Wenn a ein Zeichen aus dem Alphabet Σ ist, dann ist a ein regulärer Ausdruck und bezeichnet die Sprache/Menge {a}, die den String a enthält. 3. Der reguläre Ausdruck r bezeichnet die Sprache L(r), die durch ihn beschrieben wird. 4. Wenn r ein regulärer Ausdruck ist, dann auch (r), d.h. reguläre Ausdrücke können beliebig oft geklammert werden. 5.. Wenn r und s reguläre Ausdrücke sind und die Sprachen L(r) und L(s) bezeichnen, dann gilt: a) (r) (s) ist ein regulärer Ausdruck und bez. L(r) U L(s) (Vereinig.) b) (r)(s) ist ein regulärer Ausdruck und bez. L(r) L(s) (Konkat.) c) (r)* ist ein regulärer Ausdruck und bez. (L( r))* := U i=0 L(r) i 9

10 Reguläre Menge Reguläre Menge ist die von einem regulärem Ausdruck r bezeichnete Sprache L(r) Abkürzungen r+ = r r* (umgekehrt: r* = r + ε); r? = r ε; [abc] = a b c; [a-z] = a z Bedeutung + : ein- oder mehrmaliges Auftreten;?: null- oder einmaliges Auftreten Regeln zur Vermeidung von Klammern in regulären Ausdrücken Die einstelligen (Postfix-)Operatoren *, +,? haben die höchste Priorität Die Konkatenation hat die zweithöchste Priorität, ist assoziativ u. distributiv bzgl. Die Vereinigung hat die dritthöchste Priorität und ist assoziativ 10

11 Beispiele regulärer Ausdrücke a b*c (a) ((b)*(c)) Menge aller Strings, die aus einem einzelnen a oder aus null oder mehr b gefolgt von einem c bestehen. a(b c) (ab) (ac) gemäß Distributivgesetz a b*c (a) ((b)*(c)) Menge aller Strings, die aus einem einzelnen a oder aus null oder mehr b gefolgt von einem c bestehen. a b (a) (b) Menge {a, b} (a b) (a b) aa ab ba bb Menge {aa, bb, ba, bb} a* Menge {ε, a, aa, aaa, } (a b)* Menge aller Strings, die aus null oder mehr a s und b s bestehen (a*b*)* Menge aller Strings, die aus null oder mehr a s und b s bestehen a a*b Menge {a, b, ab, aab, aaab, } [A-Z a-z][a-z a-z 0-9]* Menge aller Bezeichner, die aus Buchstaben und Ziffern bestehen, beginnend mit einem Buchstaben. (a b)* abb Menge aller aus a s und b s bestehender Strings, die mit abb enden. 11

12 Bsp. für reguläre Definitionen (EBNF) 1. Menge der Pascal-Bezeichner ( Bezeichner bestehend aus Buchstaben und Ziffern beginnend mit einem Buchstaben) letter A B Z a b z digit id letter(letter digit)* 2. Menge relationaler Operatoren relop < <= = <> > >= 3. vorzeichenlose Zahlen in Pascal int 0 (( 1 9 ) ( )*) 4. Gleitpunkzahlen mit optionalen Vorzeichen/Zehnerpotenzen (scientific format)? num ( + - )? digit + (. digit + )? ( E ( + - )? digit + )? Wie muss das Ganze aussehen, wenn führende Nullen und + - 0(.0+)? unzulässig sind? 12

13 Grenzen regulärer Ausdrücke/Sprachen Wohlgeformte Klammerausdrücke z.b. ((( ) * )² / (39.0E ))³ warum? Die Menge {wcw w ist ein String bestehend aus a s und b s} ist keine reguläre Sprache warum? 13

14 (Zustands)Übergangsdiagramme dienen der Umsetzung regulärer Definition Übergangsdiagramme stellen dar, welche Aktionen ausgeführt werden, sobald der Scanner ein Symbol erkennen soll. Kreise im Übg.-Diagramm heißen Zustände s (im allg. mit Zahlen bezeichnet); Kanten führen von einem Zustand s zu einem Zustand s und tragen Marken (Angaben des zulässigen Eingabezeichens auf diesem Weg) Marke other bezeichnet alle nicht explizit genannten Eingabezeichen an Kanten aus einem Knoten s = > other Ein Zustand des Übergangsdiagramms ist als Startknoten ausgezeichnet: Start s 14

15 Übergangsdiagramme Bsp.: Übergangsdiagramm für die Muster >= und > Start > = other 8 * * (Stern) bedeutet: Ein Zurücksetzen des Vorwärtszeigers in der Eingabe ist erforderlich. Vorwärtszeiger zeigt hinter das zuletzt verbrauchte Zeichen im Eingabestrom akzeptierender Zustand Ein akzeptierender Zustand (Doppelkreis) sagt aus, dass ein Symbol erkannt wurde. Die Abarbeitung eines Übergangsdiagramms misslingt, wenn kein akzeptierender Zustand erreicht wird. Der Vorwärtszeiger wird in diesem Fall auf die Position am Startsymbol des Übergangsdiagramms zurückgesetzt. Wenn alle möglichen Übergangsdiagramms zum Misserfolg führen, wird ein lexikalischer Fehler gemeldet. 15

16 < Start = Symbol return relop Attributwert tokenval = LE > 3 return relop tokenval = NE other 4 * return relop tokenval = LT = 5 return relop tokenval = EQ > Beispiel : 6 = Übergangsdiagramm für relationale Operatoren relop < <= = <> > >= other return relop return relop 7 8 * tokenval = GE tokenval = GT 16

17 Lexikalische Analyse Beispiel: Übergangsdiagramm für Bezeichner und Schlüsselwörter Letter A Z a z Digit 0. 9 Id letter ( letter digit)* Letter oder Digit Start Letter other return id tokenval = Lexem 17

18 Lexikalische Analyse Beispiel: vorzeichenlose Zahlen Num Ziffer + (. Ziffer + )? ( E ( + - )? Ziffer + )? Fraction Exponent Maximal langes Lexem muss gelesen werden, also darf bei der Eingabe von 12.3E4 nicht schon für 12 oder 12.3 ein akzeptierender Zustand erreicht werden. Versuch der Erkennung der längsten Variante zuerst (Diagramm-Reihenfolge ist signifikant!) Ziffer Ziffer Ziffer Start Ziffer. Ziffer e + oder - Ziffer other * e Ziffer return num, tokenval = Zahl Ziffer Ziffer Start Ziffer. Ziffer other * return num, tokenval = Zahl Ziffer Start Ziffer other * return num, tokenval = Zahl 18

19 Lexikalische Analyse Weiter: Übergangsdiagramme Beispiel: Übergangsdiagramm zum Erkennen von Leerzeichen Lz Start Lz other * Kein Rückgabewert, sondern Versuch des Erkennens des nächsten Symbols Aufgabe: Übergangsdiagramme für Java-Kommentare Was ist bei mehrzeiligen Kommentaren zu beachten? 19

20 Der Umgang mit Schlüsselworten In heutigen Programmiersprachen sind Schlüsselworte reserviert, d.h. z.b. dass in Java then kein zulässiger Variablenbezeichner ist. Keine Ausnahmebehandlung, sondern Verwendung eines Tricks: Schlüsselworte werden als spezielle Bezeichner betrachtet, da Teilmenge der von [ A - Z a - z ] [ A - Z a - z 0-9 ]* beschriebenen Sprache Geeignete Initialisierung der Symboltabelle mit Schlüsselworten Initialisierung/ Erfolgreicher Scan Aufruf von insert(string, Symbol) unter Verwendung von lookup(symbol) insert(string, Symbol) liefert entspr. Index aus Symboltabelle, ggf. neu erzeugt (lookup(symbol) == 0, siehe unten); bei bereits vorh. Schlüsselwort (z.b. für if ) den entspr. Index. lookup(symbol) liefert ggf. entspr. Index aus Symboltabelle: - 0 falls Symbol (noch) nicht vorhanden; - Index des bereits vorhandenen Eintrags; ansonsten. 20

21 Lexikalische Analyse Endliche Automaten (EA) Sind verallgemeinerte Übergangsdiagramme. Sowohl nichtdeterministische endliche Automaten (NEA) als auch deterministische endliche Automaten (DEA) erkennen beide exakt die Sprachen regulärer Ausdrücke. Endliche Automaten NEA Erkennen langsamer. Im Allg. kleiner Speicherbedarf DEA Erkennen schneller. Im Allg. größerer Speicherbedarf Reguläre Ausdrücke sind in beide Typen von endlichen Automaten überführbar. Umgekehrt akzeptiert jeder endliche Automat eine reguläre Sprache Die durch einen (N/D)EA definierte Sprache ist die Menge aller von ihm akzeptierter Eingabestrings. 21

22 Lexikalische Analyse Nichtdeterministische endl. Automaten (NEA) Ein NEA ist ein math. Modell bestehend aus 1. einer Zustandsmenge S Kodierung (z.b.): 7 2. einer Menge Σ von Eingabesymbolen (Eingabealphabet) 3. einer Übergangsfunktion move Kodierung (z.b.) move bildet Paar ( Zustand, Symbol) 7 a a 8 9 auf eine ab. Menge von Zuständen 4. einem ausgezeichneten Zustand, dem Start-Zustand Kodierung. (z.b.) Start 1 5. einer Menge von akzeptierenden Zuständen Kod. (z.b.) 9 22

23 Lexikalische Analyse Ein NEA läßt sich als Übergangsgraph (nichtdeterministisches Übergangsdiagramm) darstellen. Übergangsgraph Ein Übergangsgraph ist ein markierter, gerichteter Graph, dessen Knoten Zustände und dessen Kanten Übergangsfunktionen entsprechen. Ein Übergangsgraph hat Ähnlichkeit mit einem Übergangsdiagramm. Die Unterschiede sind: Mehrere aus einem Knoten herausführende Kanten können mit dem gleichen Zeichen markiert sein. Kanten können mit dem ausgezeichneten Symbol (leeres Wort) markiert sein 23

24 Lexikalische Analyse Beispiel: Übergangsgraph für (a b)*abb (Tafelübung!) a Start a b b b 24

25 Lexikalische Analyse Beispiel: Übergangsgraph für aa* bb* (Tafelübung!) a a 1 2 Start 0 b 3 b 4 25

26 Lexikalische Analyse Die Darstellung des Übergangsgraphen erfolgt im Allg. in einer Übergangstabelle Übergangstabelle enthält eine Zeile i für jeden Zustand iund eine Spalte für jedes Eingabesymbol a des Übergangsdiagramms (evtl. auch ε). Für Zeile i und Symbol a ist die Menge aller Folgezustände {j,k,l,m,...} eingetragen, die vom Zustand i aus durch einen Übergang beim Vorliegen der Eingabe a erreicht werden können. Zustände Eingabesymbole a Zustand i {j, k, l, m,...} 26

27 Lexikalische Analyse Beispiel: Übergangstabelle für einen Übergangsgraphen (Tafelübung!) NEA für aa* bb* a Start 0 1 a 2 3 b 4 b Zustand Eingabesymbol ε a b { 1,3 } { 2 } - - { 2 } { 4 } - - { 4 } 28

28 Lexikalische Analyse Deterministische endl. Automaten ( DEA ) Spezialfall eines NEA, wobei 1. kein Zustand einen ε Übergang hat 2. für jeden Zustand s und jedes Eingabesymbol a höchstens eine mit a markierte Kante aus s hinausführt. In der Übergangstabelle eines DEA stehen als Eintragungen jeweils nur einzelne Zustände (und nicht Mengen von Zuständen). Beispiel: DEA, der (a b)* abb erkennt: (Tafelübung? später!) a Start a b b a b b a 29

29 Lexikalische Analyse Algorithmus: Simulation eines DEA Geg.: Eingabestring X, abgeschlossen mit eof ( Dateiende-Kennzeichen) DEA D mit Startzustand s 0 und Menge F akzeptierender Zustände. Ges.: Ja, falls X von D akzeptiert wird, sonst Nein Methode: Auf X wird folgender Algorithmus angewendet: s := s 0 ; /* beginne beim Startzustand */ c: = nextchar; / * liefert nächstes Zeichen des Eingabestrings */ while c eof do s := move (s,c); / * liefert Zustand zu dem Übergang von s bei Eingabezeichen c führt */ c:= nextchar; end if (s ist akzeptierend) then return Ja ; else return Nein ; 30

30 Lexikalische Analyse Umwandlung eines NEA in einen DEA Übergangstabelle NEA Übergangstabelle DEA Zustand Eingabe Zustand Eingabe s 0 {s i, s j } s 1 s 0 A s 1 Menge von Zuständen Jeder Zustand des DEA entspricht einer Menge von Zuständen des NEA ein Zustand Vorgehensweise: Teilmengenkonstruktion Idee: jeder Zustand des DEA entspricht Menge von Zuständen des NEA Zusammenfassung der Zustände des NEA, die mit einer Eingabe erreichbar. Zahl der Zustände des DEA im schlimmsten Fall exponentiell bezüglich NEA. 31

31 T 0 Lexikalische Analyse ε ε ε 6 1 ε ε ε 7 4 a 2 3 a Algorithmus: Umwandlung NEA DEA (Teilmengenkonstruktion) Geg.: NEA: N mit Startzustand s 0 Ges.: DEA: D, der die gleiche Sprache wie N akzeptiert Methode: Aus N Erstellung einer Übergangstabelle Dtran für D. 8 Jeder Zustand von D entspricht einer Menge von Zuständen von N. Die Behandlung der Mengen von NEA-Zuständen erfolgt durch folgende Operationen: Bsp. T = {0,1,2,4,7} (siehe oben) ε-closure (0) = {0,1,2.4,7} Bsp. T wie oben: ε -closure (T)= {0,1,2,4,7} Bsp. T wie oben: {0,1,2,4,7} move (T, a ) = { 3,8 } ε-closure(s) Zustand ε-closure(t) Menge v. Zust. move(t, a) liefert Menge der NEA- Zustände, die vom NEA- Zust. s nur über ε-übergänge erreichbar sind (mindest. über einen virtuellen ε-übergang). s ist in ε-closure(s) enthalten! liefert Menge der NEA Zustände, die vom NEA- Zustand s aus T nur durch ε-übergänge erreichbar sind. (kanonische Erweiterung) liefert Menge der NEA- Zustände, die von NEA- Zust. s aus T über einen Übergang für das Eingabesymbol a erreicht werden können. 32

32 Lexikalische Analyse Beispiel Geg.: T mit T = {0,1,2,4,7} (vom Startzustand durch ε- Übergänge T erreichbar) 0 Die zusammengesetzte Operation ε-closure(move(t, a)) liefert Menge der NEA- Zustände, die ausgehend von der Menge von Zuständen, die durch Übergänge für das Eingabesymbol a erreicht werden können (Anwendung von move(t, a)), schließlich durch ε-übergänge erreichbar sind. ε ε-closure(move(t, a)) ε ε 6 1 ε ε a 2 3 ε move(t,a) a 33

33 Lexikalische Analyse Berechnung von ε-closure(t) lege alle Zustände (des NEA) in T auf einen Stapel stack; ε-closure(t) := T; while stack nicht leer ist do begin t := stack.pop(); // entferne das oberste Element vom Stapel for jeden Zustand u, für den es eine ε-kante von t nach u gibt do begin if u ist nicht in ε-closure(t) then begin füge u zu ε-closure(t) hinzu; stack.push(u); // lege u auf den Stapel end end end Berechnungsaufwand? 34

34 Lexikalische Analyse Fortsetzung: Algorithmus NEA DEA Die Menge der Zustände von D: Dstates, die Übergangstabelle von D: Dtrans Der Startzustand von D: ε-closure(s 0 ). Die Teilmengenkonstruktion fügt weitere Zustände und Übergänge hinzu. Jeder Zustand von D entspricht jener Menge von NEA- Zuständen, in denen sich N nach Lesen einer Folge von Eingabezeichen befinden kann, wobei alle möglichen ε- Übergänge vor und nach dem Lesen von Zeichen berücksichtigt sind. Ein Zustand von D ist akzeptierend, wenn er eine Menge von NEA- Zuständen repräsentiert, von denen wenigstens einer ein akzeptierender Zustand von N ist. 35

35 Lexikalische Analyse Fortsetzung: Algorithmus NEA DEA Teilmengenkonstruktion (Aufwand?) ε-closure(s 0 ) ist initial der einzige Zustand T von Dstates und unmarkiert while es einen unmarkierten Zustand T in Dstates gibt do begin markiere T; for jedes Eingabezeichen a (für das es eine Kante aus T gibt) do begin U := ε-closure(move(t,a)); if U ist nicht in Dstates then begin füge U als unmarkierten Zustand zu Dstates hinzu; Dtrans(T, a) := U; // Dtrans ist die Übergangstabelle von D end end end Zustand Eingabesymbol 36

36 Bsp. : Geg:: NEA für ( a b )*abb (etwas andere Form als vorher) Ges.: DEA a 2 3 (autom. aus regulärem Ausdruck) Start a b b Eingabealphabet: { a,b } Startzustand des äquivalenten DEA: A = ε-closure(0) = {0,1,2,4,7} Dstates = { A } In der while- Schleife: A markieren For-Schleife-Start, Eingabezeichen: a U := ε-closure (move(a,a)) Lexikalische Analyse b Menge aller Zustände N, die mit Elementen aus A durch einen mit a markierten Übergang zu erreichen sind. A a a 3 8 move(a,a) = {3, 8} diese Zustände sind von 0 aus über ε-markierte Kanten zu erreichen. ε-closure ({ 3,8 }) alle Zustände, die über ε-markierte Kanten zu erreichen sind = {1,2,3,4,6,7,8} = B neuer Zustand des DEA 37

37 Lexikalische Analyse Weiter am Bsp. : Geg.: NEA für ( a b )*abb Ges.: DEA Start a b 5 3 a b b Markierung Dstates = { A,B } Dtrans( A, a ) = B weiter in der For-Schleife nun für Eingabesymbol b U := ε-closure(move(a,b )) = ε-closure ( { 5 } ) = {1,2,4,5,6,7} = C Dtrans( A,b) = C Ende der for-schleife 38

38 Weiter am Bsp. : Geg.: NEA für ( a b )*abb a Start b Lexikalische Analyse 5 3 a b b Ges.: DEA Weiterführung des Bsp: Fortsetzung Teilmengenkonstruktion mit den unmarkierten Mengen B und C. Theoretisch gibt es 2 n Teilmengen einer Menge mit n Elementen Bsp.: Menge: {1,2,3} Teilmenge: {},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3} Praktisch tritt es nicht auf, dass bei der NEA DEA Transformation alle 2 n Teilmengen (bei n Zuständen des NEA) gebildet werden müssen. In diesem Beispiel werden nur die 5 Teilmengen gebildet: A = {0,1,2,4,7} (Startzustand) B = {1,2,3,4,6,7,8} C = {1,2,4,5,6,7} D = {1,2,4,5,6,7,9} E = {1,2,4,5,6,7,10} (akzeptierender Zustand) 39

39 Weiter am Bsp. : Geg.: NEA für ( a b )*abb a Start b Lexikalische Analyse 3 a b b 5 Ges.: DEA Übergangstabelle Dtrans für (a b)*abb DEA für ( a b )*abb (jedoch nicht minimal) Inhalt der nächsten Vorlesung Start Zustand A B C D E Eingabesymbol a b C b b a a A B D E a a b b B B B B B b C D C E C 40

40 Lexikalisiche Analyse Vielen Dank für Ihre Aufmerksamkeit! 41

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Anwenundg regulärer Sprachen und endlicher Automaten

Anwenundg regulärer Sprachen und endlicher Automaten Proseminar Theoretische Informatik Dozent: Prof. Helmut Alt Anwenundg regulärer Sprachen und endlicher Automaten Madlen Thaleiser 30. Oktober 2012 Reguläre Sprachen Regulärer Ausdruck definiert über einem

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische Analyse, Tokenizer, Scanner Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,

Mehr

Reguläre Sprachen und endliche Automaten

Reguläre Sprachen und endliche Automaten Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 1. Automaten und Sprachen 1.1 Endlicher Automat Einen endlichen Automaten stellen wir uns als Black Box vor, die sich aufgrund einer Folge von

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

4. Die lexikalische Analyse

4. Die lexikalische Analyse zerlegt Folge von Zeichen in Eingabedatei in Folge von Symbolen (Token) Scanner-Sieber-Modul Token: Typ und Inhalt übliche Token-Typen: reservierte Wörter (if, while, for, ) Bezeichner (x, dauer, name,..)

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Automaten und formale Sprachen Klausurvorbereitung

Automaten und formale Sprachen Klausurvorbereitung Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen

Mehr

Fachseminar WS 2008/09

Fachseminar WS 2008/09 Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der

Mehr

Es gibt drei unterschiedliche Automaten:

Es gibt drei unterschiedliche Automaten: Automatentheorie Es gibt drei unterschiedliche Automaten: 1. Deterministische Endliche Automaten (DEA) 2. Nichtdeterministische Endliche Automaten (NEA) 3. Endliche Automaten mit Epsilon-Übergängen (ε-

Mehr

Thomas Behr. 17. November 2011

Thomas Behr. 17. November 2011 in in Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 17. November 2011 c 2011 FernUniversität in Hagen Outline in 1 2 3 4 5 6 - Was ist das? in über

Mehr

Grundlagen der Programmierung 2 (Comp-A)

Grundlagen der Programmierung 2 (Comp-A) Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 16. Juni 2011 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

Grundlagen der Programmierung 2 (Comp-A)

Grundlagen der Programmierung 2 (Comp-A) Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 23. Mai 2007 Compiler; Übersetzungprogramme Ein Übersetzer (Compiler) ist ein Programm,

Mehr

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2003/04 ILKD Prof. Dr. D. Wagner 14. April 2004 2. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004 Hier Aufkleber

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein Programm, das ein Wort

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 4 Reguläre Ausdrücke Webseite zur Vorlesung http://ls11-www.cs.tu-dortmund.de/people/rahmann/teaching/ss2008/algorithmenaufsequenzen

Mehr

Berechenbarkeitstheorie 1. Vorlesung

Berechenbarkeitstheorie 1. Vorlesung Berechenbarkeitstheorie Dr. Institut für Mathematische Logik und Grundlagenforschung WWU Münster WS 15/16 Alle Folien unter Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz. Zentrale Themen

Mehr

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse 5. Syntaxanalyse und der Parser-Generator yacc 5.1 Einleitung 5.2 Kontextfreie Grammatiken 5.3 Grundlagen von yacc 5.4 Absteigende Analyse Übersetzergenerierung Syntaxanalyse und yacc (2) Jan Bredereke,

Mehr

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers ompiler; Übersetzungsprogramme Grundlagen der Programmierung 3 A ompiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Ein Übersetzer (ompiler) ist ein Programm, das ein Wort

Mehr

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002 1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben

Mehr

Formale Sprachen und endliche Automaten

Formale Sprachen und endliche Automaten Formale Sprachen und endliche Automaten Formale Sprachen Definition: 1 (Alphabet) Ein Alphabet Σ ist eine endliche, nichtleere Menge von Zeichen oder Symbolen. Ein Wort über dem Alphabet Σ ist eine endliche

Mehr

Informatik III. Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung

Informatik III. Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung Informatik III Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung 02.11.2006 schindel@informatik.uni-freiburg.de 1 Kapitel III Reguläre Sprachen Reguläre Sprachen und Ausdrücke Informatik III

Mehr

Reguläre Ausdrücke. Michael Jäger. 4. April 2017

Reguläre Ausdrücke. Michael Jäger. 4. April 2017 Reguläre Ausdrücke Michael Jäger 4. April 2017 Zeichenketten und Sprachen Ein Alphabet ist eine endliche Menge von Symbolen. Beispiele: 1. Σ 1 = {0, 1} 2. Σ 2 = {a, b, c, d, e, f, g, h, i, j, k, l, m,

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 17.01.013 Parametrisierte Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität

Mehr

Universität des Saarlandes

Universität des Saarlandes Universität des Saarlandes FR 6.2 Informatik Prof. Dr. Kurt Mehlhorn, Dr. Konstantinos Panagiotou WiSe 2011/2012 Übungen zu Computational Thinking http://www.mpi-inf.mpg.de/departments/d1/teaching/ws11/ct/

Mehr

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen Dr. Theo Lettmann Paderborn, den 9. Januar 24 Abgabe 9. Januar 24 Übungen zur Vorlesung Modellierung WS 23/24 Blatt Musterlösungen AUFGABE 7 : Es sei der folgende partielle deterministische endliche Automat

Mehr

1 Eliminieren von ɛ-übergängen

1 Eliminieren von ɛ-übergängen 1 Eliminieren von ɛ-übergängen 1.1 Beispiel 1 (a) Ausgangspunkt: Zwei ɛ-übergänge (b) Entfernung eines ɛ-übergangs, Reduktion (c) Entfernen eines ɛ-übergangs, Reduktion Abbildung 1: Elimination von ɛ-übergängen,

Mehr

Induktive Definition

Induktive Definition Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9}

Mehr

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}} 2 Endliche Automaten Fragen 1. Was ergibt sich bei {a, bc} {de, fg}? a) {abc, defg} b) {abcde, abcfg} c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} 2. Was ergibt sich bei {abc, a} {bc, λ}?

Mehr

5.2 Endliche Automaten

5.2 Endliche Automaten 114 5.2 Endliche Automaten Endliche Automaten sind Turingmaschinen, die nur endlichen Speicher besitzen. Wie wir bereits im Zusammenhang mit Turingmaschinen gesehen haben, kann endlicher Speicher durch

Mehr

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben

Mehr

LR-Parsing. Präsentation vom 19. Dez Adriana Kosior, Sandra Pyka & Michael Weidauer. Automatische Syntaxanalyse (Parsing) Wintersemester 12/13

LR-Parsing. Präsentation vom 19. Dez Adriana Kosior, Sandra Pyka & Michael Weidauer. Automatische Syntaxanalyse (Parsing) Wintersemester 12/13 LR-Parsing Präsentation vom 19. Dez. 2012 Adriana Kosior, Sandra Pyka & Michael Weidauer Automatische Syntaxanalyse (Parsing) Wintersemester 12/13 Inhalte Einleitung LR(0) Parser LR(1) Parser Fazit Literatur

Mehr

DisMod-Repetitorium Tag 4

DisMod-Repetitorium Tag 4 DisMod-Repetitorium Tag 4 Endliche Automaten, Reguläre Sprachen und Kontextfreie Grammatiken 22. März 2018 1 Endliche Automaten Definition DFA Auswertungen Äquivalenzrelationen Verschmelzungsrelation und

Mehr

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung!

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung! Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 23/4 ILKD Prof. Dr. D. Wagner 2. Februar 24. Klausur zur Vorlesung Informatik III Wintersemester 23/24 Mit Lösung! Beachten Sie:

Mehr

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018 2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018 Hier Aufkleber mit Name und Matrikelnummer anbringen Vorname: Nachname: Matrikelnummer: Beachten Sie: Bringen Sie

Mehr

Deterministische PDAs

Deterministische PDAs Deterministische PDAs Erinnerung: Ein PDA ist deterministisch, wenn q Q, a Σ, Z Γ: δ(q,a,z) + δ(q,ε,z) 1. Definition: Eine Sprache heißt deterministisch kontextfrei, wenn es für sie einen DPDA gibt. Ziel:

Mehr

Alphabet, formale Sprache

Alphabet, formale Sprache n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l

Mehr

Theoretische Informatik I

Theoretische Informatik I heoretische Informatik I Einheit 2 Endliche Automaten & Reguläre Sprachen. Deterministische endliche Automaten 2. Nichtdeterministische Automaten 3. Reguläre Ausdrücke 4. Grammatiken 5. Eigenschaften regulärer

Mehr

3.1 Reservierte Wörter

3.1 Reservierte Wörter 3.1 Reservierte Wörter int Bezeichner für Basis-Typen; if, else, while Schlüsselwörter aus Programm-Konstrukten; (,), ",, {,},,,; Sonderzeichen. 62 3.2 Was ist ein erlaubter Name? Schritt 1: Angabe der

Mehr

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, Reguläre Sprachen Reguläre Sprachen (Typ-3-Sprachen) haben große Bedeutung in Textverarbeitung und Programmierung (z.b. lexikalische Analyse) besitzen für viele Entscheidungsprobleme effiziente Algorithmen

Mehr

Grundbegriffe der Informatik Tutorium 33

Grundbegriffe der Informatik Tutorium 33 Tutorium 33 02.02.2017 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Gliederung 1 2 3 Ein ist ein Tupel A = (Z, z 0, X, f, Y, h)

Mehr

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann. Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Grammatik G ist ein Quadrupel

Mehr

LR-Parser, Shift-Reduce-Verfahren

LR-Parser, Shift-Reduce-Verfahren LR-Parser, Shift-Reduce-Verfahren Bottom-Up-Syntaxanalyse LR-Parser L: Eingabe von links nach rechts; R: Rechtsherleitung Shift-Reduce-Verfahren Beachte: Kein Backtracking nicht auf jede Grammatik anwendbar

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher

Mehr

Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen

Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen Name: Matr.-Nr.: Vorname: Aufgabe 1 2 3 4 5 6 7 max. Punkte 6 7 10 6 8 7 9 err. Punkte Gesamtpunktzahl: Note: Aufgabe

Mehr

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012 Hier Aufkleber mit Name und Matrikelnr. anbringen

Mehr

Grundlagen der Informatik II

Grundlagen der Informatik II Grundlagen der Informatik II Tutorium 2 Professor Dr. Hartmut Schmeck Miniaufgabe * bevor es losgeht * Finden Sie die drei Fehler in der Automaten- Definition. δ: A = E, S, δ, γ, s 0, F, E = 0,1, S = s

Mehr

Endliche Automaten. Endliche Automaten 1 / 115

Endliche Automaten. Endliche Automaten 1 / 115 Endliche Automaten Endliche Automaten 1 / 115 Endliche Automaten Endliche Automaten erlauben eine Beschreibung von Handlungsabläufen: Wie ändert sich ein Systemzustand in Abhängigkeit von veränderten Umgebungsbedingungen?

Mehr

Deterministische endliche Automaten - Wiederholung

Deterministische endliche Automaten - Wiederholung Deterministische endliche Automaten - Wiederholung Die folgende Klasse Zahl stellt einen endlichen Automaten dar. Ermittle die Größen des Automaten und zeichne den Zustandsgraphen. Gib Zeichenfolgen an,

Mehr

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Institut für Informatik Sommersemester 2007 B. Beckert Grundlagen d. Theoretischen Informatik:

Mehr

Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen

Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen Aufgabe 1 2 3 4 5 6 7 max. Punkte 6 6 7 7 8 8 12 err. Punkte Gesamtpunktzahl: Note: 1 Aufgabe 1 (3+1+1+1 = 6 Punkte) Es seien

Mehr

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 12

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 12 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2003/04 ILKD Prof. Dr. D. Wagner 20. Februar 2004 1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004 Hier Aufkleber

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

{a i b i i 0} FORMALE SYSTEME. Kellerautomaten. (Nicht)Abschlusseigenschaften für Typ 2. Ein Berechnungsmodell für Typ-2-Sprachen

{a i b i i 0} FORMALE SYSTEME. Kellerautomaten. (Nicht)Abschlusseigenschaften für Typ 2. Ein Berechnungsmodell für Typ-2-Sprachen (Nicht)Abschlusseigenschaften für Typ 2 FORMALE SYSTEME 15. Vorlesung: Einleitung Kellerautomaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme Satz: Wenn L, L 1 und L 2 kontextfreie Sprachen sind,

Mehr

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK Theoretische Grundlagen der Informatik 0 17.01.2019 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Evaluation Ergebnisse

Mehr

Informatik III - WS07/08

Informatik III - WS07/08 Informatik III - WS07/08 Kapitel 5 1 Informatik III - WS07/08 Prof. Dr. Dorothea Wagner dwagner@ira.uka.de Kapitel 5 : Grammatiken und die Chomsky-Hierarchie Informatik III - WS07/08 Kapitel 5 2 Definition

Mehr

Pumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo

Pumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo 1 Endliche Automaten Modellierungskonzept mit vielen brauchbaren Eigenschaften schnelle Spracherkennung graphisch-visuelle Beschreibung automatische Korrektheitsbeweise gute Kompositionalitätseigenschaften

Mehr

7 Endliche Automaten. 7.1 Deterministische endliche Automaten

7 Endliche Automaten. 7.1 Deterministische endliche Automaten 7 Endliche Automaten 7.1 Deterministische endliche Automaten 7.2 Nichtdeterministische endliche Automaten 7.3 Endliche Automaten mit g-übergängen Endliche Automaten 1 7.1 Deterministische endliche Automaten

Mehr

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken 1 / 15 Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken Prof. Dr. Hans Kleine Büning FG Wissensbasierte Systeme WS 08/09 2 / 15 Deterministischer endlicher Automat (DEA) Definition 1:

Mehr

Kurz-Skript zur Theoretischen Informatik I

Kurz-Skript zur Theoretischen Informatik I Kurz-Skript zur Theoretischen Informatik I Inhaltsverzeichnis 1 Grundlagen 2 2 Reguläre Ausdrücke 4 3 Endliche Automaten 5 3.1 Vollständige endliche Automaten................................... 6 3.2 ε

Mehr

(Prüfungs-)Aufgaben zu formale Sprachen

(Prüfungs-)Aufgaben zu formale Sprachen (Prüfungs-)Aufgaben zu formale Sprachen (siehe auch bei den Aufgaben zu endlichen Automaten) 1) Eine Grammatik G sei gegeben durch: N = {S, A}, T = {a, b, c, d}, P = { (S, Sa), (S, ba), (A, ba), (A, c),

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)

Mehr

Theoretische Informatik. Reguläre Sprachen und Automaten

Theoretische Informatik. Reguläre Sprachen und Automaten Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante

Mehr

Ist eine algorithmische Problemstellung lösbar und wenn ja, mit welchen Mitteln? was ist eine algorithmische Problemstellung?

Ist eine algorithmische Problemstellung lösbar und wenn ja, mit welchen Mitteln? was ist eine algorithmische Problemstellung? Überblick 1. reguläre Sprachen endliche Automaten (deterministisch vs. nichtdeterministisch) Nichtregularität 2. Berechenbarkeit Registermaschinen/Turingmaschinen Churchsche These Unentscheidbarkeit 3.

Mehr

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme FORMALE SYSTEME 8. Vorlesung: Minimale Automaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme TU Dresden, 6. November 2017 Rückblick Markus Krötzsch, 6. November 2017 Formale Systeme Folie 2 von 26

Mehr

Einführung - Parser. Was ist ein Parser?

Einführung - Parser. Was ist ein Parser? Gliederung 1. Einleitung 1.1 Was ist ein Parser? 1.2 Was ist ein tabellengesteuerter TD-Parser? 1. Tabellengesteuerter TD-Parser 2.1 Funktionsweise 2.2 Darstellung als Pseudocode 2.3 Konstruktion von prädiktiven

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Ogden s Lemma: Der Beweis (1/5)

Ogden s Lemma: Der Beweis (1/5) Ogden s Lemma: Der Beweis (1/5) Wir betrachten zuerst die Rahmenbedingungen : Laut dem auf der vorhergehenden Folie zitierten Satz gibt es zur kontextfreien Sprache L eine Grammatik G = (Σ, V, S, P) in

Mehr

Software Engineering Ergänzung zur Vorlesung

Software Engineering Ergänzung zur Vorlesung Ergänzung zur Vorlesung Prof. Dr. Markus Müller-Olm WS 2008 2009 2.6.1 Endliche und reguläre Sprachen Endliche und reguläre Sprache: fundamental in vielen Bereichen der Informatik: theorie Formale Sprachen

Mehr

Definition von LR(k)-Grammatiken

Definition von LR(k)-Grammatiken Definition von LR(k)-Grammatiken Ziel: Ein Lookahead von k soll ausreichen um entscheiden zu können, welche Regel angewendet werden muss. Definition: FIRST k (w 1 w n ):= w 1 w k, falls n k, w 1 w n, sonst.

Mehr

Automaten und Formale Sprachen SoSe 2013 in Trier

Automaten und Formale Sprachen SoSe 2013 in Trier Automaten und Formale Sprachen SoSe 2013 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 2. Juni 2013 1 Automaten und Formale Sprachen Gesamtübersicht Organisatorisches Einführung Endliche

Mehr

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 7 Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Ausgabe 22. Januar 2019 Abgabe 5. Februar 2019, 11:00 Uhr (im

Mehr

Musterlösung Informatik-III-Nachklausur

Musterlösung Informatik-III-Nachklausur Musterlösung Informatik-III-Nachklausur Aufgabe 1 (2+2+4+4 Punkte) (a) L = (0 1) 0(0 1) 11(0 1) 0(0 1) (b) Der Automat ist durch folgendes Übergangsdiagramm gegeben: 0, 1 0, 1 0, 1 0, 1 0 s q 1 1 0 0 q

Mehr

Proseminar Automatentheorie. Thema: Berry Sethi Algorithmus. Von Christopher Haas

Proseminar Automatentheorie. Thema: Berry Sethi Algorithmus. Von Christopher Haas Proseminar Automatentheorie Thema: Berry Sethi Algorithmus Von Christopher Haas Inhaltsangabe Allgemeines/Notation Ableitung regulärer Ausdruck Intuitiv Definition Beispiele Das Brzozowski-Verfahren Markierungsverfahren

Mehr

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten Kapitel 3: Reguläre Grammatiken und Endliche Automaten Prof.-Dr. Peter Brezany Institut für Softwarewissenschaft Universität Wien, Liechtensteinstraße 22 090 Wien Tel. : 0/4277 38825 E-mail : brezany@par.univie.ac.at

Mehr

Vorlesungsmitschrift zur Vorlesung Theoretische Informatik I vom 23. Juni Christian Franz

Vorlesungsmitschrift zur Vorlesung Theoretische Informatik I vom 23. Juni Christian Franz Vorlesungsmitschrift zur Vorlesung Theoretische Informatik I vom 23. Juni 2 Christian Franz Inhaltsverzeichnis Wiederholung: Vorlesung vom 9.6.2... Beispiele für Äquivalenzklassen... 4.5. Minimierung

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2017 20.04.2017 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt Organisatorisches Literatur Motivation und Inhalt Kurzer

Mehr

2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005

2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2004/05 ILKD Prof. Dr. D. Wagner 5. April 2005 2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Lösung! Beachten

Mehr

9 Theoretische Informatik und Compilerbau

9 Theoretische Informatik und Compilerbau 9 Theoretische Informatik und Compilerbau Theoretische Informatik und Mathematik schaffen die Basis für viele der technischen Entwicklungen, die wir in diesem Buch besprechen. Die boolesche Algebra (S.

Mehr

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Ausgabe 8. Januar 2019 Abgabe 22. Januar 2019, 11:00 Uhr (im

Mehr

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen Dr. Sebastian Bab WiSe 12/13 Theoretische Grundlagen der Informatik für TI Termin: VL 15 + 16 vom 17.12.2012 und 20.12.2012 Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten

Mehr

Mengen. Welche dieser Mengen sind paarweise gleich, ungleich? Begründung!

Mengen. Welche dieser Mengen sind paarweise gleich, ungleich? Begründung! Hinweis: Auf den Übungsblättern in diesem Semester wird es grundsätzlich die drei Aufgabentypen Vorbereitungsaufgabe, Tutoraufgabe und Hausaufgabe geben. Die als Vorbereitung bezeichneten Aufgaben dienen

Mehr

1. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik

1. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik 1. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik Ulrich Furbach Christian Schwarz Markus Kaiser Arbeitsgruppe Künstliche Intelligenz Fachbereich Informatik, Universität Koblenz-Landau

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.5 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibung des Aufbaus von Sprachen Mathematische Mengennotation Beschreibung durch Eigenschaften

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005

1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2004/05 ILKD Prof. Dr. D. Wagner 24. Februar 2005 1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Aufkleber Beachten

Mehr

8. Turingmaschinen und kontextsensitive Sprachen

8. Turingmaschinen und kontextsensitive Sprachen 8. Turingmaschinen und kontextsensitive Sprachen Turingmaschinen (TM) von A. Turing vorgeschlagen, um den Begriff der Berechenbarkeit formal zu präzisieren. Intuitiv: statt des Stacks bei Kellerautomaten

Mehr

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK Theoretische Grundlagen der Informatik 0 08.01.2019 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Letzte Vorlesung Eine

Mehr

Finite-State Technology

Finite-State Technology Finite-State Technology Teil III: Automaten 1 Wiederholung Formale Grammatiken sind entweder axiomatische Systeme mit Ableitungsregeln oder Automaten. Beide beschreiben formale Sprachen. Formale Sprachen

Mehr

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Rolf Socher ISBN 3-446-22987-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22987-6 sowie im Buchhandel Einführung.. 13 2 Endliche

Mehr