Anwendung von Kontextfreien Grammatiken
|
|
- Irmela Fürst
- vor 6 Jahren
- Abrufe
Transkript
1 Anwendung von Kontextfreien Grammatiken Kontextfreie Grammatiken Eine kontextfreie Grammatik (kfg) ist formal definiert als ein 4-Tupel. G = (N, T, P, S) Wobei: N: Nichtterminalsymbol / Variable T: Terminalsymbol Alle Terminale sind Bestandteil des Alphabets der Sprache die von der Grammatik beschrieben wird. P: Produktionen der Form. Links vom Pfeil steht der Kopf, rechts ist der Rumpf. Bei einer Produktion wird der Kopf durch den Rumpf ersetzt. S: Startsymbol N. Das erste Nichtterminal wird als Startsymbol definiert. Eine Kette von Terminalen und Nichtterminalen wird als Satzform bezeichnet. Jede kontextfreie Grammatik beschreibt eine kontextfreie Sprache. Die Erzeugung von Sätzen dieser Sprache aus der Grammatik erfolgt durch schrittweises Ausführen von Produktionen. Dieser Vorgang wird als Ableitung bezeichnet. Die Ableitung beginnt beim Startsymbol und endet, wenn alle Nichtterminale durch Terminale ersetzt wurden. Die Ableitung kann prinzipiell nach Belieben durchgeführt werden. Wichtige Ableitungsformen sind die Linksableitung und die Rechtsableitung. Dabei wird entweder immer die Produktion für das äußerste linke oder rechte Nichtterminal durchgeführt. Kann ein Satz der Sprache nur auf einem Weg durch eine Grammatik abgeleitet werden, so ist die Grammatik eindeutig. Kann die Ableitung auf mehreren Wegen erfolgen, ist die Grammatik mehrdeutig. Die Sprache, die von einer Grammatik erzeugt wird, ist eindeutig sobald es eine eindeutige Grammatik für diese Sprache gibt. Existieren nur mehrdeutige Grammatiken zur Erzeugung der Sprache, wird diese als inhärent mehrdeutig bezeichnet. Bei Grammatiken, die linksabgeleitet werden, gibt es im Hinblick auf die Verarbeitung durch einen Parser folgendes zu beachten. Es dürfen keine Linksrekursionen auftreten. Das heißt, keine Produktionen der Form A A, da diese zu einer Endlosschleife führen können, wenn immer wieder nach A produziert wird. Die Linksrekursionen sind nach folgendem Schema zu beseitigen., 1
2 Weiterhin ist darauf zu achten, dass die Grammatik in einer Form vorliegt die keine Epsilon-Produktionen vorweist und keine Verkettungen hat, da sonst eine indirekte Rekursion auftreten kann. Parser Kontextfreie Grammatiken dienen als Basis für Parser. Sie können, anders als reguläre Sprachen, Strukturen wie Klammern und Anweisungsblöcke erkennen und richtig interpretieren. Dies ist möglich da kfg zählen können. Der Parser ist die syntaktische Analyseeinheit des Compilers. Er verarbeitet die Ausgaben des Lexer. Ziel des Parsers ist es eine vom Lexer gegebene Zeichenfolge mit der Grammatik der verwendeten Sprache zu vergleichen und einen Parse-Baum dafür zu erstellen. Ein Parse-Baum ist die grafische Darstellung der Ableitung der Grammatik zu einer Zeichenfolge. Es werden zwei Parse-Methoden betrachtet: Top-Down-Syntaxanalyse Der Parse-Baum wird von der Wurzel aus analysiert und eine Linksableitung erzeugt. Dabei wird ausgehend vom Startsymbol solange, die richtige Produktion gewählt, bis schließlich die Ableitung der Zeichenkette erfolgreich ist. Die dazugehörige Grammatik wird als LL(1)-Grammatik bezeichnet. Das erste L steht dafür, dass die Eingabe von links nach rechts gelesen wird. Das Zweite L steht für die erzeugte Linksableitung. Die 1 in Klammern gibt die Vorausschautiefe (oder eng. Lookahead) auf die folgenden Zeichen in der Satzform an. In diesem Fall wird das nächste Zeichen mit berücksichtigt. Dies ist auch der Normalfall. Das Parsen im Top-Down Modus erfolgt durch einen tabellengesteuerten prädiktiven Parser. Dieser verfügt über einen Eingabepuffer für den zu analysierenden String, einen Stack, in dem die Symbole der Produktionen stehen, und eine Parsertabelle. Gesteuert wird das Ganze von einem prädikativen Parserprogramm. Zu Beginn der Analyse steht auf dem Stack das Startsymbol der Grammatik und der Eingabestring befindet sich im Eingabepuffer. Das Programm liest das erste Symbol auf dem Stack und das erste Zeichen der Eingabe. Die Kombination aus beidem ergibt eine Position in der Parsertabelle, an der die Produktion für das Symbol auf dem Stack steht. Das Symbol auf dem Stack wird durch die gefundene Produktion ersetzt. Ist das Symbol auf dem Stack ein Terminal, wird es vom Stack gelöscht und das entsprechende Terminal in der Eingabe entfernt. Der Vorgang geht solange bis der Stack und die Eingabe leer sind. Damit ist die Zeichenkette erkannt worden. Beispiel Zeichenfolge id+id*id Grammatik + () 2
3 Modell eines tabellengesteuerten prädiktiven Parsers Parsertabelle Top-Down-Parsing fürid+id*id 3
4 Verschiebung durch prädiktiven Parser bei Eingabe id+id*id Bottom-Up-Syntaxanalyse Die Analyse erfolgt in diesem Fall von den Blättern hin zur Wurzel. Es wird dabei versucht den Eingabestring durch Reduktion auf das Startsymbol der Grammatik zurückzuführen. Der Eingabestring wird dabei von links nach rechts gelesen und von links nach rechts reduziert. Dadurch entsteht eine umgekehrte Rechtsableitung. Zentrales Problem bei dieser Vorgehensweise ist zu erkennen, wann ein Symbol oder eine Kette von Symbolen zu reduzieren ist. Ein Teilstring der Eingabe (z.b. ein Symbol oder eine Zeichenkette), die einen Rumpf einer Produktion darstellt, wird als Handle bezeichnet. Ziel ist es also einzelne Handles von links nach rechts in der Zeichenkette zu reduzieren. Die Reduktion ist abgeschlossen, wenn das Startsymbol der Grammatik erreicht ist. Die Zeichenkette ist damit erkannt. Ein sehr einfaches Verfahren ist das Handle-Stutzen. Dabei wird von links nach rechts ein Handle nach dem anderen reduziert. Ein weiteres Verfahren ist die Shift-Reduce-Syntaxanalyse. Dabei wird die Eingabe Zeichenweise auf einen Stack geschrieben. Der Parser überprüft wann die Zeichenfolge auf dem Stack einem Handel entspricht und reduziert diese dann schließlich. Bei dieser Methode können zwei Probleme auftreten. Zum einen ein Shift/Reduce-Konflikt, bei dem der Parser nicht entscheiden kann oder er die Zeichenfolge auf dem Stack reduzieren soll oder er noch ein Zeichen auf den Stack schieben soll. Zum anderen einen Reduce/reduce-Konflikt, bei dem es nicht eindeutig ist, welche Zeichenfolge auf dem Stack reduziert werden soll. Beispiel Zeichenfolge id*id Grammatik + ( ) 4
5 Bottom-Up-Analyse für id*id Handles während einer Syntaxanalysevon id 1 *id 2 Konfiguration eines Shift-Reduce- Parsers bei der Eingabeid 1 *id 2 LR-Syntaxanalyse Beide Probleme treten nicht bei Verwendung eines LR(k)Parsers auf. Das L steht dabei wieder dafür, dass die Eingabe von links gelesen wird. Das R steht für eine erzeugte Rechtsableitung und das k beschreibt wie weit der Parser vorausschauen kann. Gewöhnlich ist k=1. Der LR-Parser kann sich über eine Sammlung von Zuständen merken, wo er sich beim Einlesen der Zeichenkette befindet. Die Zustände enthalten mögliche Produktionen, die in den jeweiligen Fällen möglich wären. Angeordnet werden die Zustände in einem LR(0) Automaten. Dadurch lassen sich die Übergänge von einem zum nächsten Zustand beschreiben und es ist möglich Abhängigkeiten der Reduktionen zu erfassen. Somit ist das oben beschriebene Problem nicht mehr gegeben. Der LR-Parser ist ähnlich zum LL(1)-Parser aufgebaut. Allerdings speichert er auf dem Stack keine Symbole sondern Zustände, in denen er sich befindet. Die zugehörige Parsertabelle sieht auch anders aus. Sie ist zweigeteilt. In einen Teil, der für die verschiedenen Aktionen des Parsers zuständig ist (Action) und in einen Teil, der für den Wechsel des Zustandes verantwortlich ist (Goto). Beim Verschieben wird ein weiteres Zeichen auf den Stack geschoben. Beim Reduzieren wird die Zeichenkette auf dem Stack reduziert. Beim Akzeptieren ist die Eingabe auf dem Stack auf das Startsymbol zu reduzieren. Die Zeichenkette ist erkannt worden. Bei einer Fehlermeldung ist etwas Unerwartetes passiert. Prinzipiell sind LR-Parser sehr mächtig und können Fehler korrigieren. Darauf wird an dieser Stelle aber nicht weiter eingegangen. 5
6 Modell eines LR-Parsers Grammatik + ( ) LR(0) Automat Syntaxanalyse von id*id 6
7 YACC YACC stehtfüryet another compiler compiler.wie am Namen zu erkennen ist, handelt es sich hierbei um einen Compiler, der einen Compiler erzeugt. In UNIX-Systemen ist YACC standardgemäß vorhanden. Interessant ist YACC, da es nach Eingabe einer kfg einen Parser erzeugt der diese Grammatik und somit die dazugehörige Sprache erkennen kann. Implementiert werden kann die kfg z.b. über ein C-Programm. Dieses ist dreiteilig aufgebaut. Deklarationen %% Übersetzungsregeln %% Unterstützende C-Routinen Für die Implementierung der kfg ist der Bereich der Übersetzungsregeln wichtig. Hier wird die kfg beschrieben. Ein Beispiel für eine Produktion Exp : ID {...} Exp {...} Exp '+' Exp {...} Exp '*' Exp {...} '(' Exp ')' {...} ; Id :'a' {...} 'b' {...} Id 'a' {...} Id 'b' {...} Id '0' {...} Id '1' {...} ; Der Doppelpunkt wird als Produktionssymbol verwendet. Alle Produktionen mit demselben Kopf werden zusammengefasst. Ihre Rümpfe durch vertikale Striche getrennt. Ein Semikolon beendet die Liste der zu einem Kopf gehörigen Rümpfe. Terminale Zeichenreihen stehen in halben Anführungsstrichen. Zeichen oder Zeichenreihen ohne Anführungszeichen sind Nichtterminale. Markup-Sprachen Im Deutschen werden diese Sprachen auch als Auszeichnungs- oder Kennzeichnungssprachebezeichnet. Die Sprachen bestehen aus Text, der mit Markierungen, sogenannten Tags, versehen ist. Die Tags geben an, wie das Erscheinungsbild des Textes sein soll oder welche Bedeutung der Text hat. 7
8 HTML HyperText Markup Language Hierbei handelt es sich um eine Sprache, bei der die Tags zum formatieren des Textes eingesetzt werden. Tags werden in html mittels spitzer Klammern<> gekennzeichnet. Eine Formatierung beginnt mit einen Tag der Form <OL> und endet mit </OL>. DerSlash markiert also das Ende. Laut Konvention gehört zu jedem öffnenden Tag ein schließendes Tag. Aber bei einigen ist dies nicht unbedingt nötigt, wie z.b. bei <P>. Beispiel: <P>Dinge, die ich <EM>mag</EM>: <OL> <LI>Sonnenschein <LI>Schnee </OL> Dinge, die ich mag: 1. Sonnenschein 2. Schnee XML extensible Markup Language Hier steht die Semantik im Vordergrund. Ziel ist es durch die Tags die Bedeutung des Textes sicherzustellen. Z.B. indem eine Adresszeile durch entsprechende Tags gekennzeichnet wird. Wichtigstes Element von XML ist die DTD (Document-Type-Definition). Darin werden Dokumententypen und Hierarchien durch die Nutzer festgelegt. Die Beschreibung erfolgt dabei in einer Notation, die im Grunde eine kfg ist. Nur die verwendeten Zeichen sind andere. Ein DTD-Dokument beginnt mit: <!DOCTYPE Name-der-DTD [ Liste der Elementdefinitionen ]> Einzelne Elemente werden wie folgt definiert. <!ELEMENT Elementname (Beschreibung des Elements)> Folgende Zeichen werden verwendet: #Text steht für normalen Text ohne XML-Tag Operatoren Vereinigung, Verkettung * Null oder mehr Vorkommen + Ein oder mehr Vorkommen? Null oder ein Vorkommen 8
9 Beispiel: <!DOCTYPECoursespecs [ <!ELEMENT COURSES (COURSE+)> <!ELEMENT COURSE (CNAME, PROF, STUDENT*, Klausur?)> <!ELEMENT CNAME (#PCDATA)> <!ELEMENT PROF (#PCDATA)> <!ELEMENT STUDENT (STNAME IMMANR)> <!ELEMENT STNAME (#PCDATA)> <!ELEMENT IMMANR (#PCDATA)> <!ELEMENT TA (#PCDATA)> ]> Die kfg-struktur hinter den Sonderzeichen (+ *?) Beispiel: Anlegen einer Kursliste!" + #$% #$%? ' <COURSES> <COURSE> <CNAME>Physik I</CNAME> <PROF>Müller</PROF> <STUDENT> <STNAME>Max Schulze</STNAME> </STUDENT> <STUDENT> <IMMANR> </IMMANR> </STUDENT> <Klausur>JA</Klausur> </COURSE> <COURSE>... </COURSE> </COURSES> Literatur Compiler-Prinzipien,Techniken und Werkzeuge, 2.aktualisierte Auflage, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jefferey D. Ullman, Addison-Wesley Pearson Studium, 2008 Einführung in Automatentheorie, formale Sprachen und Berechenbarkeit, 3. aktualisierte Auflage, John E. Hopcroft, RajeevMotwani, Jefferey D. Ullman, Addison- Wesley Pearson Studium,
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
Mehr5. Die syntaktische Analyse
mittels sog. Parser Input: Folge von Token (Symbolen), geliefert vom Scanner/Sieber Aufgabe: Teilfolgen zusammenfassen zu größeren syntaktischen Einheiten Ausdrücke, Anweisungen(-folgen), Deklarationen,
MehrAlgorithmen und Datenstrukturen I - Exkurs Formale Sprachen -
Algorithmen und Datenstrukturen I - - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 22 Exkurs: Formale Sprachen Im Kapitel
MehrAlgorithmen und Datenstrukturen I - Exkurs Formale Sprachen -
Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 1 Exkurs: Formale
MehrGrammatiken. 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,
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
MehrTheoretische Informatik I
Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Verarbeitung von Programmiersprachen Was ist das einfachste
MehrFragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen
Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen 1. Was ist eine formale Sprache? Menge von Zeichenketten, die aus den Symbolen eines beliebigen Alphabets aufgebaut sind. Zeichenkette:
MehrShift 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.
MehrKellerautomat (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
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
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.
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,
MehrShift 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.
MehrParsing regulärer Ausdrücke. Karin Haenelt
Karin Haenelt 25.4.2009 1 Inhalt kontextfreie Grammatik für reguläre Ausdrücke Grundlagen Parsebaum: konkrete Syntax Syntaxbaum: abstrakte Syntax Algorithmus: rkennung Konstruktion des Syntaxbaumes 2 Grammatik
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
MehrCompilerbau 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
MehrAlfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman. Compiler. informatik. Prinzipien, Techniken und Werkzeuge. 2., aktualisierte Auflage
Alfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman it informatik Compiler Prinzipien, Techniken und Werkzeuge 2., aktualisierte Auflage Inhaltsverzeichnis Vorwort... XXIX Zur deutschen Ausgabe...XXXIII
MehrImplementierung eines LR-Parser-Generators mit syntaktischen Prädikaten
Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten Aufgabenbeschreibung 29. Juli 2011 1 Einleitung und Motivation Der Parser-Generator Antlr [Par07] bietet die Möglichkeit, die Auswahl
MehrWas 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
MehrCompilerbau. 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 fischer@informatik.hu-berlin.de J.Fischer 11.1 4.6.4 LR(1) - Syntaxanalyse Motivation für
MehrCompilerbau. Martin Plümicke WS 2018/19
Compilerbau Martin Plümicke WS 2018/19 Agenda I. Überblick Vorlesung Literatur II. Compiler Überblick III. Überblick Funktionale Programmierung Einleitung Haskell-Grundlagen IV. Compiler Scanner Parser
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:
Mehr2.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?
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
MehrSyntax 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
MehrTheoretische Informatik I
Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken
MehrSyntax von Programmiersprachen
"Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp
Mehr6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken
6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken Mod-6.1 Kontextfreie Grammatik (KFG): formaler Kalkül, Ersetzungssystem; definiert Sprache als Menge von Sätzen; jeder Satz ist eine Folge von
MehrLR Parsing. Prinzip: Entwicklung des Parsebaums bottom up, von links nach rechts (Abb. 2.52)
LR Parsing Prinzip: Entwicklung des Parsebaums bottom up, von links nach rechts (Abb. 2.52) Parserkonfiguration: s 0 X 1 s 1... X m s m, t i t i 1... t n 1.Stack: enthält abwechselnd Zustand sk und Grammatiksymbol
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik 4. Kellerautomaten und kontextfreie Sprachen (I) 3.06.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Organisatorisches 1. Teilklausur: Mittwoch,
MehrKonstruieren 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)
MehrFachseminar Compilerbau
Fachseminar Compilerbau WS 08/09 Matthias Schiller Syntaktische Analyse 1. Prinzip der Top-Down-Analyse 2. LL(1)-Grammatiken Modell-Vorstellung Der Scanner liefert als Ergebnis der lexikalischen Analyse,
MehrGrammatiken und ANTLR
Grammatiken und ANTLR Zusatzfolien zu Algo Blatt 6 Author: Henry Schaefer http://www.majeeks.de/folien_blatt6.pdf Grammatik Definition: syntaktische Beschreibung einer Sprache (H.S.) Definiton Grammatik
MehrProseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.
Proseminar TI: Kellerautomaten Vortrag: 10.11.2015 Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer. 1 Motivation Wir kennen bereits die Chomsky-Hierarchie. Sie klassiziert formale
MehrSprachen sind durch folgenden Aufbau gekennzeichnet:
BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder
MehrBottom-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
MehrErgänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1].
Themen Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1]. [1] Aho, Alfred V. ; Lam, Monica S. ; Sethi, Ravi: Compiler. Prinzipien, Techniken und Tools. Pearson, 2008. ISBN 3827370973
MehrBottom-up-Syntaxanalyse
2.2.2.2 Bottom-up-Syntaxanalyse Lernziele: Einführung in die bu-syntaxanalyse LR(k)-Analyseverfahren Auflösung von Konflikten bei der Parsergenerierung Zusammenhang: KFGs und Kellerautomaten Einführung:
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
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
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
Mehr6 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,
MehrSyntax 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
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
MehrKontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48
Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 48 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs rekursiv definierten baumartigen
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
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
MehrLexikalische 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
MehrKapitel 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
MehrDer Earley-Algorithmus
Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise
MehrTheoretische Informatik I
Theoretische Informatik I Rückblick Theoretische Informatik I 1. Mathematische Methoden 2. Reguläre Sprachen 3. Kontextfreie Sprachen Themen der Theoretischen Informatik I & II Mathematische Methodik in
MehrDer Earley-Algorithmus
Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise
MehrEarley Parser. Flutura Mestani
Earley Parser Flutura Mestani Informatik Seminar Algorithmen zu kontextfreien Grammatiken Wintersemester 2015/2016 Prof. Martin Hofmann, Dr. Hans Leiß Flutura Mestani 25.11.2015 Seminar Algorithmen zu
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
MehrCompilerbau. Einführung in Bison
Compilerbau Einführung in Bison Überblick 1. Bison a) Eingabespezifikation 1. Prolog 2. Definitionsteil 3. Regelteil 4. Epilog b) Bison-Bezeichner und -Funktionen c) Konflikte und Mehrdeutigkeiten d) Debug-Funktionalität
MehrKapitel: 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
MehrAlfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman. Compiler. informatik. Prinzipien, Techniken und Werkzeuge. 2., aktualisierte Auflage
Alfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman it informatik Compiler Prinzipien, Techniken und Werkzeuge 2., aktualisierte Auflage Alfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman Compiler
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 13.01.2011 INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
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
MehrKontextfreie Sprachen werden von PDAs akzeptiert
Kontextfreie Sprachen werden von PDAs akzeptiert Sei G = (Σ, V, S, P) eine kontextfreie Grammatik. Dann gibt es einen PDA A mit L(A) = L(G). Der PDA A arbeitet mit nur einem Zustand q 0, besitzt das Kelleralphabet
Mehr6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken. Kontextfreie Grammatik. Vorlesung Modellierung WS 2011/12 / Folie 601
6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken Kontextfreie Grammatik (KFG): formaler Kalkül, Ersetzungssystem; definiert Sprache als Menge von Sätzen; jeder Satz ist eine Folge von Symbolen
MehrKontextfreie 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
MehrFormale 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
MehrKapitel 2. Methoden zur Beschreibung von Syntax
1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von
MehrInhalt 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
MehrVon 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Übungsaufgaben zu Formalen Sprachen und Automaten
Universität Freiburg PD Dr. A. Jakoby Sommer 27 Übungen zum Repetitorium Informatik III Übungsaufgaben zu Formalen Sprachen und Automaten. Untersuchen Sie das folgende Spiel: A B x x 2 x 3 C D Eine Murmel
MehrBegriffe (Wiederholung)
Begriffe (Wiederholung) Sprache Menge aller Sätze Alphabet terminales / nicht terminales terminales A. Zeichen aus denen die Sätze der Sprache bestehen nicht terminales A. Hilfszeichen zum Bilden von Regeln
MehrEs gibt immer einen Schlüssel und einen zugehörigen Wert,
JSON JavaScript Object Notation Im Unternehmenskontext spielt der Austausch von Daten zwischen unterschiedlichen Systemen eine große Rolle. Dabei müssen oft Technologie und Zuständigkeitsgrenzen überwunden
MehrInformatik IC2. Balazs Simon
Informatik IC2 Balazs Simon Inhaltsverzeichnis 1 Contextfreie Sprachen 3 1.1 Ableitungsbaum..................................... 3 1.2 Schönheit........................................ 4 1.3 Normalformen......................................
MehrTheoretische 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
MehrLR(1) Itemmengenkonstruktion
LR(1) Itemmengenkonstruktion Grammatik: S A$ xb A aab B B x Sprache: {xb} {anxbn n 0} nicht LL(1) x FIRST(B) x FIRST(A) also: FIRST/FIRST Konflikt bei S A$ xb nicht SLR(1) (Abb. 2.96) betrachte Item B
MehrGrundlagen der theoretischen Informatik
Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 14.05.2013 Analog zu Linksableitungen definiert man Definition 2.45 Ein Ableitungsschritt
Mehr1 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
MehrDas 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
MehrSyntaxanalyse 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
MehrKontextfreie 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
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrVorname:... Matrikel-Nr.:... Unterschrift:...
Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Diplom (RGS 9) Compilerbau Sommersemester 2005 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise:
MehrProgrammiersprachen 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
MehrVorlesung 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
MehrFormale Sprachen. Inhalte. Lehrplan. Hinweis
Formale Sprachen Inhalte Aufbau von Sprachen Grammatiken formaler Sprachen Endliche Automaten *Grenzen endlicher Automaten Werkzeuge TdI, 2. Juli 2010 Peter Brichzin 1 TdI, 2. Juli 2010 Peter Brichzin
MehrCompilerbau für die Common Language Run-Time
Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,
MehrAutomatentheorie 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
MehrDas 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Ü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
Mehr9.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
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens
MehrMehrdeutige Grammatiken
Mehrdeutige Grammatiken Wir haben gesehen, dass es auch mehr als eine Linksableitung, d.h. mehr als einen Syntaxbaum geben kann, um das selbe Terminalwort zu erzeugen. Eine Grammatik, die für mindestens
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
MehrKlammersprache 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
MehrDefinition 78 Ein NPDA = PDA (= Nichtdeterministischer Pushdown-Automat) besteht aus:
4.7 Kellerautomaten In der Literatur findet man häufig auch die Bezeichnungen Stack-Automat oder Pushdown-Automat. Kellerautomaten sind, wenn nichts anderes gesagt wird, nichtdeterministisch. Definition
MehrAutomaten und formale Sprachen Notizen zu den Folien
13 Kellerautomaten Automaten und formale Sprachen Notizen zu den Folien Warum ein Automatenmodell für kontextfreien Sprachen (zu Folie 233) Manche Konstruktionen und Verfahren lassen sich besser mit Hilfe
MehrVarianten endlicher Automaten
Varianten endlicher Automaten Varianten endlicher Automaten 2 Endliche Automaten mit λ-übergängen können aktuellen Zustand wechseln, ohne ein Zeichen zu lesen; sind praktisch (vereinfachen oft die Modellierung
MehrProf. Dr. Wolfgang Schramm. Vorname:... Matrikel-Nr.:... Unterschrift:...
Compilerbau Prof. Dr. Wolfgang Schramm Sommersemester 2006 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und Ihre Matrikelnummer zu Beginn auf das Deckblatt
Mehr2.1 Allgemeines. Was ist eine Sprache? Beispiele:
Was ist eine Sprache? Beispiele: (a) Deutsch, Japanisch, Latein, Esperanto,...: Natürliche Sprachen (b) Pascal, C, Java, Aussagenlogik,...: Formale Sprachen Wie beschreibt man eine Sprache? (i) Syntax
MehrGrundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes
Grundlagen der Informatik III Wintersemester 2010/2011 21. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la
Mehr