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

Ähnliche Dokumente
Alphabet, formale Sprache

Formale Sprachen. Inhalte. Lehrplan. Hinweis

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

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

Syntax von Programmiersprachen

Syntax von Programmiersprachen

2.2 Syntax, Semantik und Simulation

Syntax von Programmiersprachen

Lexikalische Programmanalyse der Scanner

Kapitel 2. Methoden zur Beschreibung von Syntax

DisMod-Repetitorium Tag 4

7. Syntax: Grammatiken, EBNF

Informatik 12 Kapitel 1 - Formale Sprachen

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Einführung in die Programmierung für NF. Übung

Inhalt Kapitel 11: Formale Syntax und Semantik

Kapitel IV Formale Sprachen und Grammatiken

Kapitel 2: Methoden zur Beschreibung von Syntax

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

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

Kapitel 5: Syntaxdiagramme und Grammatikregeln

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

Tagesprogramm

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen

Mehrdeutige Grammatiken

Abiturprüfung Informatik, Grundkurs

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Ein Fragment von Pascal

Software Entwicklung 1

Deterministische endliche Automaten - Wiederholung

Kapitel 2. Methoden zur Beschreibung von Syntax

Einführung in die Programmiertechnik

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

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

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

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

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

Zustandsmodelle. M. Jakob. 10. Dezember Gymnasium Pegnitz

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

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Simulation und Testen von Algorithmen

Lexikalische Analyse, Tokenizer, Scanner

4.2.4 Reguläre Grammatiken

Einführung in die Informatik. Programming Languages

7. Formale Sprachen und Grammatiken

Inhalt Kapitel 5: Syntax

3 Syntax von Programmiersprachen

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

Formale Sprachen und Grammatiken

Schwerpunkte. 5. Auswahl: Bedingte Anweisungen. Syntax. If-Anweisung: Auswahl aus zwei Alternativen. If-Anweisung: Auswahl aus 2 Alternativen

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

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

3 Syntax von Programmiersprachen

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

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

Syntax von Programmiersprachen

Einführung in die Programmierung mit Java

Form und Darstellung von Informationen

Grundlagen der Theoretischen Informatik

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Syntaxanalyse Ausgangspunkt und Ziel

Automaten und formale Sprachen Klausurvorbereitung

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 19.

17. Rekursion 2. Bau eines Taschenrechners, Ströme, Formale Grammatiken, Extended Backus Naur Form (EBNF), Parsen von Ausdrücken

Automatentheorie und formale Sprachen

Begriffe (Wiederholung)

124 Kompetenzorientierte Aufgaben im Informatikunterricht

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

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

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

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

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

5.2 Endliche Automaten

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

Einstieg in die Informatik mit Java

Mehrdeutige Grammatiken

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 20.

Einführung in die Informatik. Programming Languages

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

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

Von der Chomsky-Hierarchie

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

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

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

Algorithmen & Programmierung. Formale Sprachen Die Logik hinter dem Compiler

Rekursiv aufzählbare Sprachen

Einstieg in die Informatik mit Java

Transkript:

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

Allgemeine Einführung Natürliche und künstliche Sprachen natürliche Sprachen (Deutsch, Englisch, Latein,... ) meist historisch entwickelt, äußerst komplex künstliche Sprachen für spezielle Fachgebiete konstruiert, möglichst systematisch Autokennzeichen chemische Reaktionsgleichungen 235 92 U + 1 89 144 n Kr + 0 36 56 Ba + 3 1 0 n mathematische Terme 3x 2 7x + 3 A sin(ωt + ϕ) 3/40 ( Version 10. Dezember 2014) Allgemeine Einführung Bestandteile einer Sprache Jede künstliche und natürliche Sprache enthält... ein Alphabet, aus dem die Wörter und Sätze der Sprache zusammengestellt werden. eine Syntax, die angibt, welche Wörter, Ausdrücke und Sätze zur Sprache gehören. eine Semantik, die festlegt, was die einzelnen Ausdrücke bedeuten. Die Grammatik stellt in diesem Zusammenhang ein Regelwerk dar, wie erreicht wird, dass ein Ausdruck syntaktisch korrekt ist. 4/40 ( Version 10. Dezember 2014)

