Übung zu Grundlagen des Übersetzerbaus

Größe: px
Ab Seite anzeigen:

Download "Übung zu Grundlagen des Übersetzerbaus"

Transkript

1 Übung zu Grundlagen des Übersetzerbaus Mehr zu Parsern und LL(k)-Grammatiken Lehrstuhl für Informatik 2 (Programmiersysteme)

2 Probleme bei LR-Parsern Für manche Grammatiken ist es nicht möglich, LR-Parser zu konstruieren. Beispiel: S a a S a (Sprache: ungerade Anzahl von a ) Ab 1 konsumierten Zeichen: Shift oder Reduce? Zwei mögliche Probleme: SHIFT/REDUCE-Konflikt: Soll ein SHIFT oder ein REDUCE stattfinden? REDUCE/REDUCE-Konflikt: Anhand welcher (von zwei) Regeln soll reduziert werden? Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 2 / 22

3 SHIFT/REDUCE-Konflikte Beispiel: EX ID EX + EX Input: a + b + c Nach Konsum von a + b : Stack hat EX + EX, Input ist + Frage: Soll + geshiftet werden, oder soll stattdessen a + b wegreduziert werden? Hier: Beides möglich, führt zu unterschiedlichen Parse-Bäumen Beispiel von oben: S a a S a Nur eine der zwei möglichen Entscheidungen ist richtig, die Andere führt zu einem Parse-Fehler. Welche Entscheidung richtig ist, hängt vom Input ab: Bei aaa muss nach dem 2. a reduziert werden. Bei aaaaa muss nach dem 3. a reduziert werden. Allgemein: Bei 2k + 1 a muss nach dem k + 1 ten a reduziert werden. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 3 / 22

4 Lösen von SHIFT/REDUCE-Konflikten Grammatik Ändern: Aus EX ID EX + EX EX ID EX + ID erzeugt einen Parse-Baum, der nach der alten Grammatik auch legal wäre. Statt S a a S a Besser: S a S a a Erzeugt einen anderen Parse-Baum (u.u. inkompatibel!) Problem: Gegeben S a S a b S b ɛ ( alle Palindrome aus a und b mit gerader Länge ) Kein LR-Parser möglich! Im Allgemeinen: Zu zwei verschiedenen kontextfreien Grammatiken zu bestimmen, ob sie die gleiche Sprache erzeugen, ist unentscheidbar... Also: kein Algorithmus möglich, der immer funktioniert. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 4 / 22

5 Lösen von SHIFT/REDUCE-Konflikten Spezialfall: Präzedenz von Operatoren festlegen: Grammatik: EX ID EX + EX EX * EX Ziel: Standard-Arithmetische Ausdrücke mit Punkt-Vor-Strich. Lösung: Präzedenz und Assoziativität festlegen. Idee: EX OP1 EX liegt auf dem Stack, OP2 steht im Input. Wenn OP1 Präzedenz vor OP2 hat: Reduzieren. Sonst: Shift! Erweiterung: EX OP1 EX liegt auf dem Stack, OP1 steht im Input. Wenn OP1 linksassoziativ ist: Reduzieren. Sonst: Shift! Damit z.b. Problem bei Bool-Ausdrücken in E lösbar. (Übung) Einfach, aber nur in Spezialfällen anwendbar. Beispiel! Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 5 / 22

6 REDUCE/REDUCE-Konflikte Ursache: uneindeutige Grammatik assignment : ID EQUALS NUMBER ID EQUALS expression expression : expression PLUS expression expression MINUS expression LPAREN expression RPAREN NUMBER Input: a := 5 (komplett konsumiert) Stack: ID EQUALS NUMBER Mögliche Reduktionen: Alles assignment, oder NUMBER expression. Lösung 1: Auflösungsstrategie: größere Reduktion vor kleinerer Reduktion Lösung 2: Grammatik eindeutig(er) machen, und hoffen dass der Parser Generator gute Fehlermeldungen liefert. PLY Dokumentation: To try and figure it out, you ll probably have to look at your grammar and the contents of the parser.out debugging file with an appropriately high level of caffeination. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 6 / 22

