Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik...

79
Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Algorithmen und Datenstrukturen II Peter Steffen AG Praktische Informatik Technische Fakult¨ at Universit¨ at Bielefeld Vorlesung Sommer 2009 Peter Steffen Universit¨ at Bielefeld A&D II, Vorlesung 2009

Transcript of Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik...

Page 1: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Algorithmen und Datenstrukturen II

Peter Steffen

AG Praktische InformatikTechnische FakultatUniversitat Bielefeld

Vorlesung Sommer 2009

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 2: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Veranstalter

Vorlesung und Ubungen

Peter SteffenRaum: M3-124

Tel.: 0521/106-2906Email: [email protected]

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 3: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Webseite zur Vorlesung

Informationen zur Vorlesung und den Ubungen

Folien, Skript, Ubungszettel

http://www.techfak.uni-bielefeld.de/ags/pi/lehre/AuDIISS09/

Account-Antrag:

https://www.techfak.uni-bielefeld.de/rechner/accountantrag.html

Abholung nach ca. 2 Tagen im Support-Buro M3-100.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 4: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Webseite zur Vorlesung

Informationen zur Vorlesung und den Ubungen

Folien, Skript, Ubungszettel

http://www.techfak.uni-bielefeld.de/ags/pi/lehre/AuDIISS09/

Account-Antrag:

https://www.techfak.uni-bielefeld.de/rechner/accountantrag.html

Abholung nach ca. 2 Tagen im Support-Buro M3-100.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 5: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Ubungsgruppen

Anmeldung zu den Ubungen durch Eintrag auf den Listen amschwarzen Brett der Technischen Fakultat

Zeitraum der Anmeldung:Dienstag 14.4., ca. 15 Uhr bis Donnerstag 16.4., 16 Uhr

Raumnummern und Tutoren werden ab Freitag, dem 17.4.,am schwarzen Brett bekanntgegeben

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 6: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Aufgabenzettel

erstes Ubungsblatt am 21.4.(dann jeweils am Dienstag in der Vorlesung)

Aufgaben in Gruppen von 3 Studierenden bearbeiten

Losungen werden eine Woche nach der Ausgabe in derVorlesung eingesammelt

Leistungsnachweis:

1 mindestens 50% der moglichen Punktzahl in den Ubungszetteln2 erfolgreiche Bearbeitung der Projektaufgabe3 regelmaßige aktive Teilnahme an den Ubungen. Es darf

maximal zweimal unentschuldigt gefehlt werden. Ansonsten istein arztliches Attest erforderlich.

Die Ubungen beginnen in der Woche vom 20.04 bis 24.04.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 7: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Einzelprojekt

Vorbereitung auf TdPE Veranstaltung

Java-Programmieraufgabe als Einzelarbeit

Ausgabe der Projektaufgabe am 23.06.09

Abgabe der Losungen spatestens am 14.07.09

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 8: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektorientierte Programmierung in Java Ubergang von funktionaler zu OOP Programmieren im Großen Hashing Ein- und Ausgabe Grafische Benutzeroberflachen Graphen

Ubersicht

1 Syntax und Semantik

2 Java: Der Einstieg

3 Imperative Programmierung in Java

4 Algorithmen zur exakten Suche in Texten

5 Objektorientierte Programmierung in Java

6 Ubergang von funktionaler zu OOP

7 Programmieren im Großen

8 Hashing

9 Ein- und Ausgabe

10 Grafische Benutzeroberflachen

11 Graphen

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 9: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Teil I

Syntax und Semantik

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 10: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Einfuhrung

Programmiersprachen sind formale Sprachen. Es ist prazisefestgelegt,

welche Zeichenreihen uberhaupt Programme einer Sprache Lsind (Syntax),

welche Ein-/Ausgabefunktion ein Programm berechnet(Semantik).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 11: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Konkrete/abstrakte Syntax

konkrete Syntax

Genaue textuelle Aufschreibung fur Programme.

abstrakte Syntax

Bindeglied zur Semantik; gibt an, wie ein Programm(-stuck)aufgebaut ist.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 12: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel

abstrakt

assign

��

@@R

x add

��

@@R

var const

��

@@R

y 5

konkret

x := y + 5 Pascalx = y + 5 C, Fortran, JavaLET x = y + 5 Basic (anno 1963)ADD 5 TO y GIVING x COBOLSTORE y + 5 TO x dBase

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 13: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel

abstrakt

assign

��

@@R

