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

EBNF Regeln und Beschreibungen

§ EBNF Beschreibung: eine Menge EBNF Regeln

§ Menge: Reihenfolge unwichtig

§ EBNF Regel

§ LHS RHS

§ LHS

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

§ RHS

§ Die Beschreibung für den Namen (d.h., der LHS)

(4)

Right hand side

§ Die Beschreibung für den Namen (d.h., der LHS)

§ Kann enthalten

§ Namen (anderer EBNF Beschreibungen)

§ Buchstaben ( stellen den Buchstaben da, d.h. wir erwarten diesen Buchstaben und keinen anderen)

§ Kombinationen der vier Kontrolelemente (“control forms”) (auf der nächsten Seite)

(5)

EBNF

§ Vier Elemente (“control forms”) die Sie in Java wiederfinden werden

§ Aufreihung (“sequence”)

§ Entscheidung oder Auswahl (“decision”)

§ Wiederholung (“repetition”)

§ Rekursion (“recursion”)

§ Beliebige Kombinationen in einer RHS

(6)

Control forms (zum Kombinieren)

§ Aufreihung

§ Von links nach rechts gelesen

§ Reihenfolge ist wichtig

§ Aufreihung Beispiel

§ initialen T R G

(7)

Control forms (zum Kombinieren)

§ Auswahl

§ Eine Menge von Alternativen

§ Reihenfolge unwichtig

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

§ Alternativen folgen den EBNF Regeln

§ Auswahl Beispiel

§ ta_initial ta1 | ta2

§ ta1 Michael Faes

(8)
(9)
(10)

Control forms (zum Kombinieren)

§ Wiederholung

§ Der zu wiederholende Ausdruck steht zwischen { und } (geschweifte Klammer) (“curly braces”)

§ Kann 0, 1, … wiederholt werden

§ Immer daran denken: 0 Wiederholungen heisst – fehlt!

§ Hinweis

§ Option = 0 oder 1mal wiederholt

(11)

(i1)

(12)

Control forms (zum Kombinieren)

§ Aufreihung

§ Auswahl (Entscheidung)

§ Option, Wiederholung

(13)

EBNF Beispiel (i1)

(14)

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)

(15)

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

(16)

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

(17)

§ Genaue Uebereinstimmung: 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 Uebereinstimmung

§ Sonst: Symbol nicht legal, illegal

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

§ Beispiele (für initial t r g): rg nicht initial; tr nicht initial;

trgk nicht initial

(18)

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

(19)
(20)
(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)

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

(26)
(27)

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

(28)
(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.

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

Aequivalente EBNF Beschreibungen

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

äqui- valent

(33)

Aequivalente EBNF Beschreibungen

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

Noch eine andere Beschreibung

§ Aequivalent zu früherer Beschreibung?

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

§ Gilt auch die Umkehrung?

(36)

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

(37)
(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)
(44)
(45)

Diskussion

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

§ Beispiele

§ { }

§ { 1 }

§ { 2, -5, 18 }

§ Kann durch Tabelle (oder Ableitungsbaum) gezeigt werden

(46)

Diskussion

{ 2, -5, 18 }

§ Lemma: 2 ist eine integer

§ Lemma: -5 ist eine integer

§ Lemma: 18 ist eine integer

(47)

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 }

(48)

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 Uebereinstimmung mit Regel) Darstellung:

geordnet, von kleinster [links] nach grösster Zahl [rechts]

§ Die kanonische Darstellung kann nicht durch EBNF Regeln erzwungen werden

(49)

EBNF Beschreibungen

§ Erstellen Sie eine EBNF Beschreibung sodass Zahlen nicht mit einer Null anfangen (also 007 ist illegal, 7 ist legal).

(50)

zero 0

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

integer [ + | - ] nonzero { digit }

(51)

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:

(52)

Steuerwagen

(53)

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

(54)

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

(55)

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

§ A B C D als Graph:

§ [ A ] als Graph: § { A } als Graph:

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

Eine Programmiersprache sollte es möglichst einfach machen ein Programm zu schreiben. Eine Programmiersprache sollte es möglichst einfach machen, ein Programm

§ 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

§ Wenn eine Methode einen Parameter erwartet dann muss dieser auch übergeben werden. printPunkte(); // ERROR: parameter value

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

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