Einblick in formale Sprachen und Automaten

Größe: px
Ab Seite anzeigen:

Download "Einblick in formale Sprachen und Automaten"

Transkript

1 Otto Thiele Einblick in formale Sprachen und Automaten Professor Dr Ulrich Hedtstück 1 ist Professor an der Fachhochschule Konstanz Er hat die Theorie der formalen Sprachen und Automaten, "einen schon für Universitätsstudenten oft zu abstrakten, schwierigen und häufig unbeliebten Stoff", für Fachhochschulstudenten praxisorientiert aufbereitet und vermittelt den Studenten 2 möglichst solche Inhalte, die "konstruktiv mit anschaulichen Algorithmen erklärt werden können" 3 Ein solches Vorgehen ist insbesondere erforderlich, wenn Lehrer im Informatikunterricht der gymnasialen Oberstufe den Schülern einen Einblick in die Theorie der formalen Sprachen und Automaten vermitteln wollen Die Lehrer müssen davon ausgehen, dass die Mehrzahl der Schüler nicht Informatik studieren wird Aus diesem Grund werden in dem Skript ausgewählte fachtheoretische Inhalte propädeutisch 4 und, mit Bezug auf Professor Dr Ulrich Hedtstück, praxisorientiert für den Informatikunterricht aufbereitet Im Unterricht zum Themenbereich "Einblick in formale Sprachen und Automaten" sollen die Schüler Antworten auf die Frage finden, weshalb sie mit Computern kommunizieren können Das folgende Beispiel zeigt, wie kompliziert diese Kommunikation in natürlichen Sprachen sein kann "Nobody designs a natural language by themselves, unless their name happens to be Tolkien" 5 Diesen Satz hat ein Übersetzungsprogramm folgendermaßen in die deutsche Sprache übertragen: "Niemand entwirft eine natürliche Sprache durch selbst, es sei denn ihr Name geschieht, Tolkien zu sein" Ebenso verwirrend sind Sätze der natürlichen Sprachen, die syntaktisch und semantisch mehrdeutig sind, wie beispielsweise "Diese Nachricht stimmt sicher" 6 oder "Öffne das Fach mit dem Schlüssel" 7 Im ersten Satz kann sich "stimmt" sowohl auf "diese Nachricht" als auch auf "sicher" beziehen Im zweiten Satz kann sich "öffne" sowohl auf "das Fach" als auch auf "mit dem Schlüssel" beziehen Wäre beispielsweise der zweite Satz eine Anweisung an einen Roboter, dann könnte dieser sie sicherlich nicht ausführen Ein Mensch wäre möglicherweise noch in der Lage, in der konkreten Situation das Richtige zu tun Aufgabe: Nennen Sie weitere Sätze der deutschen Sprache, die syntaktisch und semantisch mehrdeutig sind Wegen der syntaktischen sowie semantischen Mehrdeutigkeiten und der Komplexität sind die natürlichen Sprachen "nicht für die Beschreibung von Aufgaben geeignet, die ein Computer lösen soll" 8 Dazu eignen sich Programmiersprachen viel besser, denn Programmiersprachen sind formale Sprachen wwwinfh-konstanzde/de/fachbereich/kontakt/persseiten_nbc/hdstueckhtml Mit Student, Schüler oder Lehrer ist beiderlei Geschlecht gemeint Hedtstück, U (2000): Einführung in die Theoretische Informatik Formale Sprachen und Automatentheorie Oldenburg Verlag, München, S viii "Einführung in die Vorkenntnisse, die zu einem Studium gehören" (Duden, Propädeutik) wwwwallorg/~larry/naturalhtml wwwifiunizhch/cl/volk/syntaxvorl/vorl_10ambightml#klassifikation Vgl Hedtstück, U (2000): Einführung in die Theoretische Informatik Formale Sprachen und Automatentheorie Oldenburg Verlag, München, S 9 Ebenda, S 9 Seite 1

2 Ausgangspunkt sind die natürlichen Sprachen Trotz der genannten Nachteile der natürlichen Sprachen gibt es einen Zusammenhang zwischen den natürlichen und formalen Sprachen Die formalen Sprachen sind Modelle der natürlichen Sprachen In einem Unterrichtsabschnitt "Natürliche Sprachen" können die Schüler ihre Erfahrungen beim Lernen der Muttersprache oder einer Fremdsprache einbringen Im Fremdsprachenunterricht müssen die Schüler Vokabeln lernen Das Vokabular bildet ihren Wortschatz Weiterhin müssen die Schüler die Grammatik der Fremdsprache erlernen Die Grammatik ist ein Regelwerk 9 Mit Hilfe der Grammatik bilden die Schüler aus den ihnen bekannten Vokabeln korrekte Sätze in der Fremdsprache Dazu ein Beispiel 10 : Die Grammatik der englischen Sprache hat unter anderem die folgenden Regeln zum Bilden von Sätzen: Satz Subjekt Prädikat Objekt Prädikat Vollverb Prädikat Hilfsverb Vollverb Die nachfolgenden Regeln sind dem Wörterbuch 11 der englischen Sprache (Dictionary) entnommen Das Wörterbuch legt unter anderem die Rechtschreibung der Wörter fest Subjekt "schoolgirls" Subjekt "schoolboys Hilfsverb "can" Vollverb "use" Vollverb "handle" Objekt "computers" Objekt "calculators" Dictionary Mit den Vokabeln und der Grammatik können Sätze der englischen Sprache gebildet werden So beispielsweise der folgende Satz: Satz Subjekt Prädikat Objekt Hilfsverb Vollverb schoolgirls can use computers Abbildung 1: syntaktische Struktur (Aufbau) eines Satzes 9 Die Grammatik einer Sprache besteht aus Regeln, nach denen die Sätze der Sprache gebildet werden 10 Vgl Freistaat Thüringen (2004): Abiturprüfungen 2004 Leistungsfach Informatik (Haupttermin) Kultusministerium, S 3 11 In der deutschen Sprache wird die Rechtschreibung der Wörter durch den Duden festgeschrieben Seite 2

