Definition von LR(k)-Grammatiken

Größe: px
Ab Seite anzeigen:

Download "Definition von LR(k)-Grammatiken"

Transkript

1 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. (Vereinfachung gegenüber T8.2.4) 620

2 Neues Startsymbol S Ziel: Wir wollen einfach das Ende einer erfolgreichen Herleitung erkennen. Dazu: Modifiziere die Grammatik: Neues Startsymbol S und Regel S S. Dann: Wenn diese Regel erreicht wird und die gesamte Eingabe gelesen wurde, liegt eine erfolgreiche bottom-up Herleitung vor. 621

3 Definition T8.2.5 Eine kontextfreie Grammatik G heißt LR(k)- Grammatik, falls für alle α,β,γ (V T )*, alle A,B V und alle w,x,y T * gilt: * r S αaw αβw S γbx αβy α=γ, A=B und y=x. FIRST k (w)=first k (y) r * r r 622

4 Shift-Reduce-Parser Spezieller DPDA, der zusätzlich eine Rechtsableitung berechnet. Aufbau: Eingabeband Lookahead von k S t a c k Steuerung mit Übergangstabelle Ausgabe 623

5 Übergangstabelle Enthält das Programm des Parsers. Operationen (in Abhängigkeit vom Lookahead und dem obersten Stacksymbol) Shift: Lies nächstes Zeichen der Eingabe ein und schiebe es auf den Stack. Zusätzlich speichere Zustand auf dem Stack. Reduce: Wende eine Regel A α an. Dazu entferne den zu α gehörenden Stackinhalt und lege A u. Zustand auf Stack. Error/Accept: Rechnung verwerfend/akzeptierend beenden. 624

6 Reduce-Operation Anwendung der Regel A β 1 β r Entferne die obersten 2r Symbole vom Stack (β 1,,β r, sowie die Zustände dazwischen) Weicht vom bisherigen Modell ab, da mehrere Zeichen vom Stack entfernt werden. Schreibe A auf Stack. Berechne anhand Tabelle neuen Zustand und lege ihn auf dem Stack ab. 625

7 Bsp: S S, S SaSb, S ε R0 Lookahead T 0 T 1 T 2 T 3 shift shift T 4 T 5 T 4 R2 R2 T 5 a R2 shift R2 R1 R2 R2 Acc R1 T 6 shift shift T 4 T 7 T 7 R1 R1 Alter Zustand R1 Aktion b ε S T 1 T 3 T 6 Oberstes Stacksymbol R2 neuer Zustand a b T 2 626

8 Wie berechnet man die Tabelle? Algorithmus: siehe Kapitel T8.3 und T8.4 oder Aho, A., Sethi, R. und Ullman, J.D. Compilers, Principles, Techniques and Tools, Addison-Wesley, Für LR(0)-Parser: Zu aufwändig für diese Vorlesung. 627

9 Wie berechnet man die Tabelle? Praxis: Verwende Parser-Generator. Eingabe: Kontextfreie Grammatik sowie zusätzliche Befehle, die beim Anwenden der Regeln auszuführen sind. Ausgabe: Parser. Beispiele (für sog. LALR(1)-Gram.): yacc (yet another compiler compiler) bison 628

10 Arbeitsweise e. Parser-Generators Grammatik & Befehle: name.y Parser als C-Programm name.tab.c Ausführb. Programm bison yacc gcc cc 629