7 GLR-Parser LR-Parsen geht i.a. nicht ohne Konflikte. Idee: Konflikte nicht verhindern/vermeiden. Jeder Konflikt kann auf 2 (oder mehr) Arten aufgelöst werden. Warum nicht alle Problemlösungen gleichzeitig ausprobieren? Bei Konflikt: Stack + Zustandsautomat + Inputposition duplizieren, beide Möglichkeiten parallel weiterlaufen lassen. Tatsächliche Implementierung verwendet Bäume an Stelle von Stacks, weitere Optimierungen... Ergebnis: alle möglichen Parse-Bäume Laufzeitkosten: O(Inputgröße 3 ) Worst-Case. Für (LA-)LR-Grammatiken: Verhalten, Preformance wie LR-Parser Für mehrdeutige Grammatiken: Mehrere Ergebnisse, Auswahl nötig! Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 7 / 22

8 Mehr zu Parsern und LL(k)-Grammatiken Warum mehr Informationen über (LL(k))-Parser? Es gibt Alternativen zu (LA-)LR - Parsern... und diese sind praxisrelevant... und sie verhalten sich anders als (LA)LR - Parser. Die Chancen, dass diese später verwendet werden, sind hoch. Verwandtschaft mit handgeschriebenen Parsern. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 8 / 22

9 Theorie zu LL(k) - Parsern (1) Genau wie bei LR-Parsern: Ein Stack Eine Input-Quelle (aus der Terminalsymbole kommen) Ein Zustandsautomat, der von der Input-Quelle lesen kann, und Dinge auf den Stack legen kann und vom Stack herunter nehmen kann Anders als beim LR-Parser: Zu Beginn: Startsymbol der Grammatik liegt auf dem Stack Statt Shift: Drop Wenn oben auf dem Stack ein Terminalsymbol steht: Falls dieses auch im Input steht, so werden beide entfernt. Sonst: Fehler! Statt Reduce: Expand Wenn oben auf dem Stack ein Nichtterminalsymbol steht: Nimm das Nichtterminal vom Stack, und lege die rechte Seite einer passenden Produktion rückwärts auf den Stack Wenn Stack am Ende leer: Erfolg Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 9 / 22

10 Beispiel Stack Input E a + 3 * b E A M a + 3 * b E A MM P a + 3 * b E A MM ID a + 3 * b D A MM + 3 * b E A + 3 * b E Grammatik: Expr MultExpr Additions A M * b D Additions ɛ + MultExpr Additions A M 3 * b E MultExpr Particle MoreMult A MM P 3 * b E MoreMult ɛ * Particle MoreMult A MM NUM 3 * b D Particle IDENTIFIER NUMBER A MM * b E A MM P * * b D A MM P b E A MM ID b D A MM E A E leer Parse-Vorgang erfolgreich Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 10 / 22

11 Theorie zu LL(k) - Parsern (2) Der Zustandsautomat muss (wie bei LR-Parsern) entscheiden, was zu tun ist. Die Entscheidung ob Drop oder Expand ist einfach: Wenn oben auf dem Stack ein Terminalsymbol liegt, geht nur Drop, und sonst geht nur Expand. Die Entscheidung, anhand welcher Grammatikregel expandiert wird, hängt vom Input ab. Der Zustandsautomat betrachtet die kommenden k Token, und trifft dann eine Entscheidung. Vorteil: Bei endlichem k ist der Parse-Aufwand linear in der Input-Größe. Nachteil: Die Entscheidung, welche Produktion zu verwenden ist, muss mit nur k Token treffbar sein. Nachteil 2: Linksrekursive Produktionen sind nicht möglich Bsp.: E id E + id (Stack overflow!) Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 11 / 22

12 Probleme bei LL(k) - Parsern Alternativen brauchen unterschiedliches Präfix. Beispiel C (vereinfacht): Program Vardecl FuncDecl FuncDecl Type ID ( ) ; VarDecl Type ID ; Type IDENTIFIER Pointers Pointers ɛ * Pointers Input: int *******... In Program Entscheidung nötig: Ersetzen mit Vardecl oder FuncDecl? Dazu nötige Information: Kommt eine Klammer nach dem Typ und dem Namen? Aber: Typ kann beliebig lang sein! k Token Lookahead reichen nicht. Grundlegendes Problem: Verschiedene Produktionen fangen mit den gleichen Token an. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 12 / 22

