Fachseminar Compilerbau

Größe: px
Ab Seite anzeigen:

Download "Fachseminar Compilerbau"

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

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

Mehr

Kapitel 5: Syntax-Analyse

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

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

Konstruieren der SLR Parsing Tabelle

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)

Mehr

Von der Grammatik zum AST

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

Mehr

LL(k)-Analyse. (y) folgt α = β. (x) = start k. (=l> ist ein Linksableitungsschritt)

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)

Mehr

Kellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)

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

Mehr

Theoretische Grundlagen der Informatik

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

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

Grundlagen der Programmierung 2 (Comp-D)

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

Mehr

Operationen auf Grammatiken

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

Mehr

Klammersprache Definiere

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

Mehr

VU Software Paradigmen / SS 2014

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)

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

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

Mehr

9.4 Grundlagen des Compilerbaus

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

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

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

Mehr

Syntaxanalyse Ausgangspunkt und Ziel

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

Mehr

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 Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Historie Die ersten Compiler entstanden in den 50ern.

Mehr

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 Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Historie Die ersten Compiler entstanden in den 50ern.

Mehr

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 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,

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

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

I.5. Kontextfreie Sprachen

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

Mehr

Bottom-Up Analyse. im Einzelnen

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

Mehr

Syntax von Programmiersprachen

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.

Mehr

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

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

Mehr

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dr. Andreas Kunert Dipl.-Inf.

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

Mehr

6 Kontextfreie Grammatiken

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,

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

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

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

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

Compiler: Parser. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

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

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

Compilerbau. Bachelor-Programm. im SoSe Prof. Dr. Joachim Fischer Dr. Klaus Ahrens Dipl.-Inf. Ingmar Eveslage.

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

Mehr

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

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

Mehr

Formale Sprachen und Automaten

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

Mehr

Deterministischer Kellerautomat (DPDA)

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,δ,

Mehr

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

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

Mehr

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

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

Mehr

Automatentheorie und formale Sprachen

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

Mehr

CompB Zusammenfassung

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,

Mehr

2.2 Syntax, Semantik und Simulation

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?

Mehr

LL(1)-Parsing. Ullrich Buschmann, Linda Schaffarczyk, Maurice Schleussinger. Automatische Syntaxanalyse (Parsing)

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,

Mehr

Theoretische Grundlagen der Informatik

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

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

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

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

Mehr

Vorlesung Programmieren

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

Mehr

Das Postsche Korrespondenzproblem

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

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

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

Mehr

Grundbegriffe. Grammatiken

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

Mehr

Syntax von Programmiersprachen

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

Mehr

Syntaktische Analyse (Parsen) Grundlagen der Programmierung. Syntaktische Analyse eines Programms. Syntaktische Analyse bzgl einer CFG

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:

Mehr

Übersicht. (A) Kontextfreie Sprachen (B) Syntaxanalyse (Parsing) (C) Grenzen der Kontextfreiheit

Ü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

Mehr

7. Syntax: Grammatiken, EBNF

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

Mehr

Kontextsensitive Sprachen

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

Mehr

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

Mehr

Einführung in die Computerlinguistik

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

Mehr

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

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

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

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

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

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

Das Halteproblem für Turingmaschinen

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.

Mehr

Programmiersprachen und Übersetzer

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

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

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) 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,

Mehr

Informatik III - WS07/08

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

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

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.

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

Mehr

Syntax von Programmiersprachen

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

Mehr

Übung zu Grundlagen des Übersetzerbaus

Ü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

Mehr

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

Mehr

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

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

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