11 Aufbau der Datei name.y /* Teil 1: Deklarationen */ %{ #include <stdio.h> int nr; Deklarationen für eigene Prozeduren/Var. %} int yylex(void); void yy (char const *); Deklarationen der Parser-Proz. 630

12 Teil 2: Angabe der Grammatik %% s: 0 s 1 {nr++; $$=nr; printf( Knoten %d, Regel s->0s1 mit Nachfolger %d\n,nr,$2); } ; 0 1 {nr++; $$=nr; printf( Knoten %d, Regel s->01\n,nr); } Ende der Regeln für s /* ggf. weitere Regeln */ C-Code, der beim Erreichen der Regel auszuführen ist 631

13 Teil 3: Angabe von weiteren Proz. %% int yylex(void) { int c; c=getchar(); if ((c!= 0 ) && (c!= 1 )) return 0; return c; } int yy() /* weggelassen */ int main(void) { nr=0; return yyparse(); } Übergabe von einzelnen Zeichen an den Parser Ende der Eingabe Fehlerbehandlung Aufruf des Parsers 632

14 2. Beispiel: L={w w 0 = w 1 } Besprochene Grammatik: S ε, S 0S1S, S 1S0S bison liefert: shift/reduce conflicts bedeutet: es gibt Situationen, wo sich nicht klar ist, ob ein Eingabezeichen zu lesen ist oder eine Regel anzuwenden ist. Ursache: Grammatik nicht eindeutig. Satz T8.4.10: LR(k)-Grammatiken sind eindeutig. 633

15 Eindeutige Grammatik für L S ε S 0T1S, S 1R0S T 0T1T, T ε R 1R0R, R ε erinnert an T (T)T, T ε, also eine eindeutige Grammatik für korrekte Klammerausdrücke, wobei 0=( ^, 1=) ^ 634

16 Korrektheit 1. Grammatik erzeugt nur Wörter aus L offensichtlich 2. Grammatik erzeugt alle Wörter aus L. 3. Grammatik ist eindeutig. Induktion über Wortlänge S ε, S 0T1S, S 1R0S T 0T1T, T ε, R 1R0R, R ε 635

17 Induktion über w w =0: Alle Wörter w L mit w =0 herleitbar. Alle solchen Wörter haben nur eine Herleitung. S ε, S 0T1S, S 1R0S T 0T1T, T ε, R 1R0R, R ε 636

18 w >0, o.b.d.a. beginne w mit 0. Sei i>0 kleinste Zahl m. w 1 w i 0 = w 1 w i 1. Dann gilt: w 1 =0, w i =1, w 2 w i 1 0 = w 2 w i 1 1 und w i+1 w n 0 = w i+1 w n 1 mit Jedes Anfangsstück von w 2 w i 1 enthält nicht weniger Nullen als Einsen T * w 2 w i 1 (eindeutig) w i+1 w n L S * w i+1 w n (nach IV eind.) Also: S 0T1S * 0w 2 w i 1 1w i+1 w n. Regel nicht anders anwendbar. 637

19 3. Bsp: Auswerten v.arithm. Ausdr. Neu: Verwendung von sog. Token. Statt Zahlen explizit herzuleiten, enthält die Grammatik Terminale NUM. Der Parser erzeugt für die Terminale einen semantischen Wert, also den Wert der Zahl. Einlesen der Zahlen in der Prozedur yylex. 638

20 Grammatik Variablen: s: Startsymbol a: additiver Term m: multiplikativer Term f: Faktor Regeln: s a a a+m m m m*f f f (a), NUM 639

21 Grammatik in bison-syntax %token NUM s: a {printf( Ergebnis %d\n,$1);} ; a: a + m {$$=$1+$3;} m {$$=$1;} ; m: m * f {$$=$1*$3;} f {$$=$1;} ; f: ( a ) {$$=$2;} NUM {$$=$1;} ; 640

22 Einlesen der Zahlen int yylex(void) { int c; c=getchar(); if (isdigit(c)) { ungetc(c,stdin); scanf( %ld,&yylval); return NUM; } if (c== \n ) return 0; return c; } C-Prozedur zum Einlesen von Zahlen Übergabe des Wertes an den Parser Rückgabe des Tokens NUM 641

23 Zusammenfassung Kontextfreie Grammatiken ermöglichen die Beschreibung von vielen Konstrukten aus den gängigen Programmiersprachen. Mit Parser-Generatoren kann man auf eine einigermaßen einfache Weise zu speziellen Grammatiken Parser erzeugen. Die Konstruktion von Compilern, die auch sinnvolle Fehlermeldungen liefern, ist aufwändiger. 642

LR(k)-Parser. CYK-Algorithmus ist zu langsam.

LR(k)-Parser. CYK-Algorithmus ist zu langsam. LR(k)-Prser Ziele: Effizienter (und deterministischer) Test, ob ein gegebenes Wort w in der Sprche L(G) enthlten ist. Flls j: Konstruktion des Syntxbums Flls nein: Hinweise zum Fehler CYK-Algorithmus ist

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

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

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

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

Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten

Implementierung 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

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

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

Spezifikation lexikalischer Einheiten (Token) als reguläre Ausdrücke in einer Lexer-Spezifikationsdatei (z.b. tiger.lex) Übersetzen nach lex.yy.

Spezifikation lexikalischer Einheiten (Token) als reguläre Ausdrücke in einer Lexer-Spezifikationsdatei (z.b. tiger.lex) Übersetzen nach lex.yy. BISON - Einleitung bison ist ein Programmgenerator, welches ein C oder C++ Programm erzeugt, dass die syntaktische Analyse eines Tokenstroms durchführt Vorgehensweise bie der Erstellung eines Parsers mit

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

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

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

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

Compilerbau für die Common Language Run-Time

Compilerbau für die Common Language Run-Time Compilerbau für die Common Language Run-Time Syntaxanalyse 2 Grammatikgetriebener Compilerbau Grammatik Teil der Sprachdefinition Grammatik liefert Liste der Tokenklassen Grammatik hilft bei Strukturierung

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

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

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

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

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

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

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

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

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

Prof. Dr. Wolfgang Schramm. Vorname:... Matrikel-Nr.:... Unterschrift:...

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

Mehr

Ergänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1].

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