Allgemeine Einführung Syntaxbaum (Ableitungsbaum) einer Grammatik der deutschen Sprache Satz Subjekt Prädikat Objekt. Artikel Substantiv Verb Artikel Substantiv. Der Schüler mag die Schule. 5/40 ( Version 10. Dezember 2014) Allgemeine Einführung Syntaxbaum in Regeln gefasst Regeln der Grammatik R1 Satz Subjekt Prädikat Objekt ". R2 Subjekt Substantiv Artikel Substantiv R3 Prädikat Verb R4 Objekt Substantiv Artikel Substantiv R5 Artikel der den einen R6 Substantiv Volleyballer Ball Schüler Pass Saxofon R7 Verb spielt mag 6/40 ( Version 10. Dezember 2014)

Allgemeine Einführung Zusammenfassung Regeln, die auf Platzhalter (bestehend aus Nichtterminalsymbolen) enden R1 Satz Subjekt Prädikat Objekt ". R2 Subjekt Substantiv Artikel Substantiv R3 Prädikat Verb R4 Objekt Substantiv Artikel Substantiv Regeln, die auf Wörtern (Terminalsymbolen) enden R5 Artikel der den einen R6 Substantiv Volleyballer Ball Schüler Pass Saxofon R7 Verb spielt mag 7/40 ( Version 10. Dezember 2014) Allgemeine Einführung Unterschied zwischen Syntax und Semantik Mit dieser Grammatik lassen sich folgende syntaktisch richtigen Sätze bilden: der Schüler mag den Schule. der Volleyballer spielt den Schüler. der Schüler spielt Saxofon. Dabei ist nur der letzte Satz semantisch korrekt. 8/40 ( Version 10. Dezember 2014)

Allgemeine Einführung Übung Ü 1.1: Buch S.14 / 5 Ü 1.2: Buch S.14 / 6 Ü 1.3: Buch S.14 / 7 9/40 ( Version 10. Dezember 2014) Aufbau formaler Sprachen Bestandteile einer Grammatik Definition (Grammatik) Eine Grammatik (V, Σ, P, S) besteht aus... Einer Menge V von Nichtterminalsymbolen (Variablen), Einer Menge Σ von Terminalsymbolen (Alphabet). Einer Menge P von Produktionen (auch Regeln genannt). Einem Startsymbol S aus der Menge der Nichtterminalsymbole. 10/40 ( Version 10. Dezember 2014)

Aufbau formaler Sprachen Aufbau formaler Sprachen Bemerkungen Σ und V dürfen kein gemeinsames Element besitzen (Σ V = {}). Die Grammatik legt eine formale Sprache fest, deren Worte nur aus Terminalsymbolen aus Σ bestehen und die ausgehend vom Startsymbol S mithilfe einer endlichen Anzahl von Anwendungen von Regeln aus P abgeleitet werden können. 11/40 ( Version 10. Dezember 2014) Aufbau formaler Sprachen Bespiel E-Mail-Adresse: groessterdepp@web.de R1 E-Mail-Adresse = Benutzerkennung " @"Domäne R2 Benutzerkennung = Einzelzeichen {Einzelzeichen} R3 Domäne = Unterdomäne {"."Unterdomäne} "."TLD R4 TLD = Buchstabe Buchstabe [Buchstabe] [Buchstabe] R5 Unterdomäne = (Buchstabe Ziffer) {Buchstabe Ziffer " -"} (Buchstabe Ziffer) R6 Einzelzeichen = Buchstabe Ziffer " -" " _" "." "!" R7 Ziffer = "0 "1"... "9" R8 Buchstabe = " a" "b" "c"... " z" 12/40 ( Version 10. Dezember 2014)

Aufbau formaler Sprachen Ableitungsbaum für eine E-Mail-Adresse E-Mail-Adresse B.kennung @ R1 Domäne EZ R2 EZ Unterdom. R3. TLD R6 R6 R5 R4 BS BS BS BS BS BS BS R8 überall m b w e b d e 13/40 ( Version 10. Dezember 2014) In diesem Abschnitt Notationsformen formaler Sprachen Backus-Naur-Formen

