Einführung in den Compilerbau
|
|
- Elly Baumgartner
- vor 7 Jahren
- Abrufe
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
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
MehrAnwenundg 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
MehrLexikalische 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,
MehrRegulä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
MehrGrundlagen 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
MehrGrundlagen 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
Mehr4. 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,..)
MehrAlgorithmen 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
MehrAutomaten 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
MehrFachseminar 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
MehrEs 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 (ε-
MehrThomas 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
MehrGrundlagen 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
MehrGrundlagen 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,
MehrAufgabe 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
MehrGrundlagen 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
MehrAlgorithmen 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
MehrBerechenbarkeitstheorie 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
Mehr5. 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,
MehrCompiler; Ü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
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
MehrFormale 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
MehrInformatik 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
MehrRegulä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,
MehrAlgorithmen 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
MehrTheoretische 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
MehrUniversitä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
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
Mehr1 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,
MehrInduktive 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}
Mehrc) {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, λ}?
Mehr5.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
Mehrkontextfreie 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
MehrLR-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
MehrDisMod-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
Mehr1. 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:
Mehr2. 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
MehrDeterministische 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:
MehrAlphabet, 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
MehrTheoretische 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
Mehr3.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
MehrRegulä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
MehrGrundbegriffe 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)
MehrSei Σ 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
MehrEinfü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
MehrLR-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
MehrEinfü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
MehrKlausur 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
MehrHauptklausur 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
MehrGrundlagen 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
MehrEndliche 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?
MehrDeterministische 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,
MehrGrundlagen 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:
MehrNachklausur 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
MehrAufgabe 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
MehrEin 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
(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,
MehrTheoretische 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
MehrInformatik 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
MehrPumping-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
Mehr7 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
MehrEndliche 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:
MehrKurz-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 (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),
MehrGrundlagen 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)
MehrTheoretische 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
MehrIst 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.
MehrFORMALE 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
MehrEinfü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
Mehr3 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
MehrOgden 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
MehrSoftware 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
MehrDefinition 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.
MehrAutomaten 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
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
MehrMusterlö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
MehrProseminar 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
MehrKapitel 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
MehrVorlesungsmitschrift 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
MehrGrundlagen 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
Mehr2. 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
Mehr9 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
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
MehrDeterministische 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
MehrFormale 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
MehrMengen. 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
Mehr1. 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
MehrTheoretische 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
Mehr3 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
Mehr1. 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
Mehr8. 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
MehrTheoretische 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
MehrFinite-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
MehrZuerst 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
MehrTheoretische 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