Fachseminar Compilerbau
|
|
|
- Annegret Lange
- vor 9 Jahren
- Abrufe
Transkript
1 Fachseminar Compilerbau WS 08/09 Matthias Schiller
2 Syntaktische Analyse 1. Prinzip der Top-Down-Analyse 2. LL(1)-Grammatiken
3 Modell-Vorstellung Der Scanner liefert als Ergebnis der lexikalischen Analyse, dem Parser als Eingabe zur syntaktischen Analyse, eine Folge von Symbolen. Der Parser prüft, ob diese Symbolfolge von der Grammatik der Sprache erzeugt werden kann.
4 Parser Grammatiken geben an, wie die Sätze einer Sprache gebildet werden können. Jetzt haben wir den umgekehrten Fall. Ein Satz ist gegeben und es muss nun geprüft werden, ob dieser Satz mit einer Grammatik erzeugt werden kann. Mit Hilfe eines Prüfalgorithmus wird getestet, ob ein bestimmter Satz mit der Grammatik generiert werden kann. Dieses Verfahren wird von einem bestimmten Programm durchgeführt, dem Parser. Ein Parser zerlegt einen Satz in seine syntaktischen Bestandteile, dabei wird die Eingabe in einen Syntaxbaum umgewandelt. Falls ein Satz nicht mit der Grammatik erzeugt werden kann, kommt es zu einem Syntaxfehler.
5 Parser Kategorien Universelle Parse-Methoden: funktionieren für alle Grammatiken In der Praxis ineffizient, stattdessen in Compilern Anwendung von: Top-Down-Methoden: Konstruktion des Parse-Baums beginnt mit der Wurzel (Top) und setzt seine Arbeit in Richtung der Blätter fort. Bottom-Up-Methoden: Parser arbeitet sich von den Blättern (Bottom) zur Wurzel hoch. Beide Parser-Typen arbeiten die Eingabe Schritt für Schritt von links nach rechts ab.
6 Top-Down-Analyse Eine der Strategien nach denen ein Parser vorgeht ist die Top-Down-Analyse. Der Parser arbeitet im allgemeinen die Eingabe von links nach rechts symbolweise ab. Die Konstruktion des Parse-Baums beginnt mit der Wurzel und schreitet in Richtung der Blätter fort. Ausgehend vom Startsymbol S der Grammatik wird versucht, einen Ableitungsbaum zu erzeugen, der in seiner Basis dem zu analysierenden Satz entspricht. Diese Strategie geht primär von der Grammatik aus.
7 Konstruktion des Ableitungsbaum - Konstruktion beginnt an der Wurzel -Sequentielle Abarbeitung des Eingabestroms (meistens von links nach rechts) - Aktuelles zu untersuchendes Eingabesymbol heißt: Look-ahead-Symbol
8 Vorgehensweise 0. Die Wurzel wird mit dem Startsymbol markiert. Anschließend sind die beiden folgenden Schritte wiederholt auszuführen: 1. Ist der Knoten n mit dem Nichtterminal A markiert, so wähle in Abhängigkeit vom Look-ahead-Symbol eine der Produktionen für A und erzeuge für jedes Grammatiksymbol auf der rechten Seite der Produktion je einen Nachfolger des Knoten n. Ist der gerade behandelte Knoten n mit einem Terminalsymbol markiert und stimmt dieses mit dem Look-ahead-Symbol überein, so gehe sowohl im Parse-Baum, als auch in der Eingabe einen Schritt weiter. Wenn die beiden Terminalsymbole nicht übereinstimmen, so ist ein Fehler gefunden. 2. Suche den nächsten zu behandelnden Knoten n. Sind die Nachfolger eines Knoten erzeugt, so behandeln wir als nächstes diese Nachfolger von links nach rechts.
9 Beispiel i Grammatik erzeugt eine Untermenge der Pascal-Datentypen. Grammatik G = (N, T, S, P) mit N={ type, simple } T={ ^id, array, [, ], of, integer, char, num, dotdot } S={ type } P={ type -> simple ^id array [ simple ] oftype simple -> integer char num dotdot num } Zu analysierender Satz: array [ num dotdot num ] of integer
10 Probleme bei der Top-Down-Analyse 1. Sackgassen 2. Links-Faktorisierung 3. Links-Rekursion
11 Sackgassen (1) Um herauszufinden, ob durch die Auswahl der Produktionen nach und nach ein Satz gebildet werden kann, wendet man ausgehend vom Startsymbol nacheinander die Regeln an. Eine Regel ist immer auf das am weitesten links stehende Nichtterminalsymbol anzuwenden, solange bis der Satzanfang oder ein falscher Satzanfang, erzeugt wurde. Hat man einen falschen Satzanfang abgeleitet, so wurde zuvor eine falsche Alternative einer Produktion gewählt, man befindet sich in einer Sackgasse.
12 Sackgassen(2) Jetzt geht man in der Ableitung zurück bis zu der letzten Regelanwendung, g an der eine andere Alternative hätte gewählt werden können, dies bezeichnet man als backtracking. So entsteht schließlich eine Ableitung des Satzes. Hat man alle Alternativen ausprobiert, ohne den Satz ableiten zu können, dann gehört dieser Satz nicht zur Sprache der Grammatik. Forderung: Grammatik muss eine sackgassenfreie Top-Down-Analyse ermöglichen.
13 Beispiel i Grammatik G = (N, T, S, P) mit N={ S, A } T={ a,b,c,d} S={ S } P={S -> cad A -> ab a } Zu untersuchendes Wort ω = cad
14 Links-Faktorisierung Manchmal kann man nicht gleich entscheiden, welche von mindestens zwei alternativen Produktionen für ein Nichtterminal A auszuwählen ist. Der Grund dafür sind Regeln die mehrere Alternativen mit gleichem Anfang haben: A αβ αγ Hier haben beide Produktionen einen gemeinsamen Faktor α. Man verlagert nun die Entscheidung auf einen späteren Zeitpunkt durch die sog. Links-Faktorisierung, die Aufspaltung in zwei Produktionen: A αb B β γ
15 Links-Rekursionen Für Produktionen, die in einer Alternative als erstes Symbol wieder das Nichtterminalsymbol stehen haben, das auch auf der linken Seite steht, funktioniert die Strategie, immer zuerst das am weitesten links stehende Nichtterminalsymbol abzuleiten, nicht. Linksrekursive Produktionen können so zu einer Endlos-Schleife führen. In einfachen Fällen kann eine Grammatik-Transformation die Links-Rekursionen k i entfernen: A Aα β A β B B α B ε aus wird und
16 Beispiel für Linksrekursion Grammatik mit linksrekursiver Regel: EXPR -> EXPR+zahl zahl Versuch den Satz: zahl+zahl mit einem linksrekursiv absteigenden Parser abzuleiten, führt zu einer Endlos-Schleife. EXPR -> EXPR+zahl -> EXPR+zahl+zahl -> EXPR+zahl+zahl+zahl
17 Transformation Wir betrachten die erste Produktion der Standardgrammatik d tik für arithmetische Ausdrücke: EXPR -> TERM EXPR + TERM EXPR TERM Transformation in: 1. eine rechtsrekursive Produktion: EXPR -> TERM TERM + EXPR TERM EXPR Dies kann jedoch zu Problemen führen wie Eintausch der Links- Dies kann jedoch zu Problemen führen, wie Eintausch der Links Assoziativität eines Operators gegen die Rechts-Assoziativität!
18 Transformation in: 2. zwei Produktionen der Form: 3. eine Iteration: EXPR -> TERM E E -> +TERM E -TERM E ε EXPR -> TERM { +TERM -TERM } Dies ist eine äquivalente kürzere Darstellung von 2.
19 Implementationstechniken für Top-Down-Parser 1. Recursive Descent Parser 2. Tabellengesteuerter Top-Down-Parser
20 LL(1) - Grammatiken Ziel ist es, eine Klasse kontextfreier Grammatiken zu charakterisieren, für die eine sackgassenfreie Top-Down-Analyse möglich ist. Gibt es eine Grammatik der Form X -> σ 1 σ 2 σ k muss allein durch Betrachtung des Look-ahead-Symbols erkennbar sein, welche der Alternativen σ 1, σ 2,,σ k in Frage kommt. Bleibt die einzige Alternative erfolglos, kann man mit Sicherheit davon ausgehen, dass der vorgegebene String keine korrekte Syntax besitzt. Parser, die ohne backtracking auskommen heißen prädiktive Parser und entsprechend nennt man die Analyse, prädiktive Syntaxanalyse.
21 FIRST- und FOLLOW-Mengen In Verbindung mit einer Grammatik werden die beiden Funktionen FIRST und FOLLOW definiert, die zur Konstruktion eines prädiktiven Parsers dienen. Es soll also für eine Grammatik festgestellt werden, ob sie eine sackgassenfreie Top-Down-Analyse ermöglicht.
22 FIRST - Definition iti Sei G = (N, T, S, P), σ V*. Dann ist: FIRST(σ):={ t T σ * t } { ε }, falls σ *ε FIRST(σ):={ t T σ * t }, andernfalls. Sei σ eine beliebige Folge von Grammatiksymbolen. Dann ist FIRST(σ) als die Menge aller Terminalsymbole definiert, mit denen ein aus σ hergeleiteter String beginnen kann. Gilt σ ->ε, dann ist auch ε in FIRST(σ).
23 FOLLOW - Definition iti Sei A N. Dann ist FOLLOW(A):={ t T S * αatβ, α, β beliebig } Für ein Nichtterminal A wird FOLLOW(A) als die Menge aller Terminalsymbole t definiert, die in einer Satzform direkt rechts neben A stehen können.
24 Berechnung von FIRST - Mengen Für alle Grammatiksymbole X wird FIRST(X) berechnet, indem die folgenden Regeln solange angewendet werden, bis zu keiner FIRST-Menge mehr ein neues Terminalsymbol oder ε hinzukommt: 1. Wenn X Terminalsymbol ist, dann ist FIRST(X) = { X }. 2. Wenn X->ε eine Produktion ist, so füge ε zu FIRST(X) hinzu. 3. Wenn X Nichtterminal i und X->Y 1 Y 2 Y k eine Produktion ist, dann füge wie folgt Symbole zu FIRST(X) hinzu: - falls a FIRST(Y i ) und für alle 1 j < i gilt ε FIRST(Y j ) dann füge a zu FIRST(X) hinzu. - wenn für alle 1 i k gilt ε FIRST(Y i ) dann füge ε zu FIRST(X) hinzu. Dieser Algorithmus spielt quasi abstrakt die möglichen Ableitungen der Grammatik durch.
25 Berechnung von FOLLOW - Mengen FOLLOW(A) wird für alle Nichtterminale A berechnet, indem die folgenden Regeln solange angewendet werden, bis keine FOLLOW-Menge mehr vergrößert werden kann: 1. Wenn es eine Produktion A->αBβ gibt, wird jedes Element von FIRST(β) mit Ausnahme von ε auch in FOLLOW(B) aufgenommen. 2. Wenn es Produktionen A->αB oder A->αBβ gibt und FIRST(β) ε enthält (d.h. β->ε), dann gehört jedes Element von FOLLOW(A) auch zu FOLLOW(B).
26 Beispiel 1 Grammatik G = (N, T, S, P) mit N={ S, A, B } T={ a, b, c } S={ S } P={ S -> A B A -> ca a B -> cb b } L(G) = {c n a n 0} {c n b n 0 }
27 FIRST-Mengen FOLLOW-Mengen σ a b ca cb A B S FIRST(σ) {a} {b} {c} {c} {c, a} {c, b} {a, b, c} T A B S FOLLOW(T) Ø Ø Ø
28 Beispiel 2 Grammatik G = (N, T, S, P) mit N={ S } T={ t, + } S={ S } P={ S -> S+t ε } L(G) = { (+t) n n 0 } = { ε, +t, +t+t, }
29 FIRST- und FOLLOW-Mengen σ S +t ε FIRST(σ) {+, ε} {+} {ε} FOLLOW(σ) {+} undefiniert undefiniert
30 Charakterisierung von LL(1)-Grammatiken (1) Mit Hilfe der beiden Mengen First und Follow wird diese besondere Klasse kontextfreier Grammatiken definiert. Erklärung von LL(1): Das erste L bedeutet, t dass die Analyse, die Eingabe von links nach rechts verarbeitet. Das zweite L bedeutet dass eine Linksableitung erzeugt Das zweite L bedeutet, dass eine Linksableitung erzeugt wird, und die 1, dass in jedem Schritt ein Symbol vorausgeschaut wird, um zu entscheiden, welche Aktion durchzuführen ist.
31 Charakterisierung von LL(1)-Grammatiken (2) Definition: iti Eine kontextfreie tf Grammatik G=(N, T, S, P), die die Eigenschaften E1 und E2 besitzt, heißt LL(1)-Grammatik. E1: Falls es zu einem Nichtterminal zwei alternative Produktionen N->σ 1 und N->σ 2 gibt, so muss gelten: FIRST(σ 1 ) FIRST(σ 2 ) = Ø E2: Falls aus einem Nichtterminal N der Leerstring ε abgeleitet werden kann, muss gelten: FIRST(N) FOLLOW(N) = Ø Satz: Eine LL(1)-Grammatik erlaubt eine sackgassenfreie Top-Down-Analyse und besitzt keine Linksrekursivitäten.
32 Analyse 1 1. Bsp. von FIRST UND FOLLOW Besitzt nicht die Eigenschaft E1: FIRST(A) = { a, c } und FIRST(B) = { b, c } Wegen S -> A B müsste aber der Durchschnitt beider Mengen leer sein. Da es keine Produktion nach ε gibt, ist Eigenschaft E2 gegenstandslos. Grammatik ist nicht LL(1)!!!
33 Analyse 2 2. Bsp. von FIRST UND FOLLOW Besitzt nicht die Eigenschaft E2: FIRST(S) = { +, ε } und FOLLOW(S) = { + } Wegen S -> ε müsste aber gelten: FIRST(S) FOLLOW(S) = Ø Grammatik ist nicht LL(1)!!!
34 Beispiel 3 Grammatik für arithmetische Ausdrücke (linksrekursive Regeln): G=(N,T,S,P)mit N={ addexpr, multexpr, addop, multop } T={ zahl, +, -, *, /} S={ addexpr } P={ addexpr -> addexpr addop multexpr multexpr multexpr -> multexpr multop zahl zahl addop -> >+ - multop -> * / }
35 FIRST- und FOLLOW-Mengen σ FIRST(σ) FOLLOW(σ) addop multop { +, - } { *, / } { zahl } { zahl } addexpr multexpr { zahl } { zahl } { +, - } { *, / }
36 Analyse 3 Es gilt: addexpr -> addexpr addop multexpr addexpr -> multexpr Besitzt nicht die Eigenschaft E1: FIRST(addExpr addop multexpr) = { zahl } und FIRST(multExpr) = { zahl } Der Durchschnitt beider Mengen müsste aber leer sein, um die Eigenschaft zu erfüllen. Grammatik ist nicht LL(1)!!!
37 Fragen?
2.6 Deterministisches Top-Down-Parsen
48 2.6 Deterministisches Top-Down-Parsen Als nächstes wollen wir uns mit Methoden zur syntaktischen Analyse befassen. Der lexikale canner eines Compilers liest die Eingabe Zeichen für Zeichen und erzeugt
Kapitel 5: Syntax-Analyse
Kapitel 5: Syntax-Analyse Aufgabe Die Token-Folge wird strukturiert in Anweisungen, Ausdrücke etc., um die Semantische Analyse und Code-Erzeugung zu ermöglichen Themen Kontextfreie Grammatik Äquivalente
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
Konstruieren der SLR Parsing Tabelle
Konstruieren der SLR Parsing Tabelle Kontextfreie Grammatik (CFG) Notation 1. Diese Symbole sind Terminals: (a) Kleinbuchstaben vom Anfang des Alphabets wie a, b, c. (b) Operator Symbole wie +,, usw. (c)
Von der Grammatik zum AST
Von der Grammatik zum AST Welche Eigenschaften soll ein Parser haben? Wann ist eine Grammatik eindeutig? Wie sollte eine Grammatik aussehen? Theoretischer Hin tergrund: FIRST, FOLLOW Einschränkungen von
LL(k)-Analyse. (y) folgt α = β. (x) = start k. (=l> ist ein Linksableitungsschritt)
LL(k)-Analyse Eine KFG G = (N,T,P,S) heisst LL(k)-Grammatik, wenn für alle w,x,y T*, α,β,σ (N U T)* und A N mit 1. S =l>* waσ =l> wασ =l>* wx, 2. S =l>* waσ = > wβσ =l>* wy, 3. start k (x) = start k (y)
Kellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)
Kellerautomat (1/4) Kellerautomat (2/4) Kontextfreie Grammatiken können von Kellerautomaten (Push Down Automata, PDA) erkannt werden PDAs sind eine Erweiterung der endlichen Automaten um ein einfaches
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 15.01.2015 INSTITUT FÜR THEORETISCHE 0 KIT 15.01.2015 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der 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
Grundlagen der Programmierung 2 (Comp-D)
Grundlagen der Programmierung 2 (Comp-D) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 31. Mai 2007 Operationen auf Grammatiken Ziel: Normalisierungen, Vereinfachungen
Operationen auf Grammatiken
Operationen auf Grammatiken Ziel: Normalisierungen, Vereinfachungen, Elimination bestimmter Konstrukte Erzeugen eines Parsers Transformation G 1 G 2 mit L(G 1 ) = L(G 2 ) I.a. Parsebaum 1 (w) Parsebaum
Klammersprache Definiere
Klammersprache w=w 1...w n {(,)}* heißt korrekt geklammert, falls die Anzahl ( ist gleich der Anzahl ). in jedem Anfangsstück w 1,...,w i (i n) ist die Anzahl ( nicht kleiner als die Anzahl ). Definiere
VU Software Paradigmen / SS 2014
VU Software Paradigmen 716.060 / SS 2014 Thorsten Ruprechter [email protected] Institute for Software Technology 1 Organisatorisches Ausgabe: 25.03. (heute) Fragestunde: 22.04. Abgabe: 29.04 (ausgedruckt)
Inhalt Kapitel 11: Formale Syntax und Semantik
Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte
9.4 Grundlagen des Compilerbaus
Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum
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
Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen
Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen (Kontextsensitive) Sprachen L 2 Menge aller kontextfreien
Syntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion
Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Historie Die ersten Compiler entstanden in den 50ern.
Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion
Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Historie Die ersten Compiler entstanden in den 50ern.
Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen
Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,
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
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
I.5. Kontextfreie Sprachen
I.5. Kontextfreie prachen Zieht man in Betracht, dass BNF-yteme gerade so beschaffen sind, dass auf der linken eite immer genau ein Nichtterminal steht, so sind das also gerade die Ableitungsregeln einer
Bottom-Up Analyse. im Einzelnen
Bottom-Up Analyse im Einzelnen ... mit Backtracking Wir können den Kellerautomaten zum Satz L(KFG)->L (N1KA) erweitern: Wir nummerieren die Produktionen. ... mit Backtracking Der Automat nimmt dann immer
Syntax von Programmiersprachen
Syntax von Programmiersprachen SEP 209 Programmiersprachen Sprache = Menge von Wörtern, typischerweise unendlich Programmiersprache: Wörter repräsentieren Programme Programm kann auf einem Computer evtl.
Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dr. Andreas Kunert Dipl.-Inf.
Bachelor-Programm Compilerbau im SoSe 2014 Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dr. Andreas Kunert Dipl.-Inf. Ingmar Eveslage [email protected] J.Fischer 6.1 Position Kapitel 1 Compilationsprozess
6 Kontextfreie Grammatiken
6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen,
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.
Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse
Compilerbau Syntaxanalyse 68 LR(1)-Syntaxanalyse Bei der LL(1)-Syntaxanalyse wird allein aufgrund des nächsten Tokens die zu verwendende Produktion ermittelt. Bei der LR(1)-Syntaxanalyse braucht diese
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
Compiler: Parser. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:
Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 17.05.2017 11:06 Inhaltsverzeichnis Parsing....................................... 2 Syntax........................................
Ü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
Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage.
Bachelor-Programm Compilerbau im SoSe 2014 Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage [email protected] J.Fischer 8.1 Position Kapitel 1 Compilationsprozess Teil
Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14
Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen
Formale Sprachen und Automaten
Formale Sprachen und Automaten Kapitel 4: Typ 2 kontextfreie Sprachen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Kapitel
Deterministischer Kellerautomat (DPDA)
Deterministische Kellerautomaten Deterministischer Kellerautomat (DPDA) Definition Ein Septupel M = (Σ,Γ, Z,δ, z 0,#, F) heißt deterministischer Kellerautomat (kurz DPDA), falls gilt: 1 M = (Σ,Γ, Z,δ,
Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri
Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS
Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.
Chomsky-0-Grammatik Rek. Aufz. Satz T5.2.2: Wenn L durch eine Chomsky-0- Grammatik G beschrieben wird, gibt es eine NTM M, die L akzeptiert. Beweis: Algo von M: Schreibe S auf freie Spur. Iteriere: Führe
Automatentheorie und formale Sprachen
Automatentheorie und formale Sprachen VL 8 Chomsky-Grammatiken Kathrin Hoffmann 23. Mai 2012 Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen 23.5. 2012 250 Wortproblem Wortproblem ist das
CompB Zusammenfassung
Compilerbau CompB Zusammenfassung Stand: 2013-09-08 https://github.com/hsr-stud/compb/ Inhaltsverzeichnis 1 Lexikalische Analyse 3 1.1 Aufgaben eines Lexers................................... 3 1.2 Probleme,
2.2 Syntax, Semantik und Simulation
2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?
LL(1)-Parsing. Ullrich Buschmann, Linda Schaffarczyk, Maurice Schleussinger. Automatische Syntaxanalyse (Parsing)
LL(1)-Parsing Ullrich Buschmann, Linda Schaffarczyk, Maurice Schleussinger Automatische Syntaxanalyse (Parsing) Heinrich-Heine-Universität Düsseldorf Wintersemester 2012/2013 Aufbau des Referats 1. Einführung,
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 17. Januar 2012 INSTITUT FÜR THEORETISCHE 0 KIT 18.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der
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
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
Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)
Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /
Vorlesung Programmieren
Vorlesung Programmieren 14 Parsen, Suchen und Sortieren 19./26.01.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
Das Postsche Korrespondenzproblem
Das Postsche Korrespondenzproblem Eine Instanz des PKP ist eine Liste von Paaren aus Σ Σ : (v 1, w 1 ),..., (v n, w n ) Eine Lösung ist eine Folge i 1,..., i k von Indizes 1 i j n mit v i1... v ik = w
Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Grundbegriffe. Grammatiken
Grammatiken Grammatiken in der Informatik sind ähnlich wie Grammatiken für natürliche Sprachen ein Mittel, um alle syntaktisch korrekten Sätze (hier: Wörter) einer Sprache zu erzeugen. Beispiel: Eine vereinfachte
Syntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08
Syntaktische Analyse (Parsen) Grundlagen der Programmierung. Syntaktische Analyse eines Programms. Syntaktische Analyse bzgl einer CFG
Syntaktische Analyse (Parsen) Grundlagen der Programmierung Compiler: Parser (5C) Gegeben: eine kontextfreie Grammatik G und ein String w. Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2015 Fragen: Vorgehen:
Übersicht. (A) Kontextfreie Sprachen (B) Syntaxanalyse (Parsing) (C) Grenzen der Kontextfreiheit
Übersicht (A) Kontextfreie Sprachen (B) Syntaxanalyse (Parsing) (C) Grenzen der Kontextfreiheit (B) Syntaxanalyse 1. Definition Parsing 2. Einfache Parsestrategien: Top-down Bottom-Up Probleme beim Parsen
7. Syntax: Grammatiken, EBNF
7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik
Kontextsensitive Sprachen
Kontextsensitive Sprachen Standardbeispiel: {anbncn} S a b c S a A b B c c B A B b c B b b A A b a A a a Im Bereich der natürlichen Sprachen gibt es zahlreiche kontextsensitive Phänomene in der Semantik
Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko
Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht
Einführung in die Computerlinguistik
Einführung in die Computerlinguistik Kontextfreie Sprachen und Pushdown-Automaten Dozentin: Wiebke Petersen WS 2004/2005 Wiebke Petersen Formale Komplexität natürlicher Sprachen WS 03/04 Wiederholung c
Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen
Vorlesung Automaten und Formale Sprachen Sommersemester 2018 Prof. Barbara König Übungsleitung: Christina Mika-Michalski Wörter Wort Sei Σ ein Alphabet, d.h., eine endliche Menge von Zeichen. Dann bezeichnet
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
Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45
Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 45 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs beliebig tief geschachtelten
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
Das Halteproblem für Turingmaschinen
Das Halteproblem für Turingmaschinen Das Halteproblem für Turingmaschinen ist definiert als die Sprache H := { T w : T ist eine TM, die bei Eingabe w {0, 1} hält }. Behauptung: H {0, 1} ist nicht entscheidbar.
Programmiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch
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,
Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An
Definition 4 (Operationen auf Sprachen) Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A 0 = {ɛ}, A n+1 = AA n A = n 0 An A + = n 1 An Beispiel 5 {ab, b}{a, bb} = {aba, abbb,
Informatik III - WS07/08
Informatik III - WS07/08 Kapitel 5 1 Informatik III - WS07/08 Prof. Dr. Dorothea Wagner [email protected] Kapitel 5 : Grammatiken und die Chomsky-Hierarchie Informatik III - WS07/08 Kapitel 5 2 Definition
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
...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.
Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t)....imbeispiel: E 0 E 1 + T 1 T 0 F 2 T 1 F 2 int F 1 int name liefert die Konkatenation: name int + int. 273 Die Grammatik
Syntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax
Übung zu Grundlagen des Übersetzerbaus
Übung zu Grundlagen des Übersetzerbaus Mehr zu Parsern und LL(k)-Grammatiken Lehrstuhl für Informatik 2 (Programmiersysteme) Probleme bei LR-Parsern Für manche Grammatiken ist es nicht möglich, LR-Parser
1 Grammar Engineering. 2 Abstrakte Syntax als abstrakte Algebra. 3 LL(1)-Parser. 4 LR Parser. 5 Fehlerbehandlung. 6 Earley Parser
1 Grammar Engineering 2 Abstrakte Syntax als abstrakte Algebra 3 LL(1)-Parser 4 LR Parser 5 Fehlerbehandlung 6 Earley Parser Zusatzfolien Syntaktische Analyse Wintersemester 2008/09 1 / 44 Grammar Engineering
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive Grammatik G mit L(G) = L(G ). Beweis im Beispiel (2.): G = (V,Σ, P, S) : P = {S asbc, S abc, CB BC, ab ab, bb bb, bc bc, cc cc}. (i) G
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