Notationsformen Backus-Naur-Formen Die Backus-Naur-Form (BNF) Wie Syntaxregeln aufgeschrieben werden, legt z.b. die Backus-Naur-Form fest. Beispiel: 1 <Ziffer > ::= 0 <ZifferNNull > 2 <ZweistZahl > ::= <ZifferNNull > < Ziffer > 3 <Zehn bis Neunzehn > ::= 1 <Ziffer > 4 <Zweiundvierzig > ::= 42 Die Backus-Naur-Form hat zwei große Nachteile: Sie ist nicht standardisiert (viele unterschiedliche Dialekte). besitzt keine Symbole für optionale Zeichen und Wiederholungen. 15/40 ( Version 10. Dezember 2014) Notationsformen Backus-Naur-Formen Erweiterte Backus-Naur-Form (EBNF) EBNF Unsere bisherigen Beispiele verwendet einige Schreibvereinfachungen, die in der Erweiterten Backus-Naur-Form (EBNF) standardisiert sind. Das Zeichen steht für eine Alternative (eines davon). Die Klammern [] stehen für eine Option (kann, muss aber nicht). Die Klammern {} stehen für eine Wiederholung (beliebig oft - auch keinmal). Die Klammern () stehen für logische Gruppierungen. Die Ableitungspfeile werden durch =-Zeichen ersetzt. Am Ende einer Anweisung stets ein Ende -Zeichen (z.b. ;) Hinweis als Wiederholungszeichen 16/40 ( Version 10. Dezember 2014)

In diesem Abschnitt Notationsformen formaler Sprachen Backus-Naur-Formen Notationsformen stellen die Regeln einer Grammatik grafisch dar. Für jede Regel gibt es ein eigenes Syntaxdiagramm. Terminale werden durch Kreise, Nichtterminale durch Rechtecke repräsentiert. Verfolgt man einen Pfad vom Startzum Endpfeil, so erhält man die entsprechenden Regel der Grammatik. 18/40 ( Version 10. Dezember 2014)

Notationsformen Beispiele EBNF E-Mail-Adresse = Benutzerkennung @ Domäne Syntaxdiagramm E-Mail-Adresse: Benutzerkennung @ Domäne 19/40 ( Version 10. Dezember 2014) Notationsformen Beispiele EBNF Benutzerkennung = Einzelzeichen {Einzelzeichen} Syntaxdiagramm Benutzerkennung: Einzelzeichen 20/40 ( Version 10. Dezember 2014)

Notationsformen Beispiele EBNF Domäne = Unterdomäne {. Unterdomäne}. TLD Syntaxdiagramm Domäne: Unterdomäne. TDL Unterdomäne. 21/40 ( Version 10. Dezember 2014) Notationsformen Beispiele EBNF TLD = Buchstabe Buchstabe [Buchstabe] [Buchstabe] Syntaxdiagramm TDL: Buch. Buch. Buch. Buch. 22/40 ( Version 10. Dezember 2014)

Notationsformen Beispiele EBNF Einzelzeichen = Buchstabe Ziffer - _.! Syntaxdiagramm Einzelzeichen: Buchstabe Ziffer - _.! 23/40 ( Version 10. Dezember 2014) Notationsformen Übung Überblick S. 24ff Ü 3.1: S. 28/1 (gem.) Ü 3.2: S. 28/2 Ü 3.3: S. 29/5 24/40 ( Version 10. Dezember 2014)

Notationsformen Übung Ü 3.4: S. 29/6 Ü 3.5: S. 29/7a Ü 3.6: S. 31/10 Ü 3.7: Abi 2012, III,1a und smilies mit EBNF-Visualizer oder Online-RRG EBNF-Visualizer http://www.heise.de/download/ ebnf-visualizer-fcd81acae3bfa1a6257b8df17a9222ee-1412621948-2661335.html Online-RRG http://bottlecaps.de/rr/ui 25/40 ( Version 10. Dezember 2014) Erkennung Beispiel: Lachautomat Syntaxdiagramm Lach: h a! gesucht Algorithmus, der erkennt, ob ein Wort zu einer Grammatik gehört, oder nicht. an Tafel in DFA konvertieren 26/40 ( Version 10. Dezember 2014)

Erkennung Beispiel: Der Lachautomat Zustandsdiagramm h h! start S H HA a ARZ Fehler Jeder Automat muss einen Startzustand haben (hier S). Wenn ein bestimmtes Zeichen eingelesen wird, springt der Automat evtl. in einen anderen Zustand. Ist ein Ausdruck syntaktisch korrekt, wird er akzeptiert, d.h. der Automat springt in den Endzustand (hier ARZ), wenn nicht, in einen Fehlerzustand, aus dem kein Übergang mehr herausführen darf. 27/40 ( Version 10. Dezember 2014) Erkennung Übung Ü 4.1: Lachautomat mit AutoEdit von AtoCC Ü 4.2: S. 41/2 Ü 4.3: S. 41/5 Ü 4.4: Exorciser http://www.swisseduc.ch/informatik/exorciser/download.html 28/40 ( Version 10. Dezember 2014)