13 Probleme bei LL(k)-Parsern Formal: 2 Arten von Konflikten: FIRST/FIRST: A B C, B und C fangen gleich an. Problem: A liegt oben auf dem Stack - soll nach B oder C expandiert werden? FIRST/FOLLOW: (nur bei ɛ-produktionen) A1 B C A2 B X B ɛ D C und D fangen gleich an. B liegt oben auf dem Stack, passender Input für D und C kommt. Problem: Soll nach D expandiert werden, oder soll nach ɛ expandiert werden? Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 13 / 22

14 Lösungen Linksrekursion kann (immer) eliminiert werden. (Dabei entstehen u.u. FIRST/FIRST-Konflikte.) recursion#removing_left_recursion FIRST/FOLLOW - Konflikte können durch Substitution aufgelöst werden, dadurch entstehen u.u. neue FIRST/FIRST - Konflikte. FIRST/FIRST - Konflikte lassen sich manchmal durch Left Factoring auflösen. Beispiel für Left Factoring : Program Vardecl FuncDecl problematisch, Anfang gleich. Stattdessen: Program Type ID VardeclOrFuncDeclRest VardeclOrFuncDeclRest ; ( ) ; Achtung: Diese Lösungsstrategien können den Parse-Baum einer erkannten Sprache ändern - dies lässt sich meist hinterher mit AST - Transformationen beheben. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 14 / 22

15 Linksrekursion vs. Assoziativität Beispiel: Entfernen von Linksrekursion ändert die Assoziativität von arithmetischen Ausdrücken! Linksrekursive Grammatik: EX ID EX + ID EX - ID Äquivalente rechtsrekursive Grammatik: EX ID ID + EX ID - EX Erzeugt selbe Sprache, aber: Assoziativität anders. Parse-Baum zu a - b - c wird wie a - (b - c) geparst... Lösung: Hinterher AST zurechttransformieren. Einige Parser-Generatoren (z.b. ANTLR) können dies automatisch, wenn man in der Grammatik die Assoziativität angibt. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 15 / 22

16 Grundlagen rekursiv absteigender Parser Pro Nichtterminalsymbol eine Funktion Funktion betrachtet die nächsten k Token im Input, entscheidet dann, welche Produktion verwendet werden soll. Wenn die Produktion ein Nichtterminalsymbol beinhaltet, so wird dessen Funktion aufgerufen (Rekursion!) Wenn die Produktion ein Terminalsymbol beinhaltet, so wird versucht, dieses aus dem Input zu konsumieren. Falls nicht vorhanden: Fehler! Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 16 / 22

17 Beispiel für rekursiv absteigenden Parser # vordefiniert: # * next_token gibt nächstes # zurück, ohne zu konsumieren # * consume konsumiert das über- # gebene Token, panic bei mis- # match # * panic bricht das Parsen er- # folglos ab def expr(): mult_expr() additions() def additions(): if next_token() == + : consume( + ) mult_expr() additions() def mult_expr(): particle() more_mult() def more_mult(): if next_token() == * : consume( * ) particle() more_mult() def particle(): if next_token() == ID: consume(id) elif next_token() == NUMBER: consume(number) else: panic() Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 17 / 22

18 Ähnlichkeiten zwischen LL(k)-Parsern und Rekursiv Absteigenden Parsern Vergleichbar dann, wenn die Entscheidung für eine Produktion final ist (d.h. kein Zurücklegen von Tokens in den Input und Backtracking) Wenn zugrundeliegende Grammatik in LL(k), dann: Parser existiert und funktioniert. Übungsaufgabe: Vergleich zw. Funktionsaufruf-Stack und LL(k) - Stack! Parser kann von Hand geschrieben werden (anhand der Grammatik) Parsen ist linear in Inputgröße (damit meist akzeptabel schnell) Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 18 / 22

