• Keine Ergebnisse gefunden

252-0027 Einführung in die Programmierung I EBNF

N/A
N/A
Protected

Academic year: 2022

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

Copied!
49
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung I

EBNF

(2)

Ü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

(3)

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

(4)

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

(5)

Control forms (zum Kombinieren)

!  Aufreihung

!  Auswahl

!  Op=on

!  Wiederholung

(6)

EBNF Beispiel

(7)
(8)

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

(9)

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)

(10)

!  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

(11)

!  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

(12)

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

(13)
(14)

Mehr Beispiele

!  1’249

!  A15

!  345-

(15)

Tabellen

!  Formaler als Umgangssprache

!  Kompakter

!  1. Zeile: Name der EBNF Regel, mit der das Symbol übereins=mmen soll

!  Letzte Zeile: Symbol

(16)

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

(17)
(18)

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

(19)
(20)
(21)

Ableitungsbaum für 28 integer

[ + | - ] digit { digit }

2 digit

8

Eine Op@on die nicht genommen wurde

Ableitungsbaum Versuch für A15 integer

(22)

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 {

(23)

Aequivalente EBNF Beschreibungen

!  Aequivalent: gleichwer=g (sind immer gleich – in einem Kontext)

äqui- valent

(24)

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

(25)

Andere EBNF Beschreibung für integer

(26)

Vereinfachte Beschreibung

(27)

Vereinfachte Beschreibung

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

!  Gilt auch die Umkehrung?

!  Nein: + ist jetzt legal

(28)

Zurück zu integer

!  Welche dieser EBNF Beschreibungen ist äquivalent zur (früheren) Beschreibung (auf Slide 6)?

!  Beide (A und B)

A B

(29)

Syntax und Seman=k

!  Syntax: Form

!  Seman=k (“seman=cs”): Bedeutung (“meaning”)

!  Syntax legt nur die Form fest.

(30)

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?

(31)

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”

(32)

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

(33)

EBNF Beschreibung integer_set

!  Mengen von Zahlen

!  { Anfang einer Beschreibung, } Ende

!  Zwischen { und } keine oder mehr Zahlen, durch Komma getrennt

(34)
(35)

Diskussion

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

!  Beispiele

!  { }

!  { 1 }

!  { 2, -5, 18 }

(36)

Diskussion

{ 2, -5, 18 }

!  Lemma: 2 ist eine integer

!  Lemma: -5 ist eine integer

!  Lemma: 18 ist eine integer

(37)

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)

(38)

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

(39)

EBNF Beschreibungen

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

(40)

zero 0

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

integer [ + | - ] nonzero { digit }

(41)

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)

(42)

Steuerwagen

(43)

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

(44)

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

(45)

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:

(46)

!  A | B | C | D als Graph

(47)

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

(48)

Beispiel

(49)

Subs=tu=on

!  Können einen Syntax Graphen in einen

anderen einsetzen

!  “interne” Namen verschwinden

Referenzen

ÄHNLICHE DOKUMENTE

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

§ Schiedsrichter entscheidet ob das Symbol legal ist oder nicht (für diese EBNF Beschreibung)2. § Symbol legal gemäss einer Regel: alle Buchstaben des Symbols stimmen mit den

Eine Programmiersprache sollte es möglichst einfach machen, ein Programm zu lesen. Was ist

§ main: Java Methode (Java Code den wir ausführen können)..

§ Beispiel: Ein Programm soll Zahlen einlesen bis der Benutzer eine 0 eingibt; dann soll die Summe aller eingegebenen Zahlen ausgegeben werden.. § Beispiel: Ein Programm soll

!  1.) method2 wird in Snow deklariert – “treatPaVent” (Arzt Methode) ist nicht in Angestellte deklariert und daher.. unbekannt. !  2.) Der aktuelle Typ eines

§ Wenn eine Klasse behauptet, eine Shape (Form) zu sein, aber dann nicht die Methoden area und perimeter implementiert, dann kann sie nicht übersetzt werden. §

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