3 In der Abbildung 1 ist die syntaktische Struktur (der Aufbau) des Satzes als Baum 12 dargestellt Aufgabe: a) Schreiben Sie alle Sätze auf, die sich mit Hilfe der gegebenen Grammatik bilden lassen b) Entwerfen und implementieren Sie ein Programm, das prüft, ob ein eingegebener Satz syntaktisch korrekt ist 13 Jeder englische Satz, der beim Lösen der Teilaufgabe a) gebildet wird, hat eine Bedeutung (Semantik) Die Bedeutung des Satzes "schoolgirls can handle computers" besteht in der Aussage, dass Schülerinnen mit Computern umgehen können Ob die Aussage wahr ist, kann dem Satz nicht entnommen werden Syntax und Semantik sind eng miteinander verbunden, denn es macht nur einen Sinn, wenn Sätze gebildet werden, die für den Zuhörer oder Leser auch Bedeutung haben Die Lösung der Teilaufgabe b) vermittelt den Schülern einen Ausblick auf die Verarbeitung natürlicher Sprachen durch Computer Die Überprüfung, ob eine Folge Zeichen ein syntaktisch korrekter Satz ist, erfolgt mit Hilfe zweier Algorithmen: - Der Scanner ist ein Algorithmus, der die Folge von Zeichen in Token 14 zerlegt und prüft, ob die Token Wörter der Sprache sind - Der Parser ist ein Algorithmus, der prüft, ob mit den Wörtern syntaktisch korrekte Sätze gebildet worden sind Praktische Beispiele für die Verarbeitung von natürlichen Sprachen auf dem Computer sind Frage-Antwort-Systeme Der Benutzer eines Frage-Antwort-Systems kann seine Fragen in einer natürlichen Sprache formulieren und bekommt die Antworten in dieser Sprache Im WWW sind eine Vielzahl von Informationen zu natürlichsprachigen Frage-Antwort- Systemen 15 zu finden Außerdem kann eine deutschsprachige Version von Eliza 16 aus dem WWW geladen werden Aufgabe: Lesen Sie das Kapitel 7 "Der Computer und die natürliche Sprache" des Buches "Die Macht der Computer und die Ohnmacht der Vernunft" 17 von Joseph Weizenbaum 12 Vgl Hedtstück, U (2000): Einführung in die Theoretische Informatik Formale Sprachen und Automatentheorie Oldenburg Verlag, München, S Diese Teilaufgabe sollte erst gelöst werden, wenn der Kellerautomat behandelt wurde 14 Beispielsweise wird der Satz "Der Satz ist korrekt" in die Token "Der", "Satz", "ist", "korrekt" und "" erlegt 15 wwwcluni-heidelbergde/kurs/ss03/qanda/qa_linksshtml 16 homeph-freiburgde/deissler/informat_i-02-03htm 17 Weizenbaum, J (1977): Die Macht der Computer und die Ohnmacht der Vernunft Suhrkamp Verlag, Frankfurt am Main, S Seite 3

4 Zusammenfassung: - In einer natürlichen Sprache werden aus Wörtern mit Hilfe einer Grammatik Sätze gebildet, jedoch nicht nur - Die Rechtschreibung der Wörter wird durch das Wörterbuch der jeweiligen Sprache 18 festgelegt - Natürliche Sprachen sind "lebende Sprachen" und unterliegen als solche fortwährenden Veränderungen 19 - Der Verarbeitung von natürlichen Sprachen durch Computer kommt eine immer größere Bedeutung zu, so beispielsweise bei Frage-Antwort-Systemen und Übersetzungsprogrammen - Der Scanner und Parser sind Algorithmen zum Prüfen, ob Zeichenfolgen syntaktisch korrekt gebildete Sätze einer Sprache sind Im Unterrichtsabschnitt "Natürliche Sprachen" sollen die Schüler über die Grundlagen ihrer Muttersprache und der erlernten Fremdsprachen nachdenken und den Bezug zur Informatik erkennen Es empfiehlt sich, in diesen Unterrichtsabschnitt einen Deutsch- oder Fremdsprachenlehrer einzubeziehen Aufgabe: Gegeben sind Grammatikregeln der deutschen Sprache Satz Subjekt Prädikat Objekt Prädikat Vollverb Subjekt Subjekt Objekt Vollverb Vollverb Vollverb "Katzen" "Kater" "Mäuse" "fressen" "jagen" "quälen" Duden a) Entwerfen und implementieren Sie ein Programm, das alle Sätze mit Hilfe der gegebenen Grammatikregeln bildet und ausgibt a) Entwerfen und implementieren Sie ein Programm, das wie ein Scanner und Parser prüft, ob eine Folge von Zeichen ein korrekter Satz ist 18 In der deutschen Sprache ist das Wörterbuch der Duden, benannt nach Konrad Duden ( ) Konrad Duden war von 1869 bis 1876 Gymnasialdirektor im Thüringer Schleiz (wwwthschulede/sok/kdg/) 19 Thomas Stoll gab diesen Hinweis Als Beispiel nannte er die Rechtschreiberform im deutschsprachigen Raum Danke Seite 4

5 Formale Sprachen sind Modelle der natürlichen Sprachen Weshalb sollen sich die Schüler mit formalen Sprachen beschäftigen? Weil formale Sprachen die Grundlage der Programmiersprachen sind Die Schüler kennen aus dem Informatikunterricht eine Programmiersprache Des Weiteren haben sie Erfahrungen im Umgang mit dieser Programmiersprache In einer formalen Sprache werden die Vokabeln Terminalsymbole genannt Die mit Hilfe der Grammatik gebildeten Folgen aus Terminalsymbolen werden Wörter 20 der Sprache genannt Alle Wörter, die mit der Grammatik gebildet werden können, bilden die Sprache Eine Sprache heißt formal, wenn alle ihre Wörter mit Hilfe einer Grammatik 21 gebildet werden Beispiel: Die formale Sprache G ist durch die folgende Grammatik definiert: Ganzzahl Vorzeichen RestG Ganzzahl Ziffer RestG Ganzzahl Ziffer RestG Ziffer RestG RestG Ziffer Vorzeichen "+" Vorzeichen "-" Ziffer "0" Ziffer "1" Ziffer "2" Ziffer "3" Ziffer "4" Ziffer "5" Ziffer "6" Ziffer "7" Ziffer "8" Ziffer "9" Terminalsymbole Das Vokabular der Sprache G besteht aus den Terminalsymbolen 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + und - Ganzzahl, RestG, Vorzeichen und Ziffer sind Nichtterminalsymbole, die zum Bilden von Wörtern benötigt werden Das Nichtterminalsymbol Ganzzahl ist das Startsymbol Mit dem Startsymbol beginnt stets das Bilden eines Wortes Ganzzahl Vorzeichen RestG + RestG + Ziffer +3 Im Verlauf des Bildens eines Wortes müssen die Nichtterminalsymbole durch Terminalsymbole ersetzt werden Wichtig ist, dass in jedem Wort der Sprache keine Nichtterminalsymbole mehr vorkommen dürfen, das heißt, jedes Wort darf nur noch aus Terminalsymbolen bestehen 20 In einigen Abhandlungen wird weiterhin von Sätzen gesprochen, nicht von Wörtern Aus diesem Grund muss der Lehrer eine Entscheidung treffen, welchen Begriff er im weiteren Verlauf des Unterrichts verwendet 21 Mit Hilfe der Grammatik werden Wörter gebildet (Verfahren), die einen ganz bestimmten Aufbau haben (Struktur) Der Aufbau der Wörter (Struktur) wird Syntax genannt Heike Eisenberg gab den Hinweis, die Grammatik mit Hilfe von Verfahren zu erklären Danke Seite 5

6 Aufgaben: a) Bilden Sie fünf verschiedene, auch längere, Wörter der Sprache G Stellen Sie die syntaktische Struktur (den Aufbau) jedes Wortes als Baum dar b) Entwerfen und implementieren Sie ein Programm, das erkennt, ob ein eingegebenes Wort syntaktisch korrekt ist 22 Ein weiteres Wort der Sprache ist -809 Die Abbildung 2 veranschaulicht grafisch, wie dieses Wort gebildet wird Ganzzahl Vorzeichen RestG Ziffer RestG - 8 Ziffer RestG 0 Ziffer 9 Abbildung 2: syntaktische Struktur (Aufbau) des Wortes -809 Das Wort -809 hat eine Bedeutung (Semantik) Es ist die Darstellung einer negativen ganzen Zahl Zusammenfassung: - Die formalen Sprachen sind Modelle 23 der natürlichen Sprachen - Eine formale Sprache ist eine Sprache, deren Syntax 24 durch eine Grammatik definiert ist Das heißt, die Grammatik bestimmt, welche Wörter zur Sprache gehören - Die Grammatik 25 einer Sprache wird durch ein Viertupel (V,T,P,S) beschrieben: T ist die Menge der Terminalsymbole, V ist die Menge der Nichtterminalsymbole, P ist die Menge der Produktionsregeln und S ist das Startsymbol 22 Diese Teilaufgabe sollte erst gelöst werden, wenn der endliche Automat behandelt wurde 23 Ein Modell spiegelt die reale Welt wider 24 Unter Syntax wird der Aufbau der Wörter verstanden 25 Der Begriff Grammatik sollte den Schülern anschaulich anhand praktischer Beispiele vermittelt werden Seite 6

