Formale Sprachen und Grammatiken



Ähnliche Dokumente
Theorie der Informatik

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Theoretische Informatik I

Programmiersprachen und Übersetzer

Grammatiken. Einführung

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

7. Formale Sprachen und Grammatiken

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

IT-Basics 2. DI Gerhard Fließ

Grundbegriffe der Informatik

Theoretische Informatik I

Grundbegriffe der Informatik

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

Theoretische Grundlagen der Informatik

2.11 Kontextfreie Grammatiken und Parsebäume

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

1 Mathematische Grundlagen

Mathematische Grundlagen der Informatik 2

Was ist ein Compiler?

Kapitel 2. Methoden zur Beschreibung von Syntax

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Grundbegriffe der Informatik

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Vorlesung Theoretische Informatik

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Primzahlen und RSA-Verschlüsselung

Informatik I Tutorium WS 07/08

Was meinen die Leute eigentlich mit: Grexit?

Programmierkurs Java

SWE1 / Übung 2 ( )

Text-Zahlen-Formatieren

Alphabet, formale Sprache

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

Prolog basiert auf Prädikatenlogik

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Data Mining: Einige Grundlagen aus der Stochastik

Professionelle Seminare im Bereich MS-Office

Semantik von Formeln und Sequenzen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Grundlagen der Theoretischen Informatik, SoSe 2008

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Informatik IC2. Balazs Simon

Einführung in. Logische Schaltungen

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Anwendungsbeispiele Buchhaltung

Erfahrungen mit Hartz IV- Empfängern

Parsing-EinfŸhrung Ð 1

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Informatik I WS 07/08 Tutorium 24

Informationsblatt Induktionsbeweis

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Grammatiken in Prolog

Lernwerkstatt 9 privat- Freischaltung

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

syntax.tex Eine Übersicht

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Übung 4. Musterlösungen

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Bauteilattribute als Sachdaten anzeigen

Hilfe zur Urlaubsplanung und Zeiterfassung

Wortproblem für kontextfreie Grammatiken

Programmieren Tutorium

Die Invaliden-Versicherung ändert sich

How to do? Projekte - Zeiterfassung

Internet Explorer Version 6

Print2CAD 2017, 8th Generation. Netzwerkversionen

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Wir machen neue Politik für Baden-Württemberg

Zwischenablage (Bilder, Texte,...)

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

TheGI 1: Grundlagen und algebraische Strukturen Prof. Dr.-Ing. Uwe Nestmann Februar Schriftliche Leistungskontrolle (EK)

Reporting Services und SharePoint 2010 Teil 1

AutoTexte und AutoKorrektur unter Outlook verwenden

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Formale Sprachen, reguläre und kontextfreie Grammatiken

Erstellen von x-y-diagrammen in OpenOffice.calc

Anleitung über den Umgang mit Schildern

Die Post hat eine Umfrage gemacht

Grundbegriffe der Informatik

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Grundlagen der Künstlichen Intelligenz

Alle gehören dazu. Vorwort

Thüringer Kultusministerium. Abiturprüfung 2000

Kapiteltests zum Leitprogramm Binäre Suchbäume

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Sie erreichen den Online Ticketshop unter folgender Web Adresse:

Transkript:

Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax der Sprache festgelegt. Die Methode, wie eine Syntax einer Sprache festgelegt wird ist eine Grammatik. Die Grammatik von natürlichen Sprachen und Programmiersprachen Bei natürlichen Sprachen beschreibt die Grammatik (unter anderem), wie Sätze gebildet werden können. Es gibt verschiedene Ansätze, aber ein gängiger ist, den Satzbau durch Regeln zu beschreiben. Bei Programmiersprachen beschreibt die Grammatik, wie Programmtexte gebildet werden können. Es gibt verschiedene Ansätze, aber ein gängiger ist, Programmtexte durch Regeln zu beschreiben. Beispiel (Typische Grammatikregeln) Subjekt Artikel Adjektivliste Substantiv Artikel Adjektivliste Informatik Die Adjektivliste Informatik Die Adjektiv Informatik Die zuckersüße Informatik Der gebildete Student Der Adjektiv Student Der Adjektiv Substantiv Der Adjektivliste Substantiv Artikel Adjektivliste Substantiv Subjekt Anwenden von Regeln (Ableiten) Klasse class Bezeichner { Methodenliste } class Atom { Methodenliste } class Atom { Methode } class Atom { Atom () {}} Herausfinden der Regelanwendungen (Parsen) class Molecule { int strange () {return 0; }} class Molecule { Methode } class Molecule { Methodenliste } class Bezeichner { Methodenliste } Klasse Ersetzungsregeln reichen nicht aus, um die gesamte Komplexität natürlicher Sprachen oder die gesamte Komplexität von Programmiersprachen zu beschreiben. Grammatikregeln sind Ersetzungsregeln. Es gibt Teile, die noch ersetzt werden, und Teile, die nicht mehr ersetzt werden. Die Teile, die nicht weiter ersetzt werden, nennt man wieder Terminale. Die Teile, die noch weiter ersetzt werden, nennt man wieder Nonterminale. Wieso sind Grammatiken wichtig? Mit Hilfe von Grammatikregeln kann man eindeutig beschreiben, welche Programmtexte»korrekt«sind. Dies ist wichtig, damit klar ist, worüber man überhaupt redet. Man kann auch die Struktur von Programmen beschreiben. Dies ist wichtig, damit man Programme übersetzen kann. Man kann anhand der Grammatik die Struktur von Programmen herausfinden. Diesen Vorgang nennt man parsen. Dies ist eine der ersten und wichtigsten Aufgaben von Übersetzern. Das Problem dabei ist, dass es so nicht klar ist, wie parsen für eine Grammatik funktioniert. Man kann nämlich oft sehr viele Regeln rückwärts anwenden.