x add

��

@@R

var const

��

@@R

y 5

konkret

x := y + 5 Pascalx = y + 5 C, Fortran, JavaLET x = y + 5 Basic (anno 1963)ADD 5 TO y GIVING x COBOLSTORE y + 5 TO x dBase

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 14: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Operatoren und Konstrukte

In der abstrakten Syntax tauchen die primitiven Konstrukte einerProgrammiersprache auf, sowie Operatoren, die diese zu neuenKonstrukten kombinieren.

primitiv: Bezeichner, ZahlKombination: var: Bezeichner → Ausdruck

const: Zahl → Ausdruckadd: Ausdruck × Ausdruck → Ausdruckassign: Bezeichner × Ausdruck → Anweisung

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 15: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Worter

Definition

Ein Alphabet A ist ein endlicher Zeichenvorrat (eine endlicheMenge).

Die Mengen aller endlichen Zeichenreihen uber einemAlphabet A bezeichnen wir mit A∗.

Das leere Wort der Lange 0 bezeichnen wir mit ε.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 16: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Formale Sprachen

Definition

Eine Menge L ⊆ A∗ heißt formale Sprache uber dem Alphabet A.

Einen abstrakteren Sprachbegriff kann man kaum definieren. Dieeinzige Frage, die man sich uber w ∈ A∗ stellen kann, ist: Giltw ∈ L oder w 6∈ L? Diese Frage nennt man das Wortproblem vonL.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 17: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Programmiersprachen

Definition

Eine Programmiersprache ist ein Paar (L,L), wobei L ⊆ A∗ eineformale Sprache und L : L→ (A∗ → A∗) die Semantik von L ist.

Damit ordnet L jedem L-Programm l ∈ L als seine Bedeutung dieEin-/Ausgabefunktion L(l) zu, wobei Ein- und Ausgabe ebenfallsZeichenreihen uber A sind. Fur L(l) schreiben wir auch kurz Ll .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 18: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Kontextfreie Grammatiken

Definition

Eine kontextfreie Grammatik ist ein 4-Tupel G = (N,A,P,S),wobei

1 N ein Alphabet von sogenannten Nonterminalsymbolen,

2 A ein Alphabet von sogenannten Terminalsymbolen mitN ∩ A = ∅,

3 P eine endliche Menge von Produktionen (Regeln) der FormV → α mit V ∈ N und α ∈ (V ∪ A)∗ und

4 S ∈ N ein Startsymbol ist.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 19: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Satzformen einer Grammatik

Die Menge S(G) der Satzformen von G ist die kleinste Teilmengevon (N ∪ A)∗ mit den folgenden Eigenschaften:

1 S ∈ S(G).2 Wenn αVβ ∈ S(G) fur ein Nonterminalsymbol V ∈ N und

Zeichenfolgen α, β ∈ (N ∪ A)∗ und wenn V → γ ∈ P eineRegel ist, so gilt auch αγβ ∈ S(G) (

”Ableitungsschritt“).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 20: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Sprache einer Grammatik

Die durch G definierte Sprache ist L(G) def= S(G) ∩ A∗. Den Test,

ob ein gegebenes Wort w durch eine Grammatik G erzeugt werdenkann, also ob w ∈ L(G) gilt, nennt man das Wortproblem von G.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 21: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Syntax und Semantik von Sprachen: Bohrkopfsteuerung

N

S

EW

O

N,E ,W ,S : Bewegung um 1 Gitterpunkt (north, east, west,south)

O: Einstellen auf Nullpunkt (origin)D: Senken des Bohrkopfes mit Bohrung (drill)U: Heben des Bohrkopfes (up)

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 22: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Programme zur Maschinensteuerung

“ONNNEEDO” Bohrung am Punkt (2,3)mit Ruckkehr zum Nullpunkt

“ODUDUDU” Dreifach-Bohrung am Nullpunkt

“DUNDUWDUSDU” bohrt Gitterquadrat, wo der Kopf gerade steht

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 23: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Steuersprache

In der ersten Variante unserer Steuersprache lassen wir beliebigeBefehlsfolgen zu. Außerdem kann jedes Programm als Eingabe einPaar von Start-Koordinaten erhalten.

L1 = {N,E ,W ,S ,U,D,O}∗Eingabe: (Int, Int)

L1 : L1 → (Int, Int)→ [(Int, Int)]

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 24: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Maschinenzustand