7 Programmiersprachen sind spezielle formale Sprachen Programmiersprachen sind formale Sprachen Die meisten Programmiersprachen können mit Hilfe von kontextfreien Grammatiken definiert werden Eine Grammatik ist kontextfrei, wenn auf der linken Seite jeder Regel nur ein einziges Nichtterminalsymbol steht Auf der rechten Seite jeder Regel stehen Nichtterminalsymbole, Terminalsymbole oder Nichtterminalsymbole und Terminalsymbole 26 Die folgende kontextfreie Grammatik (1) definiert eine ganz einfache Programmiersprache 27 PS Die Grammatik ist in der Backus-Naur-Form 28 (BNF) notiert: Programm = "PROGRAM" Bezeichner "" Block "" Block = "VAR" Bezeichner ":" "NAT" "" "BEGIN" Anweisung "" "" Anweisung = Bezeichner ":=" Term Term = natzahl Die Terminalsymbole sind PROGRAM, VAR, NAT, BEGIN, sowie der Punkt, der Doppelpunkt, die Zeichen := und das Semikolon Man erkennt, dass Terminalsymbole auch aus mehreren Zeichen bestehen können Die Nichtterminalsymbole sind Programm, Bezeichner, Block, Anweisung, Term und natzahl Das Startsymbol zum Bilden eines Wortes ist das Nichtterminalsymbol Programm In allen vier Regeln ist das Ersetzen des Nichtterminalsymbols auf der linken Seite nicht von einem Kontext 29 des Nichtterminalsymbols abhängig So kann beispielsweise das Nichtterminalsymbol Term der vierten Regel sofort durch das Nichtterminalsymbol natzahl ersetzt werden Um ein Wort der Programmiersprache PS bilden zu können, wird die Grammatik (2) zum Bilden von Bezeichnern benötigt Bezeichner = "a" RestB Bezeichner = "b" RestB RestB = "a" RestB RestB = "b" RestB RestB = "1" RestB = "2" Vergleicht man die beiden Grammatiken miteinander, so wird ersichtlich, dass einerseits die Grammatiken (1) und (2) kontextfrei sind Andererseits sind die rechten Seiten der Regeln der Grammatik (2) anders aufgebaut als die rechten Seiten der Regeln der Grammatik (1) Auf der rechten Seite jeder Regel der Grammatik (2) steht entweder ein Terminalsymbol gefolgt von einem Nichtterminalsymbol oder nur ein Terminalsymbol 30 Das heißt, die Grammatik (2) ist zusätzlich regulär Die Terminalsymbole sind a, b, 1 und 2 Die Nichtterminalsymbole sind Bezeichner und RestB Das Startsymbol zum Bilden eines Wortes ist das Nichtterminalsymbol Bezeichner Die Regeln RestB sind rekursiv Die Regeln haben die Form A = δ 27 Die Programmiersprache PS hat nur exemplarischen Charakter 28 Die Backus-Nauer-Form (BNF) ist eine Beschreibungsform für kontextfreie Grammatiken Sie wurde nach John W Backus und Peter Naur benannt 29 "umgebenden Text" (Duden, Kontext) 30 Die Regeln haben die Form A = a B (rechtslinear) und A = a 31 RestB = "1" bzw RestB = "2" ist der Rekursionsabbruch und RestB = "a" RestB bzw RestB = "b" RestB ist der Rekursionsschritt Seite 7

8 Mit Hilfe der regulären Grammatik (2) werden die Bezeichner von links nach rechts gebildet, beispielsweise b1 Die Bedeutung dieses Wortes besteht darin, dass es der Name eines Programms oder einer Variablen sein kann Bezeichner b RestB 1 Abbildung 3: syntaktische Struktur (Aufbau) eines Bezeichners Die Grammatik (2) kann in der Backus-Naur-Form (BNF) verkürzt geschrieben werden: Bezeichner = ( "a" "b" ) RestB RestB = "1" "2" ( "a" "b" ) RestB Aufgabe: Bilden Sie fünf verschiedene Bezeichner unterschiedlicher Länge Stellen Sie die syntaktische Struktur (den Wortaufbau) jedes Bezeichners grafisch als Baum dar Die rekursiven Regeln können vermieden werden, wenn die Grammatik (2) in die Erweiterte Backus-Naur-Form 32 (EBNF) übertragen wird Bezeichner = ( "a" "b" ) { "a" "b" } ( "1" "2" ) 33 In der Abbildung 4 ist die Erweiterte Backus-Nauer-Form (EBNF) grafisch dargestellt Die grafische Darstellung wird Syntaxdiagramm genannt Bezeichner a 1 b a b 2 Abbildung 4: Syntaxdiagramm Im Syntaxdiagramm werden die Terminalsymbole durch Kreise und das Nichtterminalsymbol durch ein Rechteck dargestellt 32 Die BNF wurde von Niklaus Wirth erweitert Vgl Wirth, N (1984): Compilerbau Eine Einführung Teubner, Stuttgart, S In der EBNF bedeutet { x }, dass x keinmal, einmal oder mehrmals auftreten kann Seite 8

9 Aufgabe: Gegeben ist eine Grammatik, welche die Sprache der Dualdarstellung natürlicher Zahlen ohne führende Nullen definiert: Dualzahl = "1" RestD RestD = "0" RestD RestD = "1" RestD RestD = "0" RestD = "1" a) Geben Sie die Terminalsymbole an b) Geben Sie die Nichtterminalsymbole an c) Zeigen Sie, dass die Grammatik kontextfrei und regulär ist d) Bilden Sie mit Hilfe der Grammatik fünf verschiedene Wörter e) Überführen Sie die Grammatik in die Backus-Naur-Form (BNF) f) Überführen Sie die Grammatik in die Erweiterte Backus-Naur-Form (EBNF) g) Stellen Sie die Erweiterte Backus-Naur-Form in einem Syntaxdiagramm dar Um ein Quellprogramm in der Programmiersprache PS schreiben 34 zu können, wird des Weiteren die Grammatik (3) zum Bilden von natzahlen benötigt: natzahl = "0" natzahl = "1" natzahl = "9" natzahl = "0" natzahl natzahl = "1" natzahl natzahl = "9" natzahl Das Startsymbol ist natzahl Beispiel, wie ein Wort gebildet wird: natzahl 1 natzahl 18 natzahl 183 natzahl 1835 Die Grammatik (3) kann in der Backus-Naur-Form (BNF) und in der Erweiterten Backus-Naur-Form (EBNF) verkürzt geschrieben werden: BNF: natzahl = "0" "1" "9" ( "0" "1" "9" ) natzahl EBNF: natzahl = ( "0" "1" "9" ) { "0" "1" "9" } Aufgabe: a) Zeigen Sie, dass die Grammatik (3) kontextfrei und regulär ist b) Bilden Sie fünf verschiedene Wörter mit Hilfe der Grammatik (3) und stellen Sie den syntaktischen Aufbau der Wörter grafisch dar c) Stellen Sie die Erweiterte Backus-Naur-Form der Grammatik (3) in einem Syntaxdiagramm dar 34 Jedes korrekte Quellprogramm ist ein Wort der Programmiersprache PS Seite 9

