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