19 Rekursiv absteigende Parser mit Backtracking Wenn Grammatik nicht in LL(k): Rekursiver Abstieg immer noch möglich Wenn mit k Token Lookahead Entscheidung nicht möglich: Eine Produktion auswählen und versuchen mit ihr zu parsen. Bei Misserfolg: Input wiederherstellen, andere Produktion auswählen. Endgültiger Misserfolg wenn alle Produktionen fehlschlagen Backtracking! Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 19 / 22

20 Beispiel Backtracking beim Parsen def Program(): x = getinputposition() try: VarDecl() return catch ParseException: setinputposition(x) FuncDecl() def VarDecl(): Type() consume(id) consume( ; ) def FuncDecl(): Type() consume(id) consume( ( ) consume( ) ) consume( ; ) def Type(): consume(id) while next_token() == * : consume( * ) Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 20 / 22

21 Backtracking: Probleme Je nach Grammatik/Input u.u. sehr teuer (exponentiell mit Inputgröße als Basis!) Beispiel: A a A b a A c y Problem: Für die selbe Input-Position wird immer wieder die Funktion für A aufgerufen. Lösung: Memoization. Jeder Aufruf der Funktion für A merkt sich seine Inputposition das Parse-Ergebnis Benötigt Laufzeit in O(Inputgröße), sowie Speicher in O(Inputgröße * Grammatikgröße) Wird auch Packrat-Parsing genannt. Verwandt: Sogenannte PEG-Parser ( Parsing Expression Grammar ). Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 21 / 22

22 Fazit LL(k) oder LR-Parser? Je nach Sprache das Passende auswählen! Wenn möglich, LL(k) statt Backtracking/Memoization. Wenn möglich, LALR statt GLR. Leitfaden für Sprachdesigner: Sprache so einfach parsebar machen wie möglich. Übung Ü1 Informatik 2 WS 2015/16 Mehr zu Parsern und LL(k)-Grammatiken Folie 22 / 22

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

LR(1) Itemmengenkonstruktion

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

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

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

Fachseminar Compilerbau

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

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

Der Grid-Occam-Compiler. Syntaxanalyse

Der Grid-Occam-Compiler. Syntaxanalyse Der Grid-Occam-Compiler Syntaxanalyse Grammatikgetriebener Compilerbau Grammatik Teil der Sprachdefinition Grammatik liefert Liste der Tokenklassen Grammatik hilft bei Strukturierung der abstrakten Syntax

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

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

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

Äquivalente Grammatiken / attributierte Grammatik

Äquivalente Grammatiken / attributierte Grammatik Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,

Mehr

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Algorithmen 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

Mehr

VU Software Paradigmen / SS 2014

VU Software Paradigmen / SS 2014 VU Software Paradigmen 716.060 / SS 2014 Thorsten Ruprechter ruprechter@tugraz.at Institute for Software Technology 1 Organisatorisches Ausgabe: 25.03. (heute) Fragestunde: 22.04. Abgabe: 29.04 (ausgedruckt)

Mehr

Compilerbau. Einführung in Bison

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

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

Übungsaufgaben zu Formalen Sprachen und Automaten

Ü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

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

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

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

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

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen Kapitel Kapitel 4 Deskriptive Programmierung SS 2008 4. 4. Algorithmen und Datenstrukturen in in deskriptiven Programmiersprachen Deskriptive Programmierung 1 Sprachverarbeitung in in Prolog Prolog Prolog

Mehr

Thomas Behr. 17. November 2011

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

Mehr

Syntax. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

Syntax. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Organisatorisches CIP-Kennungen: Hat jeder eine CIP-Kennung? Weiterleitung der Emails

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

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al. Folie: 1 Kapitel 4 Übersicht Übersicht Syntax: Definition 4 syn-tax: the way in which words are put together to form phrases, clauses, or sentences. Webster's Dictionary Die Syntax (griechisch σύνταξις

Mehr

Automatentheorie und formale Sprachen rechtslineare Grammatiken

Automatentheorie und formale Sprachen rechtslineare Grammatiken Automatentheorie und formale Sprachen rechtslineare Grammatiken Dozentin: Wiebke Petersen 17.6.2009 Wiebke Petersen Automatentheorie und formale Sprachen - SoSe09 1 Pumping lemma for regular languages

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