10 Zusammenfassung: - Eine kontextfreie Grammatik hat nur Regeln, in denen auf der linken Seite jeder Regel genau ein Nichtterminalsymbol steht - Eine reguläre Grammatik ist kontextfrei und hat nur solche Regeln, in denen auf der rechten Seite jeder Regel entweder ein Terminalsymbol und danach ein Nichtterminalsymbol stehen oder nur ein Terminalsymbol steht 35 - Die Backus-Naur-Form (BNF) und die Erweiterte Backus-Naur-Form (EBNF) sind Beschreibungsformen für kontextfreie Grammatiken Syntaxdiagramme dienen der grafischen Darstellung der BNF und EBNF Aufgabe: Gegeben ist die folgende Grammatik: identifier = "a" "z" identifier = identifier ( "a" "z" ) identifier ("0" "9" ) Das Startsymbol ist identifier a) Geben Sie die Anzahl der Terminalsymbole an b) Bilden Sie mit Hilfe der Grammatik ein Wort, das aus vier Buchstaben gefolgt von zwei Ziffern besteht c) Stellen Sie die syntaktische Struktur (den Wortaufbau) des von Ihnen gebildeten Wortes in Form eines Baumes dar d) Übertragen Sie die Grammatik in die Erweiterte Backus-Naur-Form (EBNF) e) Stellen Sie die Regeln der Grammatik durch Syntaxdiagramme dar f) Diese Grammatik ist kontextfrei und regulär Erweitern Sie die oben gegebene Erklärung des Begriffs reguläre Grammatik 35 Die reguläre Grammatik ist rechtslinear Es gibt auch reguläre Grammatiken, die linkslinear sind natzahl = "0" "1" "9" natzahl = natzahl ( "0" "1" "9" ) Seite 10

11 Formale Sprachen und Automaten "Die Aufgabe eines Übersetzers oder Compilers ist normalerweise nicht die Erzeugung 36 oder Herleitung, sondern die Erkennung eines" Wortes "und seiner Struktur Dies bedeutet, dass die Schritte der Erzeugung 37 beim Lesen eines" Wortes "als Schritte der Erkennung nachvollzogen werden müssen" 38 Quellprogramm Tokenfolge Ableitungsbaum Zielprogramm optimiertes Zielprogramm Scanner: lexikalische Analyse Parser: syntaktische Analyse semantische Analyse/Codegenerierung Codeoptimierung Abbildung 5: Phasen des Compilierens, wobei hier nur die 1 und 2 Phase betrachtet werden Die Aufgabe eines Compilers besteht darin, das Quellprogramm in ein Zielprogramm zu übersetzen Dazu muss der Compiler die syntaktische und semantische Korrektheit des Quellprogramms überprüfen Das Zitat aus Niklaus Wirts "Compilerbau" wird am Beispiel eines Quellprogramms 39 erläutert, das in der einfachen Programmiersprache 40 PS geschrieben wurde PROGRAM ab1 VAR a2 : NAT BEGIN a2 := Bildung eines Wortes 37 Bildung eines Wortes 38 Wirth, N (1984): Compilerbau Eine Einführung Teubner, Stuttgart, S Vgl Sommer, M (1987): Informatik eine PC-orientierte Einführung McGraw-Hill, Hamburg, S Vgl Skript, S 7 Seite 11

12 Die Aufgabe des PS-Compilers besteht darin, dieses Quellprogramm zu übersetzen Dazu muss der Compiler zuerst überprüfen, ob das Quellprogramm syntaktisch korrekt ist Die Algorithmen, welche die syntaktische Überprüfung durchführen, sind der Scanner und Parser Der Scanner zerlegt das PS-Quellprogramm in Token Die Token des gegebenen Quellprogramms sind in der folgenden Tabelle aufgelistet: Token Bedeutung PROGRAM Schlüsselwort ab2 Bezeichner Semikolon VAR Schlüsselwort a1 Bezeichner : Doppelpunkt NAT Datentyp 41 Semikolon BEGIN Schlüsselwort a1 Bezeichner := Wertzuweisung 314 nat Zahl Semikolon Schlüsselwort Punkt Aufgabe: Entwerfen und implementieren Sie ein Programm, das wie ein Scanner eine Folge von Zeichen in eine Folge von Token zerlegt Des Weiteren führt der Scanner eine lexikalische Analyse 42 durch, das heißt, der Scanner überprüft jedes Token auf syntaktische Korrektheit Wie das geschieht, wird exemplarisch an den Token gezeigt, die Bezeichner sind Mit Hilfe der kontextfreien regulären Grammatik (2) wurde der Bezeichner 43 ab2 Terminalsymbol für Terminalsymbol von links nach rechts gebildet und in das PS- Quellprogramm geschrieben Der Bezeichner ab2 ist der Name des PS-Programms Ebenso wurde der Bezeichner a1 gebildet Er ist der Name einer Variablen 41 NAT ist der Datentyp für natzahlen 42 Alle Token werden geprüft, ob sie der "Lexik" der Sprache PS entsprechen Beispielsweise wird geprüft, ob die Schreibweise des Tokens PROGRAM mit der des Terminalsymbols PROGRAM übereinstimmt Dies ist vergleichbar mit der Prüfung auf korrekte Rechtschreibung 43 Bezeichner = "a" RestB Bezeichner = "b" RestB RestB = "a" RestB RestB = "b" RestB RestB = "1" RestB = "2" Seite 12

13 Bezeichner a RestB b RestB 0 Abbildung 6: ein Bezeichner wird von links nach rechts gebildet Der Scanner kann jedes durch die reguläre Grammatik (2) gebildete Wort erkennen Dazu liest der Scanner das entsprechende Token (zb ab2) Zeichen für Zeichen von links nach rechts Er erkennt einen Bezeichner, wenn im Token, bis auf das letzte Zeichen, die Terminalsymbole a und b stehen und das letzte Zeichen entweder das Terminalsymbol 0 oder 1 ist Ansonsten ist das Token kein Bezeichner Aufgabe: Entwerfen und implementieren Sie ein Programm, das wie ein Scanner prüft, ob eine Folge von Zeichen (ein Token) ein Bezeichner ist Der Scanner lässt sich in Prolog wie folgt implementieren: buchstabe(a) buchstabe(b) ziffer(0) ziffer(1) bezeichner([b R]) :- R\==[],buchstabe(B),restbz(R) restbz([b R]) :- R\==[],buchstabe(B),restbz(R) restbz([z []]) :- ziffer(z) Eine Anfrage an das Programm könnte lauten:?- bezeichner([a,b,2]) Der Scanner realisiert zum Erkennen der Worte, die mit der regulären Grammatik (2) erzeugt wurden, einen endlichen Automaten In der Abbildung 7 ist der Aufbau des endlichen Automaten dargestellt Das Eingabeband ist beidseitig unendlich lang 44 Auf dem Eingabeband steht ein Eingabewort, beispielsweise ab2 Der endliche Automat befindet sich am Anfang im Zustand Bezeichner Der Lesekopf steht auf dem ersten Zeichen des Eingabewortes, im Beispiel auf a 44 Ein endlicher Automat ist abstrakt Der Scanner kann nur ein endlich langes Band realisieren Seite 13