x aktuelle x-Koordinatey aktuelle y-Koordinatel aktueller Hebezustand des Bohrkopfes: 0 gesenkt, 1 obencs Liste bisheriger Bohr-Koordinaten

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 25: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik von Befehlen

bef :: Befehl → Zustand → Zustandbef b (x , y , l , cs) = case b ofO → (0, 0, 1, cs)N → (x , y + 1, l , cs)W → (x − 1, y , l , cs)S → (x , y − 1, l , cs)E → (x + 1, y , l , cs)D → (x , y , 0, (x , y) : cs)U → (x , y , 1, cs)

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 26: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Befehlsfolgen

beff :: Befehl∗ → Zustand → [(Int, Int)]beff [ ](x , y , l , cs) = reverse csbeff (b : bs)(x , y , l , cs) = beff bs(bef b (x , y , l , cs))

Die Semantik L1 wird beschrieben durch die Funktion

prog :: Befehl∗ → (Int, Int)→ [(Int, Int)]prog bs (i , j) = beff bs (i , j , 1, [])

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 27: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Befehlsfolgen

beff :: Befehl∗ → Zustand → [(Int, Int)]beff [ ](x , y , l , cs) = reverse csbeff (b : bs)(x , y , l , cs) = beff bs(bef b (x , y , l , cs))

Die Semantik L1 wird beschrieben durch die Funktion

prog :: Befehl∗ → (Int, Int)→ [(Int, Int)]prog bs (i , j) = beff bs (i , j , 1, [])

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 28: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Programmiersprache L1 und ihre Semantik L1 sind sehr naiv. Mansollte zum Beispiel bedenken, dass das Werkstuck und vielleichtauch die Maschine beschadigt werden, wenn mit abgesenktemBohrkopf Bewegungen ausgelost werden. Freilich – solangeniemand solche Steuerprogramme erzeugt, geht alles gut. Jedochwollen wir uns nicht darauf verlassen . . .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 29: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Syntaktische vs. semantische Verfeinerung

Generell gibt es zwei Moglichkeiten, eine Sprache (L,L) zuverfeinern: syntaktisch oder semantisch.Semantisch heisst: das“Ungluck”kann programmiert werden, trittaber nicht ein.Syntaktisch heisst: das“Ungluck”wird bereits als syntaktischfehlerhaftes Programm abgewiesen.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 30: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Aufgabe

Modifiziere die Semantik L1 (bei unverandertem L1) in zweiverschiedenen Weisen. Tritt eine Bewegung mit abgesenktemBohrkopf auf, so wirda) die Ausfuhrung des Programms abgebrochen und nur die

Koordinaten der bisherigen Bohrungen ausgegeben,b) die Ausfuhrung des Programms abgebrochen und keine

Koordinaten angegeben.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 31: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Forderungen an die Steuersprache

Wir entscheiden uns nun fur die syntaktische Verfeinerung undstellen Forderungen an die Steuersprache L:

1 Auf Befehl D muss stets U oder O folgen.

2 Befehl O ist immer moglich, U nur unmittelbar nach D.

3 Alle Programme enden mit dem Bohrkopf am Nullpunkt.

4 Auf dem Weg von einer Bohrung zur nachsten sindgegenlaufige Richtungswechsel unerwunscht, zum Beispiel. . .NSNS . . . oder . . .NES . . . , weil sie die Maschine inSchwingung versetzen konnen.

Alle diese Forderungen lassen sich durch Einschrankungen von L1

erfullen, erfordern aber verfeinerte Methoden zur syntaktischenSprachbeschreibung. Solche Mittel sind Grammatiken.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 32: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Grammatik 1

Grammatik G1 (zur Beschreibung von L1)

A = { N,E ,W ,S ,U,D,O}N = { moves,move}S = movesP = { moves → ε| move moves

move → N|E |W |S |U|D|O}

Hier gilt L(G1) = A∗. Es ist w ∈ L(G1) mit

w = “WENDEDENUDOSUED ′′

Ubung: Leite w mit dieser Grammatik ab.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 33: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Grammatik 1

Grammatik G1 (zur Beschreibung von L1)

A = { N,E ,W ,S ,U,D,O}N = { moves,move}S = movesP = { moves → ε| move moves

move → N|E |W |S |U|D|O}

Hier gilt L(G1) = A∗. Es ist w ∈ L(G1) mit

w = “WENDEDENUDOSUED ′′

Ubung: Leite w mit dieser Grammatik ab.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 34: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Verfeinerte Grammatik 2

