• Keine Ergebnisse gefunden

252-0027 Einführung in die Programmierung EBNF

N/A
N/A
Protected

Academic year: 2022

Aktie "252-0027 Einführung in die Programmierung EBNF"

Copied!
55
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung EBNF

Thomas R. Gross

Department Informatik ETH Zürich

(2)

Übersicht

§ Es gibt vier elementare Ausdrucksmöglichkeiten in EBNF

§ Sie lernen EBNF Beschreibungen zu lesen und verstehen

§ Sie lernen zu entscheiden ob ein Symbol legal ist (für 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 Semantik

(3)
(4)

EBNF Regeln und Beschreibungen

§ EBNF Beschreibung: eine Menge EBNF Regeln

§ Menge: Reihenfolge unwichtig

§ EBNF Regel

§ Hat 3 Bestandteile

§ Linke-Seite (Left-Hand Side, LHS), Rechte-Seite (Right-Hand Side, RHS),

§ trennt LHS von RHS, ausgesprochen “ist definiert als”

§ LHS RHS

§ LHS

§ Ein Wort (kursiv, kleingeschrieben) – der Name der EBNF Regel

(5)

§ 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)

§ Kombinationen der vier Kontrolelemente (“control forms”) (auf folgenden Seiten)

(6)

EBNF

§ digit

9

(7)

EBNF

§ digit

9

§ <digit>

9

(8)
(9)
(10)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

buchstabe_e E buchstabe_1 ⟸ 1 buchstabe_2 2

raum2 buchstabe_e buchstabe_1 buchstabe_2

(11)

Control forms (zum Kombinieren)

§ Auswahl

§ Eine Menge von Alternativen

§ Reihenfolge unwichtig

§ Durch | (gesprochen senkrechter Strich) (“stroke”) getrennt

§ Alternativen folgen den EBNF Regeln

§ Auswahl Beispiel

raum

raum1 | raum2

(12)

buchstabe_d D buchstabe_2 2 buchstabe_8 8 buchstabe_e E buchstabe_1 1

raum1 buchstabe_d buchstabe_2 buchstabe_8 raum2 buchstabe_e buchstabe_1 buchstabe_2 raum raum1 | raum2

digit 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0

(13)
(14)
(15)
(16)

Was bestimmt diese EBNF Beschreibung?

§ Einfache (ganze) Zahlen

§ Umgangssprachlich

§ Eine digit ist definiert als einer der Buchstaben 0 … 9

§ Eine integer ist definiert als eine Folge von 3 Elementen

§ Ein optionales Vorzeichen (wenn es vorhanden ist, dann muss es eine der Alternativen + oder – sein)

§ Eine digit

§ Eine Wiederholung von 0 oder mehr digits wobei jede digit eine der Alternativen der digit Regel ist (und die Alternativen unabhängig gewählt werden)

(17)

EBNF Beschreibungen

§ Reihenfolge der Regeln unwichtig

EBNF Description integer (i2)

integer [ + | - ] digit { digit }

digit 0| 1| 2| 3| 4| 5| 6| 7| 8| 9

§ oder auch

EBNF Description x (i3) x [ + | - ] y { y }

y 0| 1| 2| 3| 4| 5| 6| 7| 8| 9

§ Konvention: von einfach nach komplex, relevante Namen

§ Name der letzten Regel ist der Name der Beschreibung

(18)

Symbole und EBNF Beschreibungen

§ Wie können wir eine EBNF Beschreibung wie ein Schiedsrichter interpretieren?

§ 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)

§ Symbol legal gemäss einer Regel: alle Buchstaben des

Symbols stimmen mit den Elementen der Regel überein

(19)

§ Genaue Übereinstimmung: legal

§ Buchstaben im Symbol – Elemente der Regel

§ Es darf kein Buchstabe im Symbol übrig bleiben

§ Es darf kein (nicht-optionales) Element übrig bleiben

§ Nur dann sprechen wir von Übereinstimmung

§ Sonst: Symbol nicht legal, illegal

§ Beispiele (für digit): 6 – digit; 86 nicht digit

§ Beispiele (für raum1

D 2 8): 28 nicht raum1; D 2 nicht

raum1; D 2 8 . 2 nicht raum1

(20)

Informelle Beweise

§ Wollen zeigen dass 9 mit integer übereinstimmt

§ Start: 1. Element (optionales Vorzeichen)

§ Option nicht gewählt

§ nächster Buchstabe des Symbols muss mit Buchstabe übereinstimmen

§ Buchstabe durch digit Regel bestimmt

§ Wähle 9 auf der RHS von digit

§ Keine oder mehr Wiederholungen