14 Eingabeband a b 2 Lesekopf Steuereinheit und Zustandsspeicher a b 1 2 Bezeichner RestB RestB Fehler Fehler RestB RestB RestB Stopp Stopp Programm Abbildung 7: Aufbau eines endlichen Automaten Aufgabe: Erklären Sie den Zusammenhang zwischen Ihrem Programm und der Darstellung in Abbildung 7 In der Abbildung 8 ist der Zustandsgraph des endlichen Automaten dargestellt Der Zustandsgraph veranschaulicht die Arbeitsweise des endlichen Automaten a, b Start Bezeichner a, b RestB 1, 2 Stopp a, b a, b, 0, 1 Fehler Abbildung 8: Zustandsgraph des endlichen Automaten Die Arbeitweise des endlichen Automaten wird am Beispiel des Eingabewortes ab2 erläutert Der Lesekopf liest im Anfangszustand Bezeichner das Zeichen a und geht laut Programm in den Zustand RestB Der Lesekopf bewegt sich im Eingabewort um ein Zeichen nach rechts, liest im Zustand RestB das Zeichen b und bleibt laut Programm im Zustand RestB Der Lesekopf bewegt sich im Eingabewort um ein Zeichen nach rechts, liest im Zustand RestB das Zeichen 2 und geht laut Programm in den Zustand Stopp Da der Lesekopf auf dem letzten Zeichen des Eingabewortes steht und sich der endliche Automat im Zustand Stopp befindet, ist das Eingabewort ab2 als Bezeichner erkannt worden Seite 14

15 Das Token ist kein Bezeichner, wenn: - es Zeichen enthält, die keine Terminalsymbole von Bezeichner sind - der Lesekopf nicht auf dem letzten Zeichen des Tokens steht aber der endliche Automat in den Zustand Stopp übergeht - das Terminalsymbol 1 oder 2 nicht als letztes Zeichen im Token steht In der Abbildung 8 ist zu erkennen, dass der endliche Automat zu jedem Zeitpunkt seiner Ausführung höchstens eine Möglichkeit der Fortführung hat Ein endlicher Automat mit einem solchen Programm und Zustandsgraph wird deterministischer endlicher Automat genannt Aufgabe: Entwerfen und implementieren Sie ein Programm, das wie ein Scanner prüft, ob eine Folge von Zeichen (ein Token) ein natzahl 45 ist Mit der Grammatik (2) können nur Bezeichner gebildet werden, die aus den Buchstaben a sowie b bestehen und mit der Ziffer 1 oder 2 enden Mit der folgenden Grammatik können Bezeichner gebildet werden, die aus einem Buchstaben gefolgt von Buchstaben und Ziffern bestehen Diese Grammatik ist wie die Grammatiken (2) und (3) kontextfrei und regulär Die Grammatik (4) lautet: BezeichnerNeu = "A" "B" "x" "y" "z" BezeichnerNeu = ("A" "B" "x" "y" "z" ) RestBN RestBN = ("A" "B" "x" "y" "z" ) RestBN RestBN = ("0" "1" "9" ) RestBN RestBN = "A" "B" "x" "y" "z" RestBN = "0" "1" "9" Zum Erkennen von Bezeichnern, die mit der Grammatik (4) gebildet werden, realisiert der Scanner ebenfalls einen endlichen Automaten Am Aufbau des endlichen Automaten verändert sich (bis auf das Programm 46 ) nichts gegenüber den vorhergehenden endlichen Automaten In der Abbildung 9 ist jedoch zu erkennen, dass dieser endliche Automat zu einem Zeitpunkt der Ausführung seines Programms zwei Möglichkeiten der Fortführung des Programms hat Ein solcher endlicher Automat ist ein nichtdeterministischer endlicher Automat 47 In der folgenden Tabelle ist das Programm des nichtdeterministischen endlichen Automaten dargestellt: BezeichnerNeu RestBN A RestBN/Stopp RestBN/Stopp RestBN/Stopp RestBN/Stopp z RestBN/Stopp RestBN/Stopp 0 Fehler RestBN/Stopp Fehler RestBN/Stopp 9 Fehler RestBN/Stopp 45 siehe Grammatik (3) 46 siehe Tabelle unten 47 Ein endlicher Automat, der zu bestimmten Zeitpunkten der Ausführung seines Programms mehrere Möglichkeiten der Fortführung des Programms hat, wird nichtdeterministischer endlicher Automat genannt Seite 15

16 Start Buchstabe BezeichnerNeu Fehler Buchstabe Buchstabe Ziffer RestBN Buchstabe Ziffer Buchstabe Stopp Buchstabe Ziffer Abbildung 9: Zustandsgraph des nichtdeterministischen endlichen Automaten Aufgabe: Entwerfen und implementieren Sie ein Programm, das wie ein Scanner prüft, ob eine Folge von Zeichen (ein Token) ein BezeichnerNeu ist Das in der Aufgabe geforderte Programm kann ebenfalls in Prolog implementiert werden buchstabe(a) buchstabe(a) buchstabe(z) ziffer(0) ziffer(9) bezeichnerneu([b R]) :- R\==[],buchstabe(B),restbn(R) bezeichnerneu([b []]) :- buchstabe(b) restbn([b R]) :- R\==[],buchstabe(B),restbn(R) restbn([z R]) :- R\==[],ziffer(Z),restbn(R) restbn([b []]) :- buchstabe(b) restbn([z []]) :- ziffer(z) Eine Anfrage an das Prolog-Programm könnte lauten:?- bezeichnerneu([a,1,b,2,c]) Der Vorteil von Prolog besteht darin, dass dieses System bereits über einen Backtracking-Algorithmus zur Suche aller Fortführungsmöglichkeiten der Ausführung des Programms endlichen Automaten verfügt Seite 16

17 Zusammenfassung: Ein Scanner ist eine Komponente des Compilers: - Er zerlegt das Quellprogramm in Token - Jede Klasse von Token ist eine reguläre Sprache Reguläre Sprachen werden von deterministischen bzw nichtdeterministischen Automaten erkannt - Ein Scanner ist die programmiertechnische Realisierung endlicher Automaten Der Scanner prüft, ob die Token syntaktisch korrekte Wörter der jeweiligen regulären Sprache sind Der Parser ist neben dem Scanner eine weitere Komponente eines Compilers Er prüft, ob das Quellprogramm syntaktisch korrekt ist Wie ein Parser arbeitet, wird an einem PS-Quellprogramms erläutert: PROGRAM ab2 VAR a1 : NATEGER BEGIN a1 := 314 Der Scanner hat das PS-Quellprogramm bereits in Token zerlegt und die syntaktische Korrektheit der Token ermittelt Tokennr Token # 1 PROGRAM # 2 ab2 # 3 # 4 VAR # 5 a1 # 6 : # 7 NAT # 8 # 9 BEGIN # 10 a1 # 11 := # # 13 # 14 # 15 Auf der Grundlage Grammatik (1) 48, die kontextfrei ist (nicht regulär) überprüft der Parser, ob die Folge von Token ein syntaktisch korrektes PS-Quellprogramm ist 48 Programm = "PROGRAM" Bezeichner "" Block "" Block = "VAR" Bezeichner ":" "NAT" "" "BEGIN" Anweisung "" "" Anweisung = Bezeichner ":=" Term Term = natzahl Das Startsymbol ist Programm Seite 17

