252-0027
Einführung in die Programmierung I
EBNF
Übersicht
! Sie lernen die vier elementaren Ausdrucksmöglichkeiten in EBNF kennen
! Sie lernen EBNF Beschreibungen zu lesen und verstehen
! Sie lernen zu entscheiden ob ein Symbol legal ist (fuer eine EBNF Beschreibung)
! Sie können entscheiden ob zwei EBNF Beschreibungen äquivalent sind
! Sie lernen EBNF Beschreibungen zu erstellen
! Sie lernen den Unterschied zwischen Syntax und Seman=k
EBNF Regeln und Beschreibungen
! EBNF Beschreibung: eine Menge EBNF Regeln
! Menge: Reihenfolge unwich@g
! EBNF Regel
! Hat 3 Bestandteile
! Linke-Seite (LeF-Hand Side, LHS), Rechte-Seite (Right-Hand Side, RHS), ⟸
! RHS
! Die Beschreibung für den Namen (d.h., der LHS)
! Kann enthalten
! Namen
! Buchstaben ( stellen den Buchstaben da, d.h. wir erwarten diesen Buchstaben und keinen anderen)
! Kombina@onen der vier Kontrolelemente (“control forms”) (auf der nächsten Seite)
Control forms (zum Kombinieren)
! Aufreihung
! Auswahl
! Op=on
! Wiederholung
EBNF Beispiel
EBNF Beschreibungen
! Reihenfolge der Regeln unwich=g
EBNF Descrip@on integer
integer ⟸ [ + | - ] digit { digit }
digit ⟸ 0| 1| 2| 3| 4| 5| 6| 7| 8| 9
! oder auch
EBNF Descrip@on integer x ⟸ [ + | - ] y { y }
y ⟸ 0| 1| 2| 3| 4| 5| 6| 7| 8| 9
! Konven=on: von einfach nach komplex, relevante Namen
! Name der letzten Regel ist der Name der Beschreibung 10
Symbole und EBNF Beschreibungen
! Wie können wir eine EBNF Beschreibung wie ein Schiedsrichter interpre=eren?
! Gegeben eine EBNF Beschreibung und ein Symbol
! Symbol: eine Folge von Buchstaben
! Schiedsrichter entscheidet ob das Symbol legal ist oder nicht (für diese EBNF Beschreibung)
! Genaue Uebereins=mmung: legal
! Buchstaben im Symbol – Elemente der Regel
! Es darf kein Buchstabe im Symbol übrig bleiben
! Es darf kein (nicht-op@onales) Element übrig bleiben
! Nur dann sprechen wir von Uebereins@mmung
! Sonst: Symbol nicht legal, illegal
! Genaue Uebereins=mmung: legal
! Buchstaben im Symbol – Elemente der Regel
! Es darf kein Buchstabe im Symbol übrig bleiben
! Es darf kein (nicht-op@onales) Element übrig bleiben
! Beispiele (für digit): 6 – digit; 86 nicht digit
! Beispiele (für ini'al ⟸ t r g): tg nicht ini'al; tr nicht ini'al;
trgk nicht ini'al
Informelle Beweise
! Wollen zeigen dass 9 mit integer übereins=mmt
! Start: 1. Element (op@onales Vorzeichen)
! Op@on nicht gewählt
! nächster Buchstabe des Symbols muss mit Buchstabe übereins@mmen
! Buchstabe durch digit Regel bes@mmt
! Wähle 9 auf der RHS von digit
! Keine oder mehr Wiederholungen
! Keine
! 9 ist legal
! Jeder Buchstabe von 9 s@mmte mit Elementen der integer Regel überein
Mehr Beispiele
! 1’249
! A15
! 345-
Tabellen
! Formaler als Umgangssprache
! Kompakter
! 1. Zeile: Name der EBNF Regel, mit der das Symbol übereins=mmen soll
! Letzte Zeile: Symbol
Tabellen
! Jede Zeile wird aus der Vorgängerzeile durch eine dieser Regeln abgeleitet:
1. Ersetze einen Namen (LHS) durch die entsprechende Defini@on (RHS) 2. Wahl einer Alterna@ve
3. Entscheidung ob ein op@onales Element dabei ist oder nicht 4. Bes@mmung der Zahl der Wiederholungen
! Manchmal werden 1&2 in einem Schril gemacht
Ableitungsbäume
! Graphische Darstellung eines Beweises durch eine Tabelle
! Oben: Name der EBNF Regel, mit der das Symbol übereins@mmen soll
! Unten: Symbol
! Kanten zeigen welche Regeln es uns erlauben von einer Zeile zur nächsten (in der Tabelle) zu gehen
Ableitungsbaum für 28 integer
[ + | - ] digit { digit }
2 digit
8
Eine Op@on die nicht genommen wurde
Ableitungsbaum Versuch für A15 integer
Sonderzeichen
! Diese sechs Zeichen (Buchstaben ) haben eine besondere Bedeutung in EBNF Beschreibungen: {, }, [, ], |, ⟸
! Was machen wir wenn wir ein “{“ in einem Symbol wollen?
! z.B. um eine Menge zu beschreiben
! Antwort: Zeichen in Rahmen {
Aequivalente EBNF Beschreibungen
! Aequivalent: gleichwer=g (sind immer gleich – in einem Kontext)
äqui- valent
Aequivalente EBNF Beschreibungen
! Aequivalent: gleichwer=g (sind immer gleich – in einem Kontext)
! EBNF Beschreibungen erkennen die selben legalen und illegalen Symbole
! Jedes mögliche Symbol wird von beiden Beschreibungen als legal (oder illegal) erkannt
Andere EBNF Beschreibung für integer
Vereinfachte Beschreibung
Vereinfachte Beschreibung
! Symbol legal gemäss 1. Beschreibung: legal gemäss dieser Beschreibung
! Gilt auch die Umkehrung?
! Nein: + ist jetzt legal
Zurück zu integer
! Welche dieser EBNF Beschreibungen ist äquivalent zur (früheren) Beschreibung (auf Slide 6)?
! Beide (A und B)
A B
Syntax und Seman=k
! Syntax: Form
! Seman=k (“seman=cs”): Bedeutung (“meaning”)
! Syntax legt nur die Form fest.
Syntax und Seman=k
! EBNF beschreibt nur die Syntax
! Für Programmiersprachen, 2 wich=ge Seman=k Fragen:
1. Können unterschiedliche Symbole die selbe Bedeutung haben?
2. Kann ein Symbol verschiedene Bedeutungen haben?
Illustra=on
! 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”
Seman=k von integer
! Bedeutung einer Zahl: ihr Wert
! 1, +1
! -0, +0, 0
! Sollen 0012 und 12 die selbe Bedeutung haben?
! Mathema@k: ja
! PIN code: nein
EBNF Beschreibung integer_set
! Mengen von Zahlen
! { Anfang einer Beschreibung, } Ende
! Zwischen { und } keine oder mehr Zahlen, durch Komma getrennt
Diskussion
! integer_list Regel – ähnlich vielen Regeln für Java
! Beispiele
! { }
! { 1 }
! { 2, -5, 18 }
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 } Op@on eingeschlossen (3)
{ integer { , integer } } Ersetzen von integer_list durch RHS (1) { integer , integer , integer } 2 Wiederholungen (4)
Bedeutung von Mengen
! Wann sind zwei Mengen äquivalent?
! Mehrfach Nennungen sind nicht wich@g
! {1, 2, 3, 3, 2, 2, 2 } äquivalent zu {1, 2, 3}
! Reihenfolge nicht wich@g
! { 1, 2, 3 } äquivalent zu { 3, 2, 1 }
! Kanonische (in Uebereins@mmung mit Regel) Darstellung:
geordnet, von kleinster [links] nach grösster Zahl [rechts]
! Die kanonische Darstellung kann nicht durch EBNF Regeln erzwungen werden
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 }
EBNF Beschreibungen
! Erstellen Sie eine EBNF Beschreibung für die Züge der SBB [wie wir sie vielleicht wollen]
! Züge bestehen aus Lokomo=ven (L), Speisewagen (S), Fahrrad&Gepäckwagen (F), Grossraumwagen (G),
Steuerwagen(Z)
Steuerwagen
1. Eine oder mehrere Lokomo=ven führen den Zug an 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
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
Graphische Darstellung von EBNF Regeln
! Syntax Graph: graphische Darstellung
! Macht es leichter zu erkennen, welche Zeichen in einem Symbol (in welcher Reihenfolge) autreten müssen
! A B C D als Graph:
! [ A ] als Graph: ! { A } als Graph:
! A | B | C | D als Graph
Pfad durch Graph: legales Symbol
! Aufreihung: durch jedes Element in der Reihe
! Auswahl: ein Element in der Leiter
! Op=on: entweder obere Kante (mit Element) oder untere (ohne)
! Wiederholung: wie Auswahl
Beispiel
Subs=tu=on
! Können einen Syntax Graphen in einen
anderen einsetzen
! “interne” Namen verschwinden