Mehr

Kontextfreie Sprachen Kontextfreie Sprachen und Grammatiken. Satzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft

Kontextfreie Sprachen Kontextfreie Sprachen und Grammatiken. Satzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft und Grammatiken (Folie 119, eite 202 im kript) atzformen sind die Wörter aus (N T ). Notation: Wir verwenden oft a, b, c,... für Terminalsymbole A, B, C,... für Nonterminale u, v, w,... für Terminalwörter

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

Definition Compiler. Bekannte Compiler

Definition Compiler. Bekannte Compiler Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung

Mehr

Parsing regulärer Ausdrücke. Karin Haenelt

Parsing 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

Mehr

Übungspaket 9 Logische Ausdrücke

Übungspaket 9 Logische Ausdrücke Übungspaket 9 Logische Ausdrücke Übungsziele: Skript: 1. Umgang mit logischen Vergleichs- und Verknüpfungsoperatoren 2. Bilden einfacher und komplexer logischer Ausdrücke Kapitel: 22 Semester: Wintersemester

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

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 11. Vorlesung 14.06.2017 1 Schleifen 2 do...while do block while ( bedingung ); block: eine Anweisung oder Anweisungen in { block bed JA NEIN 3 while while ( bedingung ) block

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

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

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2016 20.04.2016 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc

Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc Fachhochschule Köln Cologne University of Applied Sciences Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc Jan Bollenbacher 11087107 Studiengang: Master Technische Informatik 15.06.2012 Prof. Dr.

Mehr

Einführung in die Informatik. Programming Languages

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

Mehr

9 Compilerbau-Werkzeuge

9 Compilerbau-Werkzeuge 9.1 Überblick In der Praxis des Compilerbaus werden heute vielfach Werkzeuge eingesetzt, die Routineaufgaben erleichtern sollen. In erster Linie ist dabei an die Punkte Generierung eines Scanners Generierung

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

Vom Algorithmus zum Programm

Vom Algorithmus zum Programm Vom Algorithmus zum Programm Lernziele: Vertiefen der Kenntnisse über den Entwurf von Algorithmen und deren Übertragung in ein C- Programm Aufgabe 1: Pythagoreisches Tripel a) Entwickeln Sie einen Algorithmus,

Mehr

C- Kurs 04 Anweisungen

C- Kurs 04 Anweisungen C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm

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

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002 1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben

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

Einführung in die Informatik. Programming Languages

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

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

yacc/ bison