18 Dazu arbeitet der Parser die Folge der Token in der Reihenfolge der Nummerierung, beginnend mit dem Token #1, ab Der Parser verweist am Anfang auf den Token #1 Die Überprüfung erfolgt zusätzlich mit einem Stack, der aus historischen Gründen Keller bzw Kellerspeicher genannt wird 49 Der Stack arbeitet nach dem LIFO Speicherprinzip 50 : a) Am Anfang steht nur das Startsymbol im Stack b) Steht ein Nichtterminalsymbol ganz oben im Stack, wird eine passende Regel der Grammatik gesucht Das Nichtterminalsymbol wird durch die rechte Seite der Regel ersetzt Dabei wird die rechte Seite der Regel von rechts nach links gelesen und in den Stack eingefügt c) Steht ein Terminalsymbol ganz oben im Stack und stimmt es mit dem aktuellen Token überein, dann wird das oberste Stackelement gelöscht und der Parser wechselt zum Token mit der nächsten Nummer d) Steht ein Terminalsymbol ganz oben im Stack und stimmt es nicht mit dem aktuellen Token überein, dann bricht der Parser die Arbeit ab Das Quellprogramm ist nicht syntaktisch korrekt e) Ist nach der Abarbeitung des letzten Token der Stack leer, ist das Quellprogramm syntaktisch korrekt Die Arbeitsweise des Parsers und seines Stacks (Kellers) zum Erkennen 51 eines PS- Quelltextes wird durch die Abbildungen 10 bis 33 veranschaulicht Jede Abbildung stellt die aktuelle Belegung des Stacks dar 52 In der Anfangssituation steht nur das Nichtterminalsymbol Programm im Stack Der Pfeil bedeutet, dass ein Element in den Stack eingefügt wird Der Pfeil bedeutet, dass ein Element aus dem Stack gelöscht wird Programm PROGRAM Bezeichner Block PROGRAM Bezeichner Block Abbildung 10 Abbildung 11 Abbildung Vgl Hedtstück, U (2000): Einführung in die Theoretische Informatik Formale Sprachen und Automatentheorie Oldenburg Verlag, München, S LIFO bedeutet last in first out 51 eines Wortes der Sprache PS 52 Die Arbeit des Stacks kann an einer Magnettafel veranschaulicht werden Die Kellerelemente sind beschriftete Karten, die mit Magneten an die Tafel geheftet werden können Seite 18

19 Bezeichner ab2 Block Block Block Abbildung 13 Abbildung 14 Abbildung 15 VAR Bezeichner : NAT BEGIN Anweisung VAR Bezeichner : NAT BEGIN Anweisung Bezeichner a1 : NAT BEGIN Anweisung Abbildung 16 Abbildung 17 Abbildung 18 : NAT BEGIN Anweisung NAT BEGIN Anweisung BEGIN Anweisung Abbildung 19 Abbildung 20 Abbildung 21 Seite 19

20 BEGIN Anweisung Anweisung Bezeichner := Term Abbildung 22 Abbildung 23 Abbildung 24 Bezeichner a1 := Term := Term Term Abbildung 25 Abbildung 26 Abbildung 27 natzahl natzahl 314 Abbildung 28 Abbildung 29 Abbildung 30 Der Keller ist leer Abbildung 31 Abbildung 32 Abbildung 33 Seite 20

21 Da der Parser alle Token abgearbeitet hat und der Stack (Keller) leer ist, beendet der Parser die syntaktische Überprüfung Er hat das Quellprogramm als ein korrektes Wort der Programmiersprache PS erkannt Der Parser realisiert zum Erkennen der Worte, die mit der kontextfreien Grammatik (1) erzeugt wurden, einen Kellerautomaten 53 In der Abbildung 34 ist der Aufbau eines Kellerautomaten dargestellt 54 Auf dem Eingabeband steht am Anfang die zu prüfende Folge der Token Aus der Grammatik (1) und der Erläuterung der Arbeitsweise des Parsers beim Erkennen des PS-Quellprogramms wird ersichtlich, dass der Parser einen deterministischen Kellerautomaten realisiert Zu jedem Zeitpunkt der Ausführung des Kellerautomaten gibt es höchstens eine Fortführungsmöglichkeit Eingabeband Lesekopf Steuereinheit und Zustandsspeicher Kellerspeicher Lese- und Schreikopf Programm Abbildung 34: Aufbau eines Kellerautomaten Aufgabe: Entwerfen und implementieren Sie ein Programm, das wie ein Parser prüft, ob die in der Tabelle gegebene Folge von Token ein syntaktisch korrektes PS-Quellprogramm ist Wird beispielsweise die Regel Term in der Grammatik (1) um die Möglichkeit zum Bilden von Ausdrücken erweitert (zb oder ), dann muss der Parser programmiertechnisch einen nichtdeterministischen Kellerautomaten realisieren Programm = "PROGRAM" Bezeichner "" Block "" Block = "VAR" Bezeichner ":" "NAT" "" "BEGIN" Anweisung "" "" Anweisung = "Bezeichner ":=" Term Term = natzahl "+" natzahl Term = natzahl Das Startsymbol ist Programm 53 Ein Kellerautomat ist ein Automat mit einem Kellerspeicher 54 Vgl Hedtstück, U (2000): Einführung in die Theoretische Informatik Formale Sprachen und Automatentheorie Oldenburg Verlag, München, S 114 Seite 21

