Algorithmen & Programmierung. Formale Sprachen Die Logik hinter dem Compiler

Ähnliche Dokumente
Sprachen sind durch folgenden Aufbau gekennzeichnet:

Alphabet, formale Sprache

Syntax von Programmiersprachen

7. Formale Sprachen und Grammatiken

Kapitel IV Formale Sprachen und Grammatiken

Kapitel 5: Syntaxdiagramme und Grammatikregeln

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

7. Syntax: Grammatiken, EBNF

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

Einführung in die Informatik. Programming Languages

Kapitel 2. Methoden zur Beschreibung von Syntax

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

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

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

5.1 Einführung. Beispiele. Syntax. Woher weiß der Compiler, dass ein Programm nicht korrekt ist? Unterscheiden: Grammatik und Semantik

Sprachen und Programmiersprachen

Abschnitt 4: Daten und Algorithmen

Algorithmen und Formale Sprachen

Einführung in die Informatik I (autip)

Programmiersprachen und Übersetzer

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Einführung in die Informatik. Programming Languages

Grundbegriffe. Grammatiken

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

4. Induktives Definieren - Themenübersicht

Grundlagen der Theoretischen Informatik

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Formale Sprachen, reguläre und kontextfreie Grammatiken

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

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

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

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

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

6 Kontextfreie Grammatiken

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Logik I. Symbole, Terme, Formeln

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

Formale Sprachen und Grammatiken

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Mehrdeutige Grammatiken

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Theorie der Informatik

Begriffe (Wiederholung)

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Grundlagen der Programmiersprachen

Programmierkurs II. C und Assembler

Empfehlenswerte Referenzen

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Teil IX. Eine kleine Programmiersprache

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Formale Methoden 1. Gerhard Jäger 28. November Uni Bielefeld, WS 2007/2008 1/15

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Formale Sprachen und endliche Automaten

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

LR-Parser, Shift-Reduce-Verfahren

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

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

3. Zeichenreihen und formale Sprachen

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

Von der Grammatik zum AST

Kontextfreie Grammatiken

Automaten und formale Sprachen Klausurvorbereitung

9 Theoretische Informatik und Compilerbau

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

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

Inhalt Kapitel 5: Syntax

Theoretische Grundlagen der Informatik

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Das Postsche Korrespondenzproblem

Einführung in die Logik

Lexikalische Programmanalyse der Scanner

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich

Abschnitt 2: Daten und Algorithmen

Formale Sprachen. Script, Kapitel 4. Grammatiken

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

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

Grundlagen der Theoretischen Informatik

Informatik 12 Kapitel 1 - Formale Sprachen

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

Parsing regulärer Ausdrücke. Karin Haenelt

Formale Sprachen. Grammatiken. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marion OSWALD. Grammatiken: Ableitung

Grundlagen der theoretischen Informatik

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Aussagenlogik. Motivation Syntax Semantik Erfüllbarkeit SAT-Solver Kompaktheit Beweiskalküle

1 EINFÜHRUNG PROGRAMMIERSPRACHEN

Einführung in die Informatik Grammars & Parsers

2.1 Grundlagen: Kontextfreie Grammatiken

Syntax von Programmiersprachen

Grammatiken und ANTLR

Einführung Grundbegriffe

Transkript:

Algorithmen & Programmierung Formale Sprachen Die Logik hinter dem Compiler

Natürlichsprachliche Programme? Können Programme natürlichsprachlich formuliert werden? Kaufe zwei Tüten Mehl und Gemüse!? Implizites Wissen Natürlichsprachliche Algorithmen setzen i.d.r. implizites Zusatzwissen des Prozessors voraus. Deshalb ist die Granularität von Aktionen, die in natürlicher Sprache beschrieben werden, meist sehr grob. www.n-tv.de Idee für Abhilfe Verfeinerung der Granularität, so dass jede Aktionen so exakt beschrieben werden kann, dass zur ihrer Ausführung nur noch relativ einfaches Elementarwissen vorausgesetzt werden muss. Problem Mit dem Konzept natürliche Sprache lassen sich Sachverhalte nicht eindeutig formulieren. 156