yacc/ bison yacc/ bison Onlinedocumentation: http://dinosaur.compilertools.net/yacc/index.html http://epaperpress.com/lexandyacc/ Yet another compiler compiler Klassisches Unix Werkzeug, bison ist die GNU- Version

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2015 22.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen

Mehr

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

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

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

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

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Institut für Informatik Sommersemester 2007 B. Beckert Grundlagen d. Theoretischen Informatik:

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

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

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Reguläre Ausdrücke als Suchmuster für grep

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Reguläre Ausdrücke als Suchmuster für grep Dank Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Diese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen

Mehr

Anwenundg regulärer Sprachen und endlicher Automaten

Anwenundg 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

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

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 8. Vorlesung 25.05.2016 1 Ausdrücke "Befehle", die ein Ergebnis liefern 3 + 4 sin(x) x < 10 getchar() Ausdrücke können Teil eines anderen Ausdrucks sein x = sin( x + y ) Auswertung:

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

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

Kontextfreie Sprachen

Kontextfreie Sprachen Kontextfreie Sprachen Bedeutung: Programmiersprachen (Compilerbau) Syntaxbäume Chomsky-Normalform effiziente Lösung des Wortproblems (CYK-Algorithmus) Grenzen kontextfreier Sprachen (Pumping Lemma) Charakterisierung

Mehr

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

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

Sprachen und Programmiersprachen

Sprachen und Programmiersprachen Sprachen und Programmiersprachen Natürliche Sprachen versus Programmiersprachen / Spezifikationssprachen Syntax legt die grammatikalische Korrektheit fest. Semantik legt die Bedeutung von syntaktisch korrekten

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

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

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Grundlagen der Theoretischen Informatik

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

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

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 (IV) 31.05.2017 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie

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

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

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 4 Reguläre Ausdrücke Webseite zur Vorlesung http://ls11-www.cs.tu-dortmund.de/people/rahmann/teaching/ss2008/algorithmenaufsequenzen

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

Der Parsergenerator BTRACC2

Der Parsergenerator BTRACC2 Der Parsergenerator BTRACC2 Uwe Erdmenger pro et con Innovative Informatikanwendungen GmbH 11. Workshop Software-Reengineering 04.-06. 06. Mai 2009, Bad Honnef Eigenschaften von Legacy-Quellcode Sprachen

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni HA-Lösung. TA-Lösung

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni HA-Lösung. TA-Lösung Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni 2016 HA-Lösung TA-Lösung Einführung in die theoretische Informatik Aufgabenblatt 9 Beachten Sie: Soweit

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Informatik IC2. Balazs Simon

Informatik IC2. Balazs Simon Informatik IC2 Balazs Simon Inhaltsverzeichnis 1 Contextfreie Sprachen 3 1.1 Ableitungsbaum..................................... 3 1.2 Schönheit........................................ 4 1.3 Normalformen......................................

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 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

Mehr

Kontextfreie Sprachen

Kontextfreie Sprachen Kontextfreie Sprachen besitzen große Bedeutung im Compilerbau Chomsky-Normalform effiziente Lösung des Wortproblems (CYK-Algorithmus) Grenzen kontextfreier Sprachen (Pumping Lemma) Charakterisierung durch

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

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Einführung in die Programmiersprache C Teil 2 Ein- und Ausgabe in C-Programmen Prof. Dr.-Ing. Thomas Wiedemann Fachgebiet Informatik / Mathematik Überblick zur Vorlesung Ein-

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation

Mehr

Inhalt. VU SWP - Syntax. Sprachen. Strukturbeschreibung. Beispiel. Grammatik. Produktionen Sprachhierarchie Parsing Anmerkungen zum Sprachdesign

Inhalt. VU SWP - Syntax. Sprachen. Strukturbeschreibung. Beispiel. Grammatik. Produktionen Sprachhierarchie Parsing Anmerkungen zum Sprachdesign Inhalt VU SWP - Syntax Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Produktionen Sprachhierarchie Parsing Anmerkungen zum Sprachdesign Syntax 2 Sprachen Strukturbeschreibung Struktur

Mehr

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8

Mehr