Lexikalische Programmanalyse der Scanner

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

Mehr

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

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2011 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Wir beschäftigen uns ab

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

VU Software Paradigmen / SS 2012

VU Software Paradigmen / SS 2012 VU Software Paradigmen 716.060 / SS 2012 Sandra Fruhmann sandra.fruhmann@student.tugraz.at Inhalt Grammatiken Chomsky Sprachhierarchie Parse Trees Recursive Descent Parser First-, Follow-Mengen 2 Compiler

Mehr

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

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

Mehr

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

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

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

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Parsen Thomas Wehr Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform

Mehr

Komplexitätsklassen. (Lauf-)Zeit-Klassen. (Lauf-)Zeit-Klassen. Charakteristische Problemgrößen beim Parsing

Komplexitätsklassen. (Lauf-)Zeit-Klassen. (Lauf-)Zeit-Klassen. Charakteristische Problemgrößen beim Parsing Komplexitätsklassen Charakteristische Problemgrößen beim Parsing O(1) konstant O(log n) logarithmisch O(n) linear O(n k ) polynomial (k [2,4]) O(n k ) polynomial (k > 4) O(k n ) exponentiell n ist die

Mehr

Kompilerbau Semantische Aktionen & Abstrakte Syntax. Michael Leuschel

Kompilerbau Semantische Aktionen & Abstrakte Syntax. Michael Leuschel Kompilerbau Semantische Aktionen & Abstrakte Syntax Michael Leuschel An Analogy from Natural Language Characters: Source Program J i m s a w M a r y Source Program Lex Words (lexemes): Jim Tokens saw Mary

Mehr

Syntax. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Syntax. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Organisatorisches Wir werden socrative nutzen, um während der Zentralübung

Mehr

Grammatiken in Prolog

Grammatiken in Prolog 12. Grammatiken in Prolog 12-1 Grammatiken in Prolog Allgemeines: Gedacht zur Verarbeitung natürlicher Sprache. Dort braucht man kompliziertere Grammatiken als etwa im Compilerbau, andererseits sind die

Mehr

(Prüfungs-)Aufgaben zu formale Sprachen

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

Mehr

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 7 Vorlesung Theoretische Grundlagen der Informatik im W 16/17 Ausgabe 17. Januar 2017 Abgabe 31. Januar 2017, 11:00 Uhr (im

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen prachtechnologie und Compiler W 2008/2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. nelting snelting@ipd.info.uni-karlsruhe.de

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder

Mehr

Grammatiken und ANTLR

Grammatiken 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

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

Syntaktische Analyse (Parsen)

Syntaktische Analyse (Parsen) Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik G und ein String w. Fragen: Vorgehen: gehört w zu L(G)? Welche Bedeutung hat w? Konstruiere Herleitungsbaum zu w P raktische Informatik

Mehr

Interpreter - Gliederung

Interpreter - Gliederung Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache

Mehr

Formale Sprachen und Automaten: Tutorium Nr. 8

Formale Sprachen und Automaten: Tutorium Nr. 8 Formale Sprachen und Automaten: Tutorium Nr. 8 15. Juni 2013 Übersicht 1 Nachtrag 2 Besprechung von Übungsblatt 7 Aufgabe 1 Aufgabe 2 Aufgabe 3 3 CFG PDA Definitionen Ein Beispiel! Aufgabe 4 Der PDA als

Mehr

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

Informatik III. Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung Informatik III Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung 09.11.2006 schindel@informatik.uni-freiburg.de 1 Äquivalenzklassen Definition und Beispiel Definition Für eine Sprache L Σ* bezeichnen

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Earley Parsing. Parsing - WS 2012 / 2013 Lisa Orszullok & Anika Stallmann

Earley Parsing. Parsing - WS 2012 / 2013 Lisa Orszullok & Anika Stallmann Earley Parsing Parsing - WS 2012 / 2013 Lisa Orszullok & Anika Stallmann 12.12.2012 Agenda Basics Komponenten Earley Parsing - Recognizer Earley Parsing - Parser Vor- und Nachteile Parsing WS 2012/2013

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 5: Reguläre Ausdrücke und Grammatiken schulz@eprover.org Software Systems Engineering Reguläre Sprachen Bisher: Charakterisierung von Sprachen über Automaten

Mehr

1 Syntax von Programmiersprachen

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

Mehr

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 07: Parsen Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 32 Inhalt Vorlesungsüberblick

Mehr

1.) Zahlensysteme (10 Punkte)