Verfeinerte Grammatik G2 (berucksichtigt Forderungen (1) - (3),aber nicht (4)).

A,N,S wie G1

P = { moves → O|DO| move movesmove → N|E |W |S |O|DU|DO}

Frage: Warum brauchen wir die Regel moves → DO uberhaupt?Antwort: Sonst ist “DO” /∈ S(G2).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 35: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Verfeinerte Grammatik 2

Verfeinerte Grammatik G2 (berucksichtigt Forderungen (1) - (3),aber nicht (4)).

A,N,S wie G1

P = { moves → O|DO| move movesmove → N|E |W |S |O|DU|DO}

Frage: Warum brauchen wir die Regel moves → DO uberhaupt?

Antwort: Sonst ist “DO” /∈ S(G2).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 36: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Verfeinerte Grammatik 2

Verfeinerte Grammatik G2 (berucksichtigt Forderungen (1) - (3),aber nicht (4)).

A,N,S wie G1

P = { moves → O|DO| move movesmove → N|E |W |S |O|DU|DO}

Frage: Warum brauchen wir die Regel moves → DO uberhaupt?Antwort: Sonst ist “DO” /∈ S(G2).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 37: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Warum ist nun w =“WENDEDENUDOSUED” /∈ S(G2)?Versuch einer Ableitung:

moves → move moves→ W moves→ W move moves→ W E moves→3 W E N move moves→ W E N ?

Hier kann nur DU oder DO erzeugt werden, aber nicht D alleinoder DE .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 38: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Verfeinerte Grammatik 3

Verfeinerte Grammatik G3 (berucksichtigt Forderungen (1) und(4), (2) nur teilweise und (3) gar nicht):

A,S wie G1

N = { moves, ne, nw, se, sw, drill }P = { moves → ε | ne moves | nw moves | se moves | sw moves

ne → N ne | E ne | drillse → S se | E se | drillnw → N nw | W nw | drillsw → S sw | W sw | drilldrill → DU|DO }

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 39: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

RNA-Sekundarstrukturen

Ein RNA-Molekul besteht aus Basen A,C,G,U. DurchWasserstoff-Brucken zwischen A–U, G–C, G–U bilden sichBasenpaarungen, die zu einer Sekundarstruktur fuhren.

Primarsequenz Sekundarstruktur

C A C C U A A G G U C C

C

A U

C C

C A C C U A A G G U C C

A

U A

C G

C G

← Helix-Bildung schafft Stabilitat

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 40: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Sekundarstruktur-Grammatik

Grammatik zur Beschreibung der Sekundarstruktur (Ausschnitt):

A = { A, C, G, U }N = { struct, any, stack, loop }S = structP = { struct → any | any struct | struct any | stack | ε

any → A | C | G | Ustack → A stack U | U stack A |

G stack C | C stack G |G stack U | U stack G | loop

loop → any loop | any any any }

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 41: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Ableitung von RNA-Sequenzen

Allein mit den ersten beiden Produktionen kann man alleRNA-Sequenzen ableiten:

struct → any struct → A struct → A any struct → AC struct . . .

Damit ist L(G) = A∗. Der Witz der Grammatik ist, dass mancheAbleitungen das Vorliegen moglicher Sekundarstrukturen anzeigen– dann namlich, wenn sie die Produktionen fur stack benutzen.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 42: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Ableitung == Struktur

struct →2 C struct →4 C struct CC → C stack CC→ CA stack UCC →2 CACC stack GGUCC → CACC loop GGUCC→4 CACCUAAGGUCC

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 43: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Syntaxbaumstruct

��any

��C

structHH

anyHH

Cstruct

HHany

HHC

struct

stack��

AHH

Ustack��

CHH

Gstack��

CHH

Gstack

loop��

any��

U

HHany

HHA

any

APeter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 44: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Historisches

Syntaxbeschreibung von FORTRAN und COBOL (amAnfang) durch Beispiele und Gegenbeispiele.

1958 formale Beschreibung der Syntax von ALGOL durchJohn Backus; Backus-Normalform (BNF).

Kleine Verbesserungen in der Notation durch Peter Naur,daher spricht man heute von der Backus-Naur-Form (BNF).

Niklaus Wirth hat die Backus-Naur-Form noch einmaluberarbeitet und erweitert (EBNF – Extended BNF).

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 45: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Definition