Mehrdeutigkeit natürlicher Sprache Problem Sprachliche Zeichen (z.b. Wörter) können manchmal auf verschiedene Weise interpretiert werden. Umgekehrt können mehrere verschiedene Worte denselben Sachverhalt bezeichnen. Natürliche Lösung Die richtige Bedeutung eines mehrdeutigen Begriffes (korrekte Interpretation) erschließt sich oft nur aus dem Kontext einer Konversation oder eines Schriftstücks. Zusätzlich spielt wiederum das implizite vorausgesetzte Wissen eine große Rolle für die korrekte Interpretation mehrdeutiger Begriffe. Maschinelles Verstehen natürlicher Sprache Aufgrund dieser Mehrdeutigkeiten ist es trotz großer Forschungsbemühungen bis heute nicht gelungen, zuverlässige Systeme zu entwickeln, die allgemeine natürliche Sprache verstehen. 157

Mehrdeutigkeit natürlicher Sprache Homonyme Bezeichnet ein Wort, das verschiedene Bedeutungen besitzt, z.b. Bank, Rasen, Schimmel Synonyme Bezeichnet verschiedene Wörter, die denselben Sachverhalt beschreiben, z.b. Schimmel - weißes Pferd Weitere Mehrdeutigkeiten Wachstube, Tonerkennung, Druckerzeugnis, Musikerleben Das Auto wird das Hindernis umfahren (Betonung von umfahren ist wichtig für Bedeutung) Mädchenhandelsschule (Schule für Mädchenhandel oder Handelsschule für Mädchen?) Junge Frauen und Männer (Sind die Männer auch jung?) 158

Natürliche & Formale Sprachen Unterscheidung von Sprachen Natürliche Sprachen Fachsprachen Formale Sprachen Formale Sprachen vs. natürliche Sprachen Eine Formulierung von Sachverhalten ist mit formalen Sprachen eindeutig. Algorithmen, die mit Hilfe formaler Sprachen formuliert werden, sind eindeutig ausführbar und setzen kein implizites Wissen voraus. 159

Formale Sprachen

Formale Sprachen - Beispiele Formelschrift in Mathematik Jeder Mathematiker sollte die Aussage einer Formel verstehen. Programme können ausschließlich auf Basis einer Formel Berechnungen anstellen, z.b. die Formel visualisieren: 161

Formale Sprachen - Beispiele Notenschrift Auch die Notation von Musik ist eine formale Beschreibung ohne Mehrdeutigkeiten. Allerdings verlangt eine schön klingende musikalische Umsetzung das Hinzuziehen impliziten Wissens der Musiker. Ein rein formales Abspielen durch entsprechende Software klingt (noch?) nicht sehr musikalisch. 162

Formale Sprachen Fragen Wie kann man formale Sprachen beschreiben und definieren? Wie kommt man von Beschreibungen in natürlicher Sprache zu formalen Beschreibungen? Wie beseitigt man die Mehrdeutigkeiten natürlicher Sprachen? Erster Schritt Beispielhafte Untersuchung von Gesetzmäßigkeiten natürlicher und formaler Sprachen: Analyse einer unbekannten Sprache (Schrift) Analyse natürlichsprachlicher Sätze Analyse algebraischer Ausdrücke 163

Analyse einer unbekannten Sprache Auch wenn wir (zumindest die meisten) ) diesen Text weder lesen noch verstehen können, lassen sich einige Gesetzmäs- sigkeiten in der Sprache bzw. Schrift erkennen: Zeichen Die Schrift ist aus verschiedenen Einzelzeichen aufgebaut, die sich wiederholen können. Wörter Mehrere Einzelzeichen werden (offensichtlich) zu Wörtern zusammengefasst. Anordnung der Zeichen Die Schriftzeichen sind horizontal angeordnet und die Leserichtung ist (vermutlich) links rechts 164

Analyse natürlicher Sätze DER TIGER JAGT DIE ANTILOPE Artikel Substantiv Verb Artikel Substantiv Subjekt Prädikat Objekt Satz 165