1.) Zahlensysteme (10 Punkte) 1.) Zahlensysteme (10 Punkte) (a) Stellen Sie die folgenden zur Basis 8 (oktal) angegebenen Ganzzahlen als vorzeichenbehaftete Binärzahlen in 7 Bit dar. Negative Binärzahlen sollen im Zweierkomplement

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

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

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie Wiederholung FORMALE SYSTEME 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie Markus Krötzsch Formale Sprachen sind in Praxis und Theorie sehr wichtig Ein Alphabet ist eine nichtleere, endliche Menge

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven WS06/07 Referentin: Katharina Blinova Formale Sprachen Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven 1. Allgemeines 2. Formale Sprachen 3. Formale Grammatiken 4. Chomsky-Hierarchie 5.

Mehr

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Algorithmen & Programmierung. Ausdrücke & Operatoren (1) Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

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

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ). Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ). Beweis: Für jedes a Σ muss jede Position in der Tabelle nur konstant oft besucht werden.

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken

Mehr

Lexikalische Analyse, Tokenizer, Scanner

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

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Chomsky-Grammatiken 16. Chomsky-Grammatiken Chomsky-Grammatiken 16 Chomsky-Grammatiken Ursprünglich von Chomsky in den 1950er Jahren eingeführt zur Beschreibung natürlicher Sprachen. Enge Verwandschaft zu Automaten Grundlage wichtiger Softwarekomponenten

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Ausgewählte unentscheidbare Sprachen

Ausgewählte unentscheidbare Sprachen Proseminar Theoretische Informatik 15.12.15 Ausgewählte unentscheidbare Sprachen Marian Sigler, Jakob Köhler Wolfgang Mulzer 1 Entscheidbarkeit und Semi-Entscheidbarkeit Definition 1: L ist entscheidbar

Mehr

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie Theorie der Informatik 17. März 2014 6. Formale Sprachen und Grammatiken Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 6.1 Einführung

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren 1 und der Informatik I: Einführung in die Programmierung 5., bedingte Ausführung und Albert-Ludwigs-Universität Freiburg Bernhard Nebel 27. Oktober 2015 27. Oktober 2015 B. Nebel Info I 3 / 21 Der Vergleichsoperatoren

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 11 (Parser II) Hinweis: Dieses

Mehr

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs) ank Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert iese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht

Mehr

Theoretische Informatik Mitschrift

Theoretische Informatik Mitschrift Theoretische Informatik Mitschrift 2. Grammatiken und die Chomsky-Hierarchie Beispiel: Syntaxdefinition in BNF :=

Mehr

Theoretische Informatik I

Theoretische 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

Mehr

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO). 1 Grammatiken Autor: Tilman Blumenbach Letzte Änderung: 28. Juni 2012 18:15 Ziel von Grammatiken Wollen die Struktur von Sprachen modellieren und charakterisieren. Beispiel Ein Satz der deutschen Sprache

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik 4. Kellerautomaten und kontextfreie Sprachen (III) 17.06.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Deterministische Kellerautomaten

Mehr

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

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

Mehr

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse: LL Parsing. Autor: Aho et al.

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse: LL Parsing. Autor: Aho et al. Folie: 1 Kapitel 4 : LL Parsing Was ist Parsing? 2 E num E CFG E+E G E (E) Token String s Parser s L(G) Fehlermeldung No Yes Parsebaum für S in G Beispiel S (S)S ε Was ist die generierte Sprache? Beweis?

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 6. Klassische Suche: Datenstrukturen für Suchalgorithmen Malte Helmert Universität Basel 7. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche:

Mehr

Überblick und Wiederholung

Überblick und Wiederholung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-14-15/infoeinf WS14/15 Klausurinformationen 6 ECTS: Klausur 07.02.2015 10:15 12:15 Uhr (120

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