Die Metazeichen der EBNF (vgl. Klaeren [5], S. 104) sind:das Definitionszeichen =das Alternativzeichen |die Anfuhrungszeichen ‘‘ ’’die Wiederholungsklammern { }die Optionsklammern [ ]die Gruppenklammern ( )der Punkt .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 46: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 47: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 48: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 49: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,

2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 50: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und

3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 51: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 52: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 53: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und

2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 54: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF, Terme

Die Menge ET der EBNF-Terme ist gegeben durch:

1 Ist V eine Folge von Buchstaben und Ziffern, die mit einemBuchstaben beginnt, so gilt V ∈ ET und gilt alsNonterminalsymbol.

2 Ist w eine Folge von beliebigen Symbolen, so ist“w”∈ ET undgilt als ein (!) Terminalsymbol.

3 Fur α ∈ ET sind auch

1 (α) ∈ ET ,2 [α] ∈ ET und3 {α} ∈ ET .

4 Fur α1, . . . , αn ∈ ET sind auch

1 α1| . . . |αn ∈ ET und2 α1α2 . . . αn ∈ ET .

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 55: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF-Definitionen

Eine EBNF-Definition besteht aus einer endlichen Menge vonEBNF-Regeln der Form

V = α.

wobei V ein Nonterminalsymbol entsprechend obiger Konventionund α ein EBNF-Term ist. Das Nonterminalsymbol auf der linkenSeite der ersten Regel ist das Startsymbol.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 56: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF-Definition fur Mini-Java (1)

program =“class” ident“{”mainMethod“}”.mainMethod =“public”“static”“void”“main”“(”“String”“[”“]”argsIdent“)”block.statement =“int” ident“=” expression“;”

| ident“=” expression“;”|“if”“(” condition“)” statement|“while”“(” condition“)” statement| block|“System”“.”“out”“.”“println”“(” expression“)”“;”|“;”|“int”“[”“]”arrayIdent“=”“new”“int”“[” expression“]”“;”| arrayIdent“[” expression“]”“=” expression“;”.

block =“{”{ statement }“}”.condition = expression ( “==” |“!=” |“<” |“<=” |“>” |“>=” ) expression.expression = [ (“+” |“-” ) ] term { ( “+” |“-” ) term }.term = factor { ( “*” |“/” ) factor }.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 57: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF-Definition fur Mini-Java (2)

factor = ident| number|“(” expression“)”|“Integer”“.”“parseInt”“(”argsIdent“[” expression“]”“)”| argsIdent“.”“length”| arrayIdent“.”“length”| arrayIdent“[” expression“]”.

ident = ( letter |“_” |“$” ) { letter | digit }.number = (“0” | digit { digit |“0”} ).digit =“1” |“2” | . . . |“9”.letter =“A” | . . . |“Z” |“a” | . . . |“ z”.argsIdent = ident.arrayIdent = ident.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 58: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Operationen auf Sprachen

Seien L, L1 und L2 beliebige Sprachen (Wortmengen) uber einemgemeinsamen Alphabet. Dann definieren wir:

1. Komplex-Produkt: L1L2def= {w1w2 | w1 ∈ L1,w2 ∈ L2}

(also L∅ = ∅L = ∅; L{ε} = {ε}L = L)

2. n-fache Iteration: L0 def= {ε}, Ln+1 := LLn

3. Stern-Operation: L∗def=

⋃n∈N Ln

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 59: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (1)

Die Semantik der EBNF definieren wir durch Rekursion uber dieEBNF-Terme. Sei E eine EBNF-Definition (wobei S dasStartsymbol, N die Menge der Nonterminals und A die Menge derTerminals sei) und ET die Menge der EBNF-Terme. Dann ist dievon E erzeugte Sprache L(E) definiert als JSKE , wobei

J KE : ET P(A∗)

wie folgt definiert ist (vgl. Klaeren [5], S. 107):

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 60: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 61: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 62: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 63: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 64: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 65: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 66: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Semantik der EBNF (2)

1 Fur V ∈ N ist

JV KEdef=

{JαKE falls V = α. eine Regel in E ist∅ sonst

2 J“w”KEdef= {w}

3q(α)

yE

def= JαKE

4q[α]

yE

def= {ε} ∪ JαKE

5q{α}

yE

def= JαK∗E

6 Jα1 . . . αnKEdef= Jα1KE . . . JαnKE

7 Jα1 | · · · | αnKEdef= Jα1KE ∪ · · · ∪ JαnKE

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 67: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel eines syntaktisch korrekten Mini-Java-Programms

class BubbleSort {

public static void main(String[] args) {

int[] array = new int[args.length];

int i = 0;

while (i < args.length) {

array[i] = Integer.parseInt(args[i]);

i = i+1;

}

i = 1;

while (i < array.length) {

int j = array.length - 1;

while (j >= i) {

if (array[j] < array[j-1]) {

int tmp = array[j];

array[j] = array[j-1];

array[j-1] = tmp;

}

j = j-1;

}

i = i+1;

}

i = 0;

while (i < array.length) {

System.out.println(array[i]);

i = i+1;

}

}

}

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 68: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF-Definition fur Mini-Java (1)

program =“class” ident“{”mainMethod“}”.mainMethod =“public”“static”“void”“main”“(”“String”“[”“]”argsIdent“)”block.statement =“int” ident“=” expression“;”

| ident“=” expression“;”|“if”“(” condition“)” statement|“while”“(” condition“)” statement| block|“System”“.”“out”“.”“println”“(” expression“)”“;”|“;”|“int”“[”“]”arrayIdent“=”“new”“int”“[” expression“]”“;”| arrayIdent“[” expression“]”“=” expression“;”.

block =“{”{ statement }“}”.condition = expression ( “==” |“!=” |“<” |“<=” |“>” |“>=” ) expression.expression = [ (“+” |“-” ) ] term { ( “+” |“-” ) term }.term = factor { ( “*” |“/” ) factor }.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 69: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

EBNF-Definition fur Mini-Java (2)

factor = ident| number|“(” expression“)”|“Integer”“.”“parseInt”“(”argsIdent“[” expression“]”“)”| argsIdent“.”“length”| arrayIdent“.”“length”| arrayIdent“[” expression“]”.

ident = ( letter |“_” |“$” ) { letter | digit }.number = (“0” | digit { digit |“0”} ).digit =“1” |“2” | . . . |“9”.letter =“A” | . . . |“Z” |“a” | . . . |“ z”.argsIdent = ident.arrayIdent = ident.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 70: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Syntaxdiagramme fur EBNF-Definitionen (1)

“w” : -����w - fur alle w ∈ A.

V : - V - fur alle V ∈ N.

[α] :

-

? -

α

{α} : ?

-

α

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 71: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Syntaxdiagramme fur EBNF-Definitionen (2)

α1 . . . αn : - α1 - · · · - αn -

α1 | · · · | αn : - α1 -

...

- αn

6

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 72: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (1)

program

{ }mainMethodclass ident

staticpublic void main

( [ ] argsIdent ) blockString

mainMethod

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 73: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (2)statement

int = expression ;ident

if ( statement)condition

while condition )( statement

int

;

[ ] arrayIdent =

expression ] = expression ;[arrayIdent

;]expression[intnew

System . out . println ( ) ;expression

block

ident expression ;=

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 74: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (3)

block

{

statement

}

expression expression==

!=

<

>=

>

<=

condition

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 75: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (4)

expression

+

term

term +

/

*

factor

factor

term

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 76: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (5)

factor

number

( expression )

argsIdent

arrayIdent

.

.

length

length

Integer .

arrayIdent ][ expression

parseInt ( argsIdent [ expression ] )

ident

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 77: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (6)

ident

letter

letter

digit

_

$

digit

digit

0

0

number

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 78: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

Beispiel: Syntaxdiagramme fur Mini-Java (7)

digit

1

...

9

letter

...

A

Z

a

z

...

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009

Page 79: Algorithmen und Datenstrukturen II - Technische Fakultät · PDF fileSyntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten

Einfuhrung Formale Sprachen Kontextfreie Grammatiken EBNF-Definitionen

K. Arnold, J. Gosling: JavaTM - Die Programmiersprache.Addison-Wesley, 1996.

T.H. Cormen, C.E. Leierson, R.L. Rivest: Introduction toAlgorithms. MIT Press, 1990.

D. Flanagan: Java in a Nutshell. O’Reilly & Associates Inc.,1996.

F. Jobst: Programmieren in Java. Hanser Verlag, 1996.

H. Klaeren: Vom Problem zum Programm. 2.Auflage,B.G. Teubner Verlag, 1991.

K. Echtle, M. Goedicke: Lehrbuch der Programmierung mitJava. dpunkt-Verlag, 2000.

Peter Steffen Universitat Bielefeld

A&D II, Vorlesung 2009