Erkennung Die Übergangsfunktion Die Übergangsfunktion ist eine Matrix, in der angegeben wird durch welche eingelesenen Zeichen, welche Zustandsübergänge ausgelöst werden. h start S H h a HA h a! sonst S H Fehler Fehler Fehler H Fehler HA Fehler Fehler HA H Fehler ARZ Fehler ARZ Fehler Fehler Fehler Fehler Fehler Fehler Fehler Fehler Fehler Fehler! ARZ 29/40 ( Version 10. Dezember 2014) Erkennung Definition Endlicher Automat Definition Ein erkennender endlicher Automat besteht aus folgenden Teilen: Eine Menge der Zustände: Z = {S, H, HA, ARZ, Fehler} Eine Menge der Eingabezeichen (Alphabet): T = {h, a,!} Eine Übergangsfunktion: δ : Z T Z Das bedeutet: Wenn man einen Zustand mit einem Eingabezeichen kombiniert, ergibt sich wieder ein (neuer) Zustand. Ein Startsymbol: S Z Eine Menge von Endzuständen: F Z, F = {ARZ} Ein Wort gilt als erkannt, wenn sich der Automat nach Einlesen aller Eingabezeichen in einem Endzustand befindet. 30/40 ( Version 10. Dezember 2014)

Erkennung Grenzen endlicher Automaten Es lässt sich zeigen: Zu jedem endlichen Automaten existiert eine wie oben definierte Grammatik aber nicht umgekehrt. Beispiel: Multiklammern: S = (S) a 31/40 ( Version 10. Dezember 2014) Implementierung Beispiel: Lachautomat-Implementation h h! start S H HA a ARZ Fehler Idee: Es wird eine Variable Zustand definiert. Das zu testende Wort wird buchstabenweise ausgewertet und die Zustandsvariable entsprechend geändert. Befindet sich die Zustandsvariable am am Ende im Endzustand gehört das eingegeben Wort zur Grammatik. 32/40 ( Version 10. Dezember 2014)

Implementierung Lachautomat Variablendeklaration 1 private final int ARZ = 3; 2 private final int FEHLER = 99; 3 4 // Menge der Endzustände 33/40 ( Version 10. Dezember 2014) Implementierung Lachautomat Zustandsdeklaration 1 private int F[] = { ARZ }; 2 3 public Lachautomat() { } 4 5 public void seteingabe( String e) 6 { 7 eingabe = e; 8 parsen(); 9 } 34/40 ( Version 10. Dezember 2014)

Implementierung Lachautomat Konstruktor und Parser starten 1 private void parsen(){ 2 char z; 3 zustand = START; 4 System.out.print( \u000c ); 5 anzeigen( ); 6 7 for (int i = 0; i < eingabe. length() ; i = i + 1){ 8 z = eingabe. charat(i); 35/40 ( Version 10. Dezember 2014) Implementierung Lachautomat parsen (lokale Variablen) 1 case h : { h(); break; } 2 case a : { a(); break; } 3 case! : { arz(); break; } 4 default: { sonst(); break; } 5 } 36/40 ( Version 10. Dezember 2014)

Implementierung Lachautomat parsen (Kern und Ausgabe) 1 anzeigen(z); 2 } 3 ergebnisausgeben( isendzustand()); 4 } 5 6 private void ergebnisausgeben( boolean istendzustand){ 7 System.out.print("Die Eingabe " + eingabe); 8 if ( istendzustand ){ 9 System.out. println(" ist korrekt."); 10 } 11 else{ 12 System.out. println(" enthält einen Fehler."); 37/40 ( Version 10. Dezember 2014) Formale 13 Sprachen } Implementierung Lachautomat parsen (Zustandsübergänge) 1 2 private void a() 3 { 4 switch ( zustand) 5 { 6 case H: { zustand = HA; break; } 7 default: { zustand = FEHLER; break; } 8 } 9 } 38/40 ( Version 10. Dezember 2014)

Implementierung Übung Ü 5.1: Fehlende Methoden implementieren Ü 5.2: Funktion der Methode isendzustand() erklären Ü 5.3: parser für binäre Rechenoperationen erstellen Ü 5.4: S 44/8 Ü 5.5: S 44/10 39/40 ( Version 10. Dezember 2014)