22 Um einen nichtdeterministischen Kellerautomaten zu realisieren muss unter anderem die Arbeitsweise des Stacks 55 modifiziert werden: d) Steht ein Terminalsymbol ganz oben im Stack und stimmt es nicht mit dem aktuellen Token überein, dann wird durch Backtracking eine weitere Möglichkeit der Fortführung der Überprüfung vom Parser abgearbeitet Steht ein Terminalsymbol ganz oben im Stack und stimmt es nicht mit dem aktuellen Token überein und gibt es keine weitere Möglichkeit der Fortführung der Überprüfung, dann bricht der Parser die Arbeit ab Das Quellprogramm ist nicht syntaktisch korrekt Als Beispiel werden die Grammatik auf der Seite S 21 und das PS-Quellprogramm auf Seite 11 verwendet: Term natzahl + natzahl natzahl natzahl Abbildung 35 Abbildung 36 Abbildung 37 Das aktuelle Token ist das Semikolon (#13), deshalb Backtracking + natzahl Term natzahl Abbildung 38 Abbildung 39 Abbildung 40 Hinweis: Das Backtracking setzt einerseits den Stack zurück und andererseits den Parser wieder auf das Token #12 55 Vgl Skript, S 18 Seite 22

23 Aufgabe 56 : Modifizieren Sie Ihr Programm des Parsers so, dass es einen nichtdeterministischen Kellerautomaten realisiert Zusammenfassung: - Mit Grammatiken werden die Wörter von Sprachen gebildet 57 - Automaten 58 erkennen die Wörter von Sprachen - Scanner und Parser sind Komponenten eines Compilers: Das Quellprogramm wird vom Scanner in eine Folge von Token überführt Der Scanner überprüft die Token auf syntaktische Korrektheit Er erkennt jedes Token, das mit einer regulären Grammatik gebildet wurde Dies ist möglich, weil der Scanner intern einen endlichen Automaten realisiert Der Parser überprüft die Folge von Token auf syntaktische Korrektheit Er erkennt jede Tokenfolge, die mit einer kontextfreien Grammatik gebildet wurde Dies ist möglich, weil der Parser intern einen Kellerautomaten realisiert Des Weiteren erzeugt der Parser nach erfolgreicher Syntaxkontrolle einen Ableitungsbaum, der für die semantische Analyse des Quellprogramms benötigt wird 56 Diese Aufgabe besitzt einen hohen Schwierigkeitsgrad 57 bzw erzeugt 58 Turingmaschinen, Kellerautomaten und endliche Automaten Seite 23

24 Anhang I TuringKara und ein deterministischer endlicher Automat Die folgende Grammatik definiert die Sprache der Dualdarstellung natürlicher Zahlen mit führenden Nullen: Dualzahl = "0" Dualzahl Dualzahl = "1" Dualzahl Dualzahl = "0" Dualzahl = "1" Das Startsymbol ist Dualzahl Es handelt sich hierbei um eine reguläre Grammatik, denn auf der rechten Seite jeder Regel findet man entweder ein Terminalsymbol gefolgt von einem Nichtterminalsymbol oder nur ein Terminalsymbol Ein deterministischer endlicher Automat kann die Wörter erkennen, die mit dieser Grammatik gebildet werden Mit Hilfe von TuringKara 59 lässt sich ein endlicher Automat wie folgt konstruieren: Die Weltgröße wird eindimensional aus 20 horizontal angeordneten Zellen gestaltet Das ist das Band des endlichen Automaten Auf das Band (Abbildung 41) wird das Eingabewort geschrieben, so beispielsweise Der endliche Automat befindet sich in der Anfangskonfiguration im Zustand Dualzahl und der Lesekopf steht auf dem ersten Zeichen des Eingabewortes Das TuringKara Programm des endlichen Automaten ist in Abbildung 42 dargestellt Das Zeichen entspricht der leeren Zelle, das heißt, wenn der Lesekopf auf der ersten leeren Zelle hinter dem Eingabewort steht, stoppt der endliche Automat Das Eingabewort ist als ein Wort der Sprache erkannt worden Meldet der endliche Automat im Verlauf der Abarbeitung einen Fehler, dann ist das Eingabewort kein Wort der Sprache Abbildung 41: Anfangssituation des endlichen Automaten In der Abbildung 43 ist die Bandbelegung in der Endkonfiguration des endlichen Automaten dargestellt In TuringKara muss der Lesekopf auf der leeren Zelle stehen, um das Ende des Eingabewortes zu erkennen Abbildung 42: Zustandgraph des endlichen Automaten Abbildung 43: Endsituation des endlichen Automaten 59 Downloads für Kara: //educethethzch/informatik/karatojava/downloadhtml Seite 24

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

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

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. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax

Mehr

Thüringer Kultusministerium

Thüringer Kultusministerium Thüringer Kultusministerium Abiturprüfung 1999 Informatik als Leistungsfach (Haupttermin) Arbeitszeit: Hilfsmittel: 270 Minuten Formeln und Tabellen für die Sekundarstufen I und II/ Paetec, Gesellschaft

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

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

ABITURPRÜFUNG 2008 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2008 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2008 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

ABITURPRÜFUNG 2004 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

ABITURPRÜFUNG 2004 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) ABITURPRÜFUNG 2004 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: Hilfsmittel: 270 Minuten Formeln und Tabellen für die Sekundarstufen I und II, Berlin: Paetec, Ges. für Bildung und Technik mbh oder

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen 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

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 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

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.5 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibung des Aufbaus von Sprachen Mathematische Mengennotation Beschreibung durch Eigenschaften

Mehr

ABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

ABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) ABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: 270 Minuten Hilfsmittel: Formeln und Tabellen für die Sekundarstufen I und II. Berlin: Paetec, Ges. für Bildung und Technik mbh; PC

Mehr

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen M. Jakob Gymnasium Pegnitz 10. Dezember 2014 Inhaltsverzeichnis Allgemeine Einführung Aufbau formaler Sprachen Notationsformen formaler Sprachen Backus-Naur-Formen Erkennen formaler Sprachen Implementierung

Mehr

ABITURPRÜFUNG 2007 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2007 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2007 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p. Thorsten Timmer SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke Turing Maschine SS 2005 p. 1/35 Inhalt Einführung Formale Definition Berechenbare Sprachen und Funktionen Berechnung ganzzahliger

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

ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

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

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

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

Kapitel IV Formale Sprachen und Grammatiken

Kapitel IV Formale Sprachen und Grammatiken Kapitel IV Formale Sprachen und Grammatiken 1. Begriffe und Notationen Sei Σ ein (endliches) Alphabet. Dann Definition 42 1 ist Σ das Monoid über Σ, d.h. die Menge aller endlichen Wörter über Σ; 2 ist

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45 Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 45 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs beliebig tief geschachtelten

Mehr

Compilerbau für die Common Language Run-Time

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

Mehr

Thüringer Kultusministerium

Thüringer Kultusministerium Thüringer Kultusministerium Abiturprüfung 1999 Informatik als Grundfach (Haupttermin) Arbeitszeit: Hilfsmittel: 210 Minuten Formeln und Tabellen für die Sekundarstufen I und II/ Paetec, Gesellschaft für

Mehr

5. Die syntaktische Analyse

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

Mehr

Algorithmen und Formale Sprachen