Die Theorie der Zeichenketten erlaubt es, Grammatiken automatisch in effiziente Parser zu verwandeln. Was ist eine Sprache? Was ist eine formale Sprache? Natürlichen Sprachen sind komplexe Dinge, bestehend aus Wörtern, ihrer Aussprache, einer Grammatik, Ausnahmen, Dialekten, und vielen mehr. Bei formalen Sprachen vereinfacht man radikal. Definition (Alphabet). Ein Alphabet ist eine nicht-leere, endliche Menge von Symbolen (auch Buchstaben genannt). Definition (Wort). Ein Wort ist eine (endliche) Folge von Symbolen. Definition (Formale Sprache). Eine formale Sprache ist eine (oft unendliche!) Menge von Worten für ein festes Alphabet. Wortproblem: Nehmen wir an, wir haben eine (eventuell sehr komplexe) Sprache L Σ * (Menge aller Worte über dem Alphabet Σ, einschließlich dem leeren Wort) festgelegt. Das Wortproblem für L ist folgendes Problem: Eingabe: Ein Wort w Σ *. Ausgabe»w L«oder»w L«. Beispiel Betrachte die Sprache aller Java-Programmtexte. Das Wortproblem ist die Frage, ob ein Text ein Java-Programm ist. Dieses Wortproblem muss der Übersetzer lösen. Was ist eine formale Grammatik? Definition Eine formale Grammatik besteht aus vier Dingen (nach Chomsky): Einer Menge N von Nonterminalen (Nonterminalalphabet). Einer Menge T von Terminalen (Σ = Terminalalphabet). Einem Startsymbol S N. Einer Menge von Ersetzungsregeln (Produktionssystem) der Form»linke Seite (oder:=)rechte Seite«. Terminalsymbole: T deutsch = {a,..., z, A,..., Z,... Abgeordneter,.der, Professor, Student,...} T programm = {..., =, <, &,..., if, while, do,...} Nonterminalsymbole: N deutsch = {< Satz >,< Subjekt >,< Praedikat >,< Objekt >,< Artikel >,...} N programm = {...< Programm >,< Anweisung >,< Ausdruck >,< Alternative >...} Ersetzungsregeln: <Satz> <Hauptsatz> <Nebensatz>,... <while-anweisung> while (<Ausdruck> )<Anweisung>,... Grammatik: 1) Nonterminale N = {S, X, Y} Terminale T = {a, c, g, t} Startsymbol = S Die Regeln lauten: S as cs gs ts X X atgy Y ay cy gy ty ε

2) Nonterminale N = {A, B} Terminale T = {a, b} Startsymbol = S Die Regeln lauten: S B A a aa B aab abb Häufig wird die Form von Syntaxdiagrammen verwendet.

Reguläre Grammatiken Definition Bei einer regulären Grammatik wird immer ein Nonterminal durch eine Folge von Terminalen gefolgt von einem oder keinem Nonterminal ersetzt. Bemerkungen In jeder Ableitung mittels einer regulären Grammatik haben alle Satzformen genau ein Nonterminal am Ende, bis auf das abgeleitete Wort. Mit regulären Grammatiken kann man Sprachen beschreiben wie»enthält acc, aber nicht atg«. Mit regulären Grammatiken kann z.b. Java-Bezeichner beschreiben. Komplexe Sprachen wie Java lassen sich nicht mit regulären Grammatiken beschreiben. Reguläre Grammatiken sind die einfachsten Grammatiken. 1) 2) Kontextfreie Grammatiken Definition Bei einer kontextfreien Grammatik wird immer ein Nonterminal durch eine beliebige Folge von Terminalen und Nonterminalen ersetzt. Bemerkungen Kontextfreie Grammatiken können verschachtelte Strukturen beschreiben wie Klammerausdrücke oder HTML. Komplexe Sprachen wie Java lassen weitgehend, aber nicht vollständig mit kontextfreien Grammatiken beschreiben. Kontextfreie Grammatiken können mehr als reguläre Grammatiken. 1) 2) Formale Grammatiken kann man benutzen, um formale Sprachen zu erzeugen und zu beschreiben.

Übungen 1. <Satz> <Nominalphrase> <Verbalphrase> <Nominalphrase> <Artikel> <Substantiv> <Verbalphrase> <Verb> <Nominalphrase> <Artikel> der <Artikel> das <Substantiv> Hund <Substantiv> Kind <Verb> beißt Erzeuge einen Satz m. H. der obigen Grammatik. 2. G = (Σ, N, P, S) Σ = {a, b, c}, N = {S, B} P: S ε asbc ; cb Bc; ab ab; bb bb. Welche Sprache wird durch diese Grammatik beschrieben? 3. Entwickle eine Grammatik G, die folgende Sprache beschreibt: L (G) = {a n b n / n N} 4. G = (Σ, N, P, S) Σ = {a, b}, N = {S, B} P: S ab, B bb a Welche Sprache wird durch diese Grammatik beschrieben? 5. Welche Sprache wird durch folgende Grammatiken erzeugt? a) b)