§ Keine

§ 9 ist legal

§ Jeder Buchstabe von 9 stimmte mit Elementen der integer Regel überein

(21)

Mehr Beispiele

§ 1’249

§ A15

§ 345-

(22)

Tabellen

§ Formaler als Umgangssprache

§ Kompakter

§ 1. Zeile: Name der EBNF Regel, mit der das Symbol übereinstimmen soll

§ Letzte Zeile: Symbol

(23)

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

(24)
(25)

Tabellen

(26)

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

(27)
(28)

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

(29)

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.

A ist nicht legale digit

(30)

Sonderzeichen

§ Diese acht 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 {

§ Alternativen (in Textbüchern): In Anführungszeichen, z.B. “(“

§ Dann ist “ auch ein Sonderzeichen

(31)

Sonderzeichen

§ Diese acht 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 {

§ Alternativen (in Textbüchern): In Anführungszeichen, z.B. “(“

§ Dann ist “ auch ein Sonderzeichen

§ Um ein “ in einem Symbol zu bekommen: “”

(32)

Äquivalente EBNF Beschreibungen

§ Äquivalent: gleichwertig (sind immer gleich – in einem Kontext)

äqui- valent

Äquivalent bzgl. Kaufkraft, nicht aber vor einem Automaten der

(33)

Äquivalente EBNF Beschreibungen

§ Äquivalent: gleichwertig (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

(34)

Weitere EBNF Beschreibung für integer (i4)

(35)
(36)

Noch eine andere Beschreibung

§ Äquivalent zu früherer Beschreibung?

§ Symbol legal gemäss 1. Beschreibung: legal gemäss dieser Beschreibung

§ Gilt auch die Umkehrung?

(37)

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

(38)

Zurück zu integer

§ Welche dieser EBNF Beschreibungen ist äquivalent zur (früheren) Beschreibung (i1)?

§ Beide (A und B)

A (i5) B (i6)

(39)

Syntax und Semantik

§ Syntax: Form

§ Semantik (“semantics”): Bedeutung (“meaning”)

§ Syntax legt nur die Form fest.

Alle lesenden Schiffe riechen gelb.

(40)

Syntax und Semantik

§ EBNF beschreibt nur die Syntax

§ Für Programmiersprachen, 2 wichtige Semantik Fragen:

1. Können unterschiedliche Symbole die selbe Bedeutung haben?

2. Kann ein Symbol verschiedene Bedeutungen haben?

(41)

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

(42)

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

(43)

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} {}

(44)
(45)

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 ]

integer_set

{ [ integer_list ] }

(46)

Diskussion

§ integer_list Regel – ähnlich vielen Regeln für Java

§ Beispiele

§ { }

§ { 1 }

§ { 2, -5, 18 }

§ Kann durch Tabelle (oder Ableitungsbaum) gezeigt werden

(47)

Diskussion

{ 2, -5, 18 }

§ Lemma: 2 ist eine integer

§ Lemma: -5 ist eine integer

§ Lemma: 18 ist eine integer

(48)

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 }

(49)

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

(50)

EBNF Beschreibungen

§ Erstellen Sie eine EBNF Beschreibung sodass Zahlen nicht mit

einer Null anfangen (also 007 ist illegal, 7 ist legal).

(51)

zero

0

nonzero

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 digit

zero | nonzero

integer

[ + | - ] nonzero { digit }

(52)

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:

(53)

Steuerwagen

(54)

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

(55)

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

Referenzen

ÄHNLICHE DOKUMENTE

Um Eclipse einfacher zu starten, können Sie eine Verknüpfung erstellen.. Gehen Sie mit Ihrem Datei-Explorer in den Ordner, wo Sie Eclipse

§ Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können).. § Programm realisiert

§ 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

Ihr Programm muss diese Bedingung nicht zwingend testen, Sie können aber eine Überprüfung implementieren. Wenn zahl diese Bedingung nicht erfüllt, dann ist das Ergebnis des

containsAll( coll ) returns true if this set contains every element from given set equals( set ) returns true if given other set contains the same elements iterator() returns

§ Eine Aussage gilt für den Zustand eines Programms wenn die Auswertung der Aussage mit dem Zustand das Ergebnis true ergibt. § Die Auswertung jedes Variable ergibt den Wert

Eclipse hilft Ihnen dabei, indem es anzeigt, wo die Fehler sind (und eine mehr oder weniger hilfreiche Fehlermeldung dazu ausgibt), aber Sie müssen selber herausfinden, was das

!  Schiedsrichter entscheidet ob das Symbol legal ist oder nicht (für diese EBNF Beschreibung).?. !  Genaue