Algorithmen und Formale Sprachen Algorithmen und Formale Sprachen Algorithmen und formale Sprachen Formale Sprachen und Algorithmen Formale Sprachen und formale Algorithmen (formale (Sprachen und Algorithmen)) ((formale Sprachen) und

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

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Ausgabe 8. Januar 2019 Abgabe 22. Januar 2019, 11:00 Uhr (im

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität

Mehr

Deterministischer Kellerautomat (DPDA)

Deterministischer Kellerautomat (DPDA) Deterministische Kellerautomaten Deterministischer Kellerautomat (DPDA) Definition Ein Septupel M = (Σ,Γ, Z,δ, z 0,#, F) heißt deterministischer Kellerautomat (kurz DPDA), falls gilt: 1 M = (Σ,Γ, Z,δ,

Mehr

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

Kapitel 2: Methoden zur Beschreibung von Syntax

Kapitel 2: Methoden zur Beschreibung von Syntax Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 2: Methoden zur Beschreibung von Syntax Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

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

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

ABITURPRÜFUNG 2006 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

ABITURPRÜFUNG 2006 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) ABITURPRÜFUNG 2006 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: Hilfsmittel: 270 Minuten Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

2.2 Syntax, Semantik und Simulation

2.2 Syntax, Semantik und Simulation 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?

Mehr

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Formale 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

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen Information: ist Rohstoff der Informatik, hat eigenständige Dimension (vgl. Länge, Zeit, elektrische Ladung ist jedoch nicht im SI-System enthalten) läßt sich nicht messen, sie wird berechnet wird durch

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

(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

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Algorithmen 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

Mehr

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Kontextfreie 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

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

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

Rekursiv aufzählbare Sprachen

Rekursiv aufzählbare Sprachen Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 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

Mehr

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die

Mehr

Die mathematische Seite

Die mathematische Seite Kellerautomaten In der ersten Vorlesung haben wir den endlichen Automaten kennengelernt. Mit diesem werden wir uns in der zweiten Vorlesung noch etwas eingängiger beschäftigen und bspw. Ansätze zur Konstruktion

Mehr

Informatik III - WS07/08

Informatik III - WS07/08 Informatik III - WS07/08 Kapitel 5 1 Informatik III - WS07/08 Prof. Dr. Dorothea Wagner dwagner@ira.uka.de Kapitel 5 : Grammatiken und die Chomsky-Hierarchie Informatik III - WS07/08 Kapitel 5 2 Definition

Mehr

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.

Proseminar 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

Mehr

Von der Chomsky-Hierarchie

Von der Chomsky-Hierarchie Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander

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

Ogden s Lemma: Der Beweis (1/5)

Ogden s Lemma: Der Beweis (1/5) Ogden s Lemma: Der Beweis (1/5) Wir betrachten zuerst die Rahmenbedingungen : Laut dem auf der vorhergehenden Folie zitierten Satz gibt es zur kontextfreien Sprache L eine Grammatik G = (Σ, V, S, P) in

Mehr

Das Informatik-Kochstudio Sortieren Alltagsalgorithmen Komplexe Algorithmen... 55

Das Informatik-Kochstudio Sortieren Alltagsalgorithmen Komplexe Algorithmen... 55 Inhalt Vorwort... 9 Binäre Codierung 0 oder 1 der kleine Unterschied... 14 Das Prinzip der digitalen Tonaufzeichnung... 16 Binäre Codierung... 18 Wiedergabequalität und Datenmengen... 21 Digitale Codierung

Mehr

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK Prof. Dr. Klaus Ambos-Spies Sommersemester 2012 17. DIE KONTEXTFREIEN SPRACHEN II: ABSCHLUSSEIGENSCHAFTEN, MASCHINENCHARAKTERISIERUNG, KOMPLEXITÄT Theoretische

Mehr

Zentralabitur 2019 Informatik

Zentralabitur 2019 Informatik Zentralabitur 2019 Informatik I. Unterrichtliche Voraussetzungen für die schriftlichen Abiturprüfungen an Gymnasien, Gesamtschulen, Waldorfschulen und für Externe Grundlage für die zentral gestellten schriftlichen

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik 3. Endliche Automaten 30.04.2015 Viorica Sofronie-Stokkermans Matthias Horbach e-mail: sofronie@uni-koblenz.de, horbach@uni-koblenz.de 1 Bis jetzt 1. Motivation

Mehr

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Kapitel 4: Syntaxdiagramme und Grammatikregeln 4. Syntaxdiagramme und Grammatikregeln 4-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 4: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

Software Entwicklung 2. Übersetzerbau 1

Software Entwicklung 2. Übersetzerbau 1 Software Entwicklung 2 Übersetzerbau 1 Übersetzerbau I Inhalt Aufgaben von Übersetzern Weitere Anwendungen von Übersetzern Arten von Übersetzern Grundlagen: Sprachdefinition Grammatik: BNF, EBNF, Syntaxdiagramme

Mehr

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch TU Dresden, 17. Oktober 2016 Rückblick Markus Krötzsch, 17. Oktober 2016 Formale Systeme Folie 2 von 31 Wiederholung Mit Grammatiken können

Mehr

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Übersicht: Inhalt und Ziele Zwei Methoden zur Beschreibung (Definition) der Syntax von Programmiersprachen Backus-Naur-Form

Mehr

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

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen

Mehr

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme Wiederholung Mit Grammatiken können wir Sprachen beschreiben und sie grob in Typen unterteilen: FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme Formale

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

8. Turingmaschinen und kontextsensitive Sprachen

8. Turingmaschinen und kontextsensitive Sprachen 8. Turingmaschinen und kontextsensitive Sprachen Turingmaschinen (TM) von A. Turing vorgeschlagen, um den Begriff der Berechenbarkeit formal zu präzisieren. Intuitiv: statt des Stacks bei Kellerautomaten

Mehr

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Formale Sprachen und endliche Automaten - Schülerband

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Formale Sprachen und endliche Automaten - Schülerband Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Formale Sprachen und endliche Automaten - Schülerband Das komplette Material finden Sie hier: School-Scout.de Dr. D. Appel Formale

Mehr

Automaten und formale Sprachen Notizen zu den Folien

Automaten 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

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 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 Programmiersprache Festlegung, wie Programme

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

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

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

Mehr

1 Endliche Automaten mit Ausgabe

1 Endliche Automaten mit Ausgabe 1.1 Autokorrektur und Smileys 9 Theorie bedeutet meist, dass die Bestandteile und Eigenschaften von Systemen auf das Elementare reduziert werden, um deren Prinzipien, Zusammenhänge, Möglichkeiten und Grenzen

Mehr

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,

Mehr

Kontextfreie Sprachen werden von PDAs akzeptiert

Kontextfreie 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

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

Theoretische Informatik I

Theoretische Informatik I (702765) Skript zur Vorlesung am 30.6.2000 Aus der vorherigen Vorlesung: Theoretische Informatik I Satz W: Sei X ein Alphabet. Zu jeder regulären Sprache R X * gibt es ein n N, so daß für alle Wörter z

Mehr

Zentralabitur 2020 Informatik

Zentralabitur 2020 Informatik Zentralabitur 2020 Informatik I. Unterrichtliche Voraussetzungen für die schriftlichen Abiturprüfungen an Gymnasien, Gesamtschulen, Waldorfschulen und für Externe Grundlage für die zentral gestellten schriftlichen

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

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt Kapitel 11: Formale Syntax und Semantik Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte

Mehr

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009 Theoretische Informatik Rainer Schrader Institut für Informatik 9. Juli 2009 1 / 41 2 / 41 Gliederung die Chomsky-Hierarchie Typ 0- Typ 3- Typ 1- Die Programmierung eines Rechners in einer höheren Programmiersprache

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

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 4: Typ 2 kontextfreie Sprachen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Kapitel

Mehr

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen Dr. Sebastian Bab WiSe 12/13 Theoretische Grundlagen der Informatik für TI Termin: VL 15 + 16 vom 17.12.2012 und 20.12.2012 Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

2. Gegeben sei folgender nichtdeterministischer endlicher Automat mit ɛ-übergängen:

2. Gegeben sei folgender nichtdeterministischer endlicher Automat mit ɛ-übergängen: Probeklausur Automatentheorie & Formale Sprachen WiSe 2012/13, Wiebke Petersen Name: Matrikelnummer: Aufgabe A: Typ3-Sprachen 1. Konstruieren Sie einen endlichen Automaten, der die Sprache aller Wörter

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

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

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS

Mehr

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Formale Sprachen und endliche Automaten

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Formale Sprachen und endliche Automaten Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Formale Sprachen und endliche Automaten Das komplette Material finden Sie hier: Download bei School-Scout.de Dr. D. Appel Formale

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