Analyse algebraischer Ausdrücke ( 35 + 27 ) 9 Operand (Term) Operator Operand (Term) { Operand Operator (Term) { Ausdruck (Term) Operand (Term) 166

Regeln zur Satzerzeugung Satz Subjekt Prädikat Objekt Subjekt Artikel Substantiv Objekt Artikel Substantiv Prädikat Verb Verb JAGT DER TIGER JAGT DIE ANTILOPE Artikel DER Artikel DIE Artikel Substantiv Verb Artikel Substantiv Substantiv TIGER Subjekt Prädikat Objekt Substantiv ANTILOPE Substantiv LÖWE Satz 167

Regeln zur Satzerzeugung Wir erkennen relativ leicht richtige und falsche Satzstrukturen, selbst wenn wir den Inhalt nicht verstehen: Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplementär zur Favorisierung adäquater komplexer Algorithmen. Dieser Satz kein Verb Dies gilt auch für mathematische Ausdrücke (bei denen man allerdings oft etwas genauer hinschauen muss): (3+y)((z+(4 x) x+y ) 168

Definition formaler Sprachen Alphabet Eine endliche geordnete Menge von Zeichen heißt Alphabet (Zeichenvorrat). Zeichenkette Eine Zeichenkette über Σ wird wie folgt definiert: 1. Die leere Zeichenkette ε (epsilon) ist eine Zeichenkette 2. Wenn α eine Zeichenkette ist, dann ist die Aneinanderreihung αx bzw. xα auch eine Zeichenkette für jedes x Σ. Länge einer Zeichenkette α bezeichnet die Anzahl der Zeichen einer Zeichenkette α, wobei gilt: ε =0 169

Beispiel Mit diesem Alphabet altdeutscher Spielkarten können als Zeichenketten typische Skathände mit zehn Einzelkarten oder der Skat selbst mit zwei Einzelkarten gebildet werden. commons.wikimedia.org 170

Definition formaler Sprachen Gleichheit Zwei Zeichenketten α = α 1... α n und β = β 1...β m sind gleich, wenn n=m und α i =β i für i=1..n Konkatenation Als Konkatenation α β zweier Zeichenketten α = α 1... α n und β = β 1...β m bezeichnet man ihre Aneinanderreihung α β = α 1... α n β 1...β m Kleenesche Hülle Σ * Die Menge aller Zeichenketten, die sich mittels Konkatenation aller Symbole aus Σ bilden lassen, wird als Kleenesche Hülle Σ * bezeichnet. Formale Sprache und Wort Jede Teilmenge L Σ * heißt formale Sprache und eine Zeichenkette w L wird als Wort bezeichnet. 171

Beispiele für formale Sprachen Menge aller Kartenpaare, die sich im Skat befinden können endliche Sprache Menge aller möglichen Schachspiele sehr große, aber endliche Sprache Menge aller C-Programmtexte unendliche Sprache Menge aller Basensequenzen, die GTAC enthalten unendliche Sprache 172

Syntax und Grammatik

Motivation Gegeben Alphabet Σ mit 52 franz. Karten Formale Beschreibung Pokerhand mit fünf Karten Realisierung mit L Σ * wikipedia.de Mögliches Resultat Weitere Möglichkeit Problem Mit der bisherigen Definition können keinerlei Einschränkungen getroffen werden, weder bzgl. der erlaubten Kartenanzahl noch die Tatsache dass jede Karte nur einmal vorhanden ist. 174

Syntax Syntax Die Syntax einer Sprache L Σ * bezeichnet eine Menge von Regeln, die festlegen, welche Elemente aus Σ * zu L gehören. Bedeutung Die Syntax regelt, welche der möglichen Zeichenketten einer Sprache tatsächlich zulässig sind. Realisierung Die aufgestellte Menge von Regeln beschreibt die Erzeugung zulässiger Zeichenketten der Sprache. Aufgrund des generativen Charakters heißt dieses Regelwerk Generative Grammatik. 175

Grammatik Als generative Grammatik bezeichnet man das Quadrupel G = (Σ, V, R, S) mit: Alphabet der Zeichen Σ (Terminalsymbole) Zeichen oder Zeichenfolgen des Alphabets, aus dem die Wörter der Sprache bestehen Menge der Variablen V (Nichtterminalsymbole) Menge an Variablen, die durch Anwendung von Regeln ersetzt werden. Es gilt: Σ V= Menge der Regeln R Beschreibt, wie man aus den Variablen neue Variablen, Zeichen oder Zeichenketten bildet. Allgemein schreibt man eine Regel in der Form v u, wobei v eine beliebige Variable aus der Menge V ist und u eine beliebige Aneinanderreihung von Elementen aus V und Σ, d.h. (V Σ) *. Startvariable S S V ist die Startvariable, aus der alle Wörter der Sprache erzeugt werden. 176

Ableitung Ableitung Eine Folge von Wörtern (w0, w1,..., wn) mit w0 = S, wn (V Σ)* und wi wi+1 für i=0,...,n 1 heißt Ableitung von wn (aus S). Ablauf Mit Hilfe der Regelmenge R wird jeweils ein Wort in einem Schritt in ein neues Wort abgebildet (abgeleitet). Dabei ersetzt man die linke Seite einer Regel (v) durch ihre rechte Seite (u). 177

Erzeugte Sprache Ziel einer Grammatik Das Ziel einer Grammatik liegt in der Erzeugung von Wörtern, die ausschließlich aus Terminalsymbolen bestehen. Zielerreichung Wenn im Ableitungsprozess ein Wort entsteht, das noch mindestens eine Variable enthält (w (V Σ)*), müssen die Regeln aus R erneut auf ein derartiges Wort angewendet werden, bis das entstandene Wort nur noch aus Terminalsymbolen besteht. Erzeugte Sprache Alle Wörter w Σ*, die in beliebig vielen Schritten aus dem Startsymbol abgeleitet werden können, bilden die von einer Grammatik G erzeugte Sprache L mit L(G) = { w Σ * S * G w } (S * G w bedeutet, dass sich w aus dem Startsymbol S der Grammatik G in beliebig vielen Schritten ableiten lässt) 178

Erweiterte Backus-Naur-Form Die Syntax höherer Programmiersprachen wird i.d.r. mit Hilfe von Grammatiken definiert. Die erweiterte Backus-Naur-Form (EBNF) ist ein Formalismus zur kompakten Darstellung von Grammatiken: Definitionszeichen = Ableitungszeichen Terminalsymbole " werden in Anführungszeichen eingeschlossen Variablen (Nichtterminalsymbole) bekommen Namen, der mit einem Großbuchstaben startet Selektionsklammern (... ) Genau eine Alternative aus der Klammer muss ausgewählt (selektiert) werden Optionsklammern [ ] Inhalt der Klammer ist optional Wiederholungsklammern { } Inhalt der Klammer kann n-fach stehen mit n 0 179

Beispiel Gegeben sei folgende Grammatik G(Σ,V,R,S) zur Darstellung ganzer Zahlen mit optionalem Vorzeichen: Σ = {0,1,2,3,4,5,6,7,8,9,+, } V = {GANZZAHL, ZAHL, VORZEICHEN, ZIFFER} R = { GANZZAHL ZAHL, GANZZAHL VORZEICHEN ZAHL, ZAHL ZIFFER, ZAHL ZIFFER ZAHL, VORZEICHEN +, VORZEICHEN ZIFFER 0, ZIFFER 1, ZIFFER 2, ZIFFER 3, ZIFFER 4, ZIFFER 5, ZIFFER 6, ZIFFER 7, ZIFFER 8, ZIFFER 9 } S = GANZZAHL 180

Syntaxdiagramm Verwendung Syntaxdiagramme dienen zur Visualisierung von Grammatiken ob ein Wort Element einer Sprache ist, kann im Syntaxdiagramm direkt abgelesen werden Ausdrucksmächtigkeit Syntaxdiagramme können genau die gleichen Grammatiken wie die EBNF darstellen. Bestandteile runde Kästchen bzw. Kreise repräsentieren Terminalsymbole eckige Kästchen stellen Variablen dar Verbindungen aus Linien und Pfeilen 181

Syntaxdiagramm Regeln für den Aufbau jedes Syntaxdiagramm besitzt einen eindeutigen Namen an jedem Kästchen enden genau zwei Linien (Pfeile), die sich in der Regel gegenüberliegen es gibt genau eine Linie, die in das Diagramm hineinführt (Eingang) es gibt genau eine Linie, die aus dem Diagramm hinausführt (Ausgang) Linien dürfen sich ausschließlich bei gewollter Verzweigung kreuzen Weg Ein Weg durch ein Syntaxdiagramm beginnt am Eingang und folgt in gleichbleibender Richtung den Linien, wobei Kästchen einfach durchquert werden. An Verzweigungspunkten darf ein Zweig unter Beachtung der Pfeilrichtung ausgewählt werden. Ausdruck Jeder in Pfeilrichtung begehbare Weg ist ein gültiger Ausdruck (Wort). 182

Syntaxdiagramm Nichtterminale / Variablen Alternative / Selektion Terminalsymbole Option / Selektion Konkatenation / Sequenz Wiederholung / Iteration 183

Syntaxdiagramm - Beispiel Ganze Zahlen 0: 184

Syntaxdiagramm - Beispiel Selektion: 185

Darstellung von C-Syntax Regeln zur Darstellung von C-Syntax Da wir Grammatiken meist zur Darstellung syntaktischer Sprachelemente von C benötigen, werden wir aus Gründen der Übersichtlichkeit noch eine weitere Darstellungsform verwenden. Terminalsymbole bzw. Schlüsselwörter werden durch eine Schriftart mit fester Zeichenbreite und die Farbe Lila gekennzeichnet. Nichtterminalsymbole werden durch die Farbe Blau dargestellt und unterstrichen. Optionale und wiederholte Elemente werden wie bei der EBNF von eckigen oder geschweiften Klammern in schwarzer Schriftart eingeschlossen. Beispiel (Steuerstrukturen in C) Selektion: Sequenz: Iteration: if ( Bedingung ) { while ( Bedingung ) Anweisung1 { Anweisung ; } Anweisung [ else } Anweisung2 ] 186

Semantik einer Sprache Aufgabe Die Semantik einer Sprache L legt die Bedeutung korrekt gebildeter Ausdrücke der Sprache L fest und beantwortet damit die Frage, ob syntaktisch richtige Konstruktionen auch sinnvoll sind. Dies geschieht meist durch zusätzliche Regeln, die nichts mit der Syntax zu tun haben. Im Rahmen dieser Lehrveranstaltung werden wir Aspekte der Semantik jedoch nicht weiter formalisieren. Syntax einfacher Sätze Satz Subjekt Prädikat Objekt Subjekt Artikel Substantiv Objekt Artikel Substantiv Prädikat Verb Verb JAGT Artikel DER Artikel DEN Artikel DIE Substantiv TIGER Substantiv ANTILOPE Substantiv LÖWE 187

Anwendung von Grammatiken Lexikalische Analyse Beispiel: Schritte beim Compilieren testet, ob die Wörter der Sprache als Bausteine richtig gebildet sind z.b. Kommandozeilenprogramm lex Syntaktische Analyse (Parsen) testet, ob die Sätze (aus richtigen Wörtern) korrekt gebildet wurden. liefert Ableitungsbaum z.b. Kommandozeilenprogramm yacc Semantische Analyse überprüft den Kontext, z.b. ob jede im Programm benutzte Variable auch definiert wurde 188

Weitere Grammatikanwendungen Suche nach Daten Häufig besteht der Wunsch, Daten mit einer bestimmten Struktur zu finden, Dazu existieren Programme, die mit Hilfe von sogenannten regulären Ausdrücken suchen können, die ihrerseits eine (Spezialform einer) Grammatik darstellen. Beispiel grep ist ein Kommandozeilenprogramm, mit dem Textdateien durchsucht werden, ob sie ein Textmuster enthalten, das zu einem vorgegebenen regulären Ausdruck passt grep sucht (evtl. in Kombination mit find) alle Dateien innerhalb eines vorzugebenden Verzeichnispfades, die das Textmuster enthalten für jede gefundene Datei gibt es die Zeilennummern aus, die das Textmuster enthalten Details siehe grep-dokumentation 189

Ende der Vorlesung