Tabellen
§ Formaler als Umgangssprache
§ Kompakter
§ 1. Zeile: Name der EBNF Regel, mit der das Symbol übereinstimmen soll
§ Letzte Zeile: Symbol
65
Tabellen
§ Jede Zeile wird aus der Vorgängerzeile durch eine dieser Regeln abgeleitet:
1. Ersetze einen Namen (LHS) durch die entsprechende Definition (RHS) 2. Wahl einer Alternative
3. Entscheidung ob ein optionales Element dabei ist oder nicht 4. Bestimmung der Zahl der Wiederholungen
§ Manchmal werden 1&2 in einem Schritt gemacht
68
Ableitungsbäume
§ Graphische Darstellung eines Beweises durch eine Tabelle
§ Oben: Name der EBNF Regel, mit der das Symbol übereinstimmen soll
§ Unten: Symbol
§ Kanten zeigen welche Regeln es uns erlauben von einer Zeile zur nächsten (in der Tabelle) zu gehen
73
Schnellübung
§ Welche dieser Symbole sind legal gemäss der integer Beschreibung (i1)?
1. +28 2. +0 3. - 4. IX
5. 333-111 6. -354
7. two 8. a2
9. 0
10. $100 11. 007 12. 824
§ Zeichnen Sie einen Ableitungsbau für 28
§ Vergleichen Sie Ihre Lösung mit der Ihrer/Ihres
78
Ableitungsbaum für 28 integer
[ + | - ] digit { digit }
2 digit
8
Eine Option die nicht genommen wurde
Ableitungsbaum Versuch für A15 integer
[ + | - ] digit { digit }
Es geht nicht weiter.
Sonderzeichen
§ Diese acht Zeichen (Buchstaben ) haben eine besondere Bedeutung in EBNF Beschreibungen: {, }, [, ], |, (, ), ⟸
§ Auch < und > wenn wir Namen nicht kursiv schreiben
§ Was machen wir wenn wir ein “{“ in einem Symbol wollen?
§ z.B. um eine Menge zu beschreiben
§ Antwort: Zeichen in Rahmen {
§ Alternativen (in Textbüchern): In Anführungszeichen, z.B. “(“
§ Dann ist “ auch ein Sonderzeichen
§ Um ein “ in einem Symbol zu bekommen: “”
82
Äquivalente EBNF Beschreibungen
§ Äquivalent: gleichwertig (sind immer gleich – in einem Kontext)
äqui- valent
Äquivalent bzgl. Kaufkraft, nicht aber vor einem Automaten der
Äquivalente EBNF Beschreibungen
§ Jede EBNF Beschreibung definiert eine Sprache: Menge der legalen Symbole
§ Äquivalente EBNF Beschreibungen erkennen die selben legalen und illegalen Symbole
§ Jedes mögliche Symbol wird von beiden Beschreibungen als legal (oder illegal) erkannt
§ Die Sprachen der EBNF Beschreibungen sind identisch
86
Äquivalenz von EBNF Beschreibungen
§ Zwei EBNF Beschreibungen B1, B2 definieren die selbe Sprache:
§ Symbol legal für B1: dann auch legal für B2
§ Symbol illegal für B1: dann auch illegal für B2
§ Symbol legal für B2: dann auch legal für B1
§ Symbol illegal für B2: dann auch illegal für B1
§ B1 und B2 äquivalent
EBNF Beispiel
88
Weitere EBNF Beschreibung für integer (i4)
Andere Beschreibung für integer (i4')
92
Noch eine andere Beschreibung
§ Äquivalent zu früherer Beschreibung?
§ Symbol legal gemäss 1. Beschreibung: legal gemäss dieser Beschreibung
§ Gilt auch die Umkehrung?
Noch eine andere Beschreibung
§ Symbol legal gemäss 1. Beschreibung: legal gemäss dieser Beschreibung
§ Gilt auch die Umkehrung?
§ Nein: + ist jetzt legal
§ Nein: “leeres Symbol” jetzt eine legale integer
95
100
Frage
§ Beschreibung comma_integer lässt Symbole zu, die wir nicht akzeptieren wollen.
§ Können wir (ci) so ändern, dass Hochkommas richtig (zur Gruppierung in Tausenderblöcke) gesetzt werden
§ Jede Dreier-Gruppe von Ziffern ist durch ein Hochkomma von den links davor geschriebenen Ziffern getrennt.
§ Wenn eine Dreier-Gruppe am Anfang steht, dann steht dort kein Hochkomma (denn es gibt ja keine Ziffern links davor)
Zurück zu integer (i1)
§ Welche dieser EBNF Beschreibungen ist äquivalent zur (früheren) Beschreibung (i1)?
103
A (i5) B (i6)
Zurück zu integer
§ Welche dieser EBNF Beschreibungen ist äquivalent zur (früheren) Beschreibung (i1)?
§ Beide (A und B)
A (i5) B (i6)
Syntax und Semantik
§ Syntax: Form
§ Semantik (“semantics”): Bedeutung (“meaning”)
§ Syntax legt nur die Form fest.
105
Syntax und Semantik
§ Syntax: Form
§ Semantik (“semantics”): Bedeutung (“meaning”)
§ Syntax legt nur die Form fest.
Alle lesenden Schiffe riechen gelb.
Syntax und Semantik
§ EBNF beschreibt nur die Syntax
§ Für Programmiersprachen, zwei wichtige Semantik Fragen:
1. Können unterschiedliche Symbole die selbe Bedeutung haben?
2. Kann ein Symbol verschiedene Bedeutungen haben?
107
Illustration
§ Symbole die wir untersuchen: Namen
§ Herr Wirth
§ Professor Wirth
§ Niklaus Wirth können sich auf selbe Person beziehen
§ Symbol das wir untersuchen: Ausdruck “nächste Vorlesung”
§ Die “nächste Vorlesung” fällt aus
§ 252-0027, heute : keine Vorlesung am Dienstag
§ 252-0025, heute: keine Vorlesung am Montag
Semantik von integer
§ Bedeutung einer Zahl: ihr Wert
§ 1, +1
§ -0, +0, 0
§ Sollen 0012 und 12 die selbe Bedeutung haben?
§ Mathematik: ja
§ PIN code: nein
109
EBNF Beschreibung integer_set
§ Mengen von Zahlen
§ { Aufzählung von Zahlen }
§ Zwischen { und } keine oder Reihe von Zahlen, durch Komma getrennt
§ { 1 } {3, 2} {3, 2, 3} {}
§ In EBNF Regeln, müssen unterscheiden zwischen { und {
113
EBNF Beschreibung integer_set
§ Mengen von Zahlen
§ { Aufzählung von Zahlen }
§ Zwischen { und } keine oder Reihe von Zahlen, durch Komma getrennt
§ { 1 } {3, 2} {3, 2, 3} {}
EBNF Beschreibung
integer_list ⟸ integer [ , integer ]
Diskussion
§ integer_list Regel – ähnlich vielen Regeln für Java
§ Beispiele
§ { }
§ { 1 }
§ { 2, -5, 18 }
§ Kann durch Tabelle (oder Ableitungsbaum) gezeigt werden
117
Diskussion
{ 2, -5, 18 }
§ Lemma: 2 ist eine integer
§ Lemma: -5 ist eine integer
§ Lemma: 18 ist eine integer
Tabelle
Regel
integer_set Anfang jeder Tabelle
{ [ integer_list ] } Ersetzen von integer_set durch RHS (1)
{ integer_list } Option eingeschlossen (3)
{ integer { , integer } } Ersetzen von integer_list durch RHS (1) { integer , integer , integer } 2 Wiederholungen (4)
{ 2 , integer , integer } Lemma { 2 , -5 , integer }
{ 2 , -5 , 18 }
119
Bedeutung von Mengen
§ Wann sind zwei Mengen äquivalent?
§ Mehrfach Nennungen sind nicht wichtig
§ {1, 2, 3, 3, 2, 2, 2 } äquivalent zu {1, 2, 3}
§ Reihenfolge nicht wichtig
§ { 1, 2, 3 } äquivalent zu { 3, 2, 1 }
§ Kanonische (in Übereinstimmung mit Regel) Darstellung: geordnet, von kleinster [links] nach grösster Zahl [rechts]
§ Die kanonische Darstellung kann nicht durch EBNF Regeln erzwungen werden
124
EBNF Beschreibungen
§ Erstellen Sie eine EBNF Beschreibung sodass Zahlen nicht mit einer Null anfangen (also 007 ist illegal, 7 ist legal).
zero ⟸ 0
nonzero ⟸ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 digit ⟸ zero | nonzero
integer ⟸ [ + | - ] nonzero { digit }
126
zero ⟸ 0
nonzero ⟸ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 digit ⟸ zero | nonzero
integer ⟸ [ + | - ] nonzero { digit }
… aber jetzt ist 0 kein gültiges Symbol
Wie können wir die Beschreibung verbessern?
EBNF Beschreibungen
§ Erstellen Sie eine EBNF Beschreibung für die Züge der SBB [wie wir sie vielleicht wollen]
§ Züge bestehen aus Lokomotiven (L), Speisewagen (S), Fahrrad&Gepäckwagen (F), Grossraumwagen (G),
Steuerwagen(Z)
§ Folgende Bedingungen müssen erfüllt sein:
130
Steuerwagen
1. Eine oder mehrere Lokomotiven führen den Zug an
§ Anfang des Zuges ist links
2. Den Schluss bildet ein Steuerwagen
3. Fahrrad&Gepäckwagen werden immer paarweise eingesetzt, also FF, FFFF, …
4. Es können nicht mehr als vier Grossraumwagen in einer Reihe (direkt hintereinander) im Zug sein
5. Nach jeder Gruppe von Grossraumwagen muss ein Speisewagen gekoppelt sein.
132
Beispiele (legaler und illegaler Züge)
§ LZ -- legal, kürzester Zug
§ LLLFFZ -- legal (aber kein Platz für Passagiere)
§ LGGSFFGSFFFFZ – legal, Zug mit allen Wagentypen
§ LLFF – illegal, Zug ohne Steuerwagen
§ LGGGGFFZ – illegal, kein Speisewagen nach Gruppe Grossraumwagen
§ LGGSFFFZ – illegal, ungerade Anzahl Fahrrad&Gepäckwagen
§ LGGGGGSZ – illegal, > 4 Grossraumwagen hintereinander
1.4 Graphische Darstellung von EBNF Regeln
§ Syntax Graph: graphische Darstellung
§ Macht es leichter zu erkennen, welche Zeichen in einem Symbol (in welcher Reihenfolge) auftreten müssen
§ Aufreihung: A B C D als Graph:
§ Option: [ A ] als Graph:
134
§ Wiederholung: { A } als Graph:
Graphische Darstellung von EBNF Regeln
§ Syntax Graph: graphische Darstellung
§ Macht es leichter zu erkennen, welche Zeichen in einem Symbol (in welcher Reihenfolge) auftreten müssen
§ Aufreihung: A B C D als Graph:
§ Option: [ A ] als Graph: § Wiederholung: { A } als Graph:
A B C D
§ Auswahl: A | B | C | D als Graph
139
Pfad durch Graph: legales Symbol
§ Aufreihung: durch jedes Element in der Reihe
§ Auswahl: ein Element in der Leiter
§ Option: entweder obere Kante (mit Element) oder untere (ohne)
§ Wiederholung: wie Auswahl
§ Einzige Form die einen Pfeil von rechts nach links hat
Wofür wir ( und ) gebrauchen können
§ A B | C
§ Welcher Graph?
142
A
B
C
A B
C
Wofür wir ( und ) gebrauchen können
§ A B | C
§ Um Unklarheit zu vermeiden verwenden wir ( und )
§ A ( B | C )
§ (A B ) | C --- wenn es keine Klammern gibt
A
B
C
A B
C
EBNF Beispiel (i1) nochmal
144
Substitution
§ Können einen Syntax Graphen in einen
anderen einsetzen
§ “interne” Namen verschwinden
150
Was für Symbole sind legal?
1.
2.
154
3.
158
Was für Symbole sind legal?
§ ( und ) erlauben uns klare Darstellung A ( B|C ) vs. (AB) | C
C A
B
Control forms (zum Kombinieren)
§ Aufreihung
§ Auswahl (Entscheidung)
§ Option, Wiederholung
§ Rekursion
161
Rekursion
§ Eine rekursive Beschreibung manchmal nötig um komplizierte Symbole zu beschreiben
§ Rekursive Beschreibung enthält rekursive Regeln
§ Eine Regel ist direkt rekursiv wenn ihr Name in der Definition verwendet wird
§ Also LHS erscheint auch auf der RHS
§ r ⟸ | A r
§ r ⟸ | ( A r ) falls Sie Unklarheit vermeiden wollen
167
Diskussion
§ Warum der Aufwand?
§ r ⟸ { A }
§ Kann jede Wiederholung durch Rekursion ausgedrückt werden?
§ Kann jede Rekursion durch Wiederholung(en) ausgedrückt werden?
171
Diskussion
§ Kann jede Rekursion durch Wiederholung(en) ausgedrückt werden?
§ Nein
§ Finden Sie eine Beschreibung für An Bn (n Zahl ≥ 0: also gleiche Anzahl A, B)
EBNF Description balance
balance ⟸ | A balance B balance ⟸ | ( A balance B )
174
§ Direkte Rekursion
§ r ⟸ A | A r
§ Indirekte Rekursion
§ Folge von Regeln N1 … Nk so dass N2 auf der RHS von N1, N3 auf der RHS von R2, … und N1 auf der RHS von Nk erscheint
§ name1 ⟸ A name2
§ name2 ⟸ B name1 | C
177
Nachtrag : Ableitungsbaum, Tabellen, Graphen
§ Ein Ableitungsbaum oder eine Tabelle demonstrieren, dass ein Symbol legal gemäss einer EBNF Beschreibung sind.
§ In beiden Fällen kürzen wir die Schritte manchmal ab wenn keine Verwechslungsgefahr besteht.
§ Ein (EBNF) Graph ist eine andere Darstellung einer EBNF Beschreibung
§ Ein Pfad durch den Graphen entspricht einem Symbol das legal ist
§ Umgekehrt: um zu zeigen, dass ein Symbol legal ist, finden wir einen Pfad
§ Graph für rekursive Beschreibung: nicht elegant (muss endlich sein!)
r ⟸ B | A r
§ Ist AAB legal? -- Tabelle
179
Regel
r Anfang jeder Tabelle
B | A r Ersetzen von r durch RHS (1)
A r 2. Auswahlmöglichkeit gewählt (2)
A ( B | A r ) Ersetzen von r durch RHS (1), () zur Vermeidung von Missverständnissen
A A r 2. Auswahlmöglichkeit gewählt (2) A A ( B | A r ) Ersetzen von r durch RHS (1)
A A B 1. Auswahlmöglichkeit gewählt (2)
r ⟸ B | A r
§ Ist AAB legal? -- Ableitungsbaum (Version 1)
§ In jeder Zeile wird eine EBNF Beschreibung durch die rechte
r
B A r
B A r
B A r
Auswahl getroffen
§ Ist AAB legal? -- Ableitungsbaum (Version 2)
§ Wir fassen Schritt 1 (Ersetzen der RHS) mit Schritt 2 (Auswahl treffen) zusammen
§ Unwichtiges lassen wir weg
181
r
B A r
B A r
B A r
§ Ist AA legal? -- Ableitungsbaum (Version 2)
§ Wir fassen Schritt 1 (Ersetzen der RHS) mit Schritt 2 (Auswahl treffen) zusammen
§ Unwichtiges lassen wir weg
r
A r
A r
r ⟸ | A r
EBNF Geschichte
§ BNF enthielt erst nur Rekursion und Auswahl
§ Diese sind essential
§ Option und Wiederholung von Nicklaus Wirth hinzugefügt
§ Daher “E” – extended
§ Machen Beschreibung einfacher zu lesen
184
Nochmal integer
EBNF
§ Das war’s.
186