1 / 23

9. Syntaxdiagramme und Backus-Naur-Form (BNF)

Programmiersprachen häufig definiert durch kontextfreie Grammatiken in BNF mit gewissen Zusatzbedingungen. 9. Syntaxdiagramme und Backus-Naur-Form (BNF). BNF. statt. A -> w1 A -> w2 ... A -> wn. A -> w1 | w2 | ... | wn. A -> xz A -> xyz. A -> x(y)z. A -> xz A -> xBz B -> yB B -> y.

micah-hardy
Download Presentation

9. Syntaxdiagramme und Backus-Naur-Form (BNF)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmiersprachen häufig definiert durch kontextfreie Grammatiken in BNF mit gewissen Zusatzbedingungen 9. Syntaxdiagramme und Backus-Naur-Form (BNF) BNF statt A -> w1 A -> w2 ... A -> wn A -> w1 | w2 | ... | wn A -> xz A -> xyz A -> x(y)z A -> xz A -> xBz B -> yB B -> y A -> x{y}z

  2. Symbol Bedeutung Beispiel = ist äquivalent zu A = B + C + Sequenz (impliziert keine Ordnung) X = X1 + X2 + X3 [  ] Auswahl (entweder ... oder) A = [B | C] { } Wiederholung A = { B } M{ }N Wiederholung von M bis N A = 1 { B } 10 ( ) Option = 0 { }1 A = B + ( C ) * * Kommentar A = X + Y * Kommentar *

  3. While-Berechenbarkeit Ein While-Programm besteht aus folgenden Komponenten: Variablen: x0, x1, x2, ... Konstanten: 0, 1, 2, ... Trennsymbole: ; := Operationszeichen: + - ? Schlüsselwörter: WHILE DO END Syntax von While-Programmen, induktive Definition: 1. Eine Wertzuweisung der Form xi := xj + c oder xi := xj - c (c Konstante) ist ein While-Programm 2. Falls P1 und P2 While-Programme sind, so auch P1;P2 3. Falls P While-Programm ist, so ist auch WHILE xi ≠ 0 DO P END ein While-Programm 4. Nur die durch 1-3 beschiebenen Konstrukte sind While-Programme

  4. Beispiel Multiplikation: Eingabe: x1, x2, Ausgabe: x0 WHILE x1 ≠ 0 DO x3 := x2; WHILE x3 ≠ 0 DO x0 := x0 + 1; x3 := x3 - 1 END; x1 := x1 - 1 END

  5. Syntax von WHILE-Programmen in BNF <Programm> -> -> -> -> -> <Zuweisung> | <Programm>; <Programm> | WHILE <Test> DO <Programm> END <Zuweisung> <Variable> := <Variable> + <Konstante> | <Variable> := <Variable> - <Konstante> <Variable> x0 | x1 | x2 | ... <Konstante> 0 | 1 | 2 | ... <Variable> ≠ 0 <Test> Konvention: Variablen in < >-Klammern, alle anderen Symbole Terminalsymbole

  6. Die Kundendatei besteht aus keinem, einem oder beliebig vielen Kundeneinträgen. Der Kundeneintrag setzt sich zusammen aus der Personal-Nr., dem Namen, der Adresseund demUmsatz(Muß-Angaben). Optional können noch das Geburtsdatumund die Funktion(im Unternehmen) angegeben sein(Kann-Angaben). Bei derAdresse wird entweder die Straße und die Haus-Nr. oder die Postfachnummer angegeben, gefolgt vom optionalenLänderkennzeichen, PLZ, Ort und den optionalen Angaben Telefon und Fax.

  7. Als Teilnehmer zu nachfolgenden Seminaren wird angemeldet: Titel Vorname Name vom bis Veranstaltungs-Nr. Seminarbezeichnung Anmeldebestätigung und Rechnung erbeten an: Titel Vorname Name Firma Straße / Postfach LKZ PLZ ORT Telefon Seminaranmeldung

  8. Graphische Repräsentation kontextfreier Grammatiken. Pfeilrichtung gibt an, wie Diagramme zu durchlaufen sind. Alternative Durchläufe sind möglich. Rechtecke entsprechen Variablen, werden beim Durchlauf ersetzt durch Syntaxdiagramm gleichen Namens. Ovale geben jeweils produzierte Terminalzeichen an. Die Folge von Terminalzeichen, die bei einem vollständigen Durchlauf produziert wird, ist ein Element der erzeugten Sprache. Syntaxdiagramme Beispiel: X 0 Y 1 Z erzeugte Sprache: X0, Y0, Z0, X1, Y1, Z1, X00, Y00, Z00, X01, Y01, Z01, ...

  9. Syntaxdiagramme für Katzenbeispiel Satz: jagt Subjekt Objekt Subjekt: Hund der Adjektiv Katze die das Objekt: wie Subjekt Adjektiv: kleine bissige große

  10. Beschreibung von Programmiersprachen oft in Form von Syntaxdiagrammen Nicht in allen Fällen möglich bzw. praktisch (Kontextabhängigkeit) Oft werden auch Mischformen aus Syntaxdiagrammen und zusätzlichen Kontextbedingungen angegeben, etwa: Bemerkungen Buchstabe Bezeichner: Buchstabe Ziffer Kontextbedingungen: unzulässig als Bezeichner sind: BEGIN, END, WHILE, ...

  11. Ablaufsteuerung Zur Ausführung eines Algorithmus benötigt man verschiedene Arten von Kontrollstrukturen, v. a. - Sequenz - Selektion - Iteration  Sequenz, Selektion und Iteration genügen, um jeden Algorithmus auszudrücken !

  12. Sequenz (Folge von Anweisungen) • 1. Zu einem Zeitpunkt wird nur ein Schritt ausgeführt. • 2. Jeder Schritt wird genau einmal ausgeführt: keiner wird wiederholt, • keiner wird ausgelassen. • 3. Die Reihenfolge, in der die Schritte ausgeführt werden, ist die gleiche • Folge, in der sie niedergeschrieben sind (d. h. nacheinander). • 4. Mit der Beendigung des letzten Schrittes endet der gesamte Algorithmus. • Die Ausführung eines Algorithmus ist sehr starr, wenn nur die Sequenz als Kontrollstruktur eingesetzt wird.

  13. Selektion (Auswahl, bedingte Anweisung) a) Einfache Form IF Bedingung THEN Anweisung(en) b) Bedingte Anweisung mit Alternative (allgemeine Form): IF Bedingung THEN Anweisung 1 ELSE Anweisung 2 Die einfache Form ist ein Spezialfall der allgemeinen Form, bei der Anweisung 2 die leere Anweisung ist („tue nichts“)

  14. c) Mehrfachauswahl CASE Bedingung 1: Anweisung 1 Bedingung 2: Anweisung 2 ... Bedingung n: Anweisung n ELSE Anweisung n + 1 Die Bedingungen 1 bis n müssen sich gegenseitig ausschließen; d. h. es dürfen nicht zwei Bedingungen gleichzeitig erfüllt sein.

  15. Iteration (Wiederholung, Schleife) a) Solange-bis-Schleife Wiederholte Ausführung einer Anweisung (oder einer Folge von Anweisungen), bis eine Abbruchbedingung erfüllt ist. REPEAT Anweisung(en) UNTIL Bedingung {Abbruchbedingung}

  16. b) Solange-noch-Schleife • Die Anweisungen in der Schleife werden ausgeführt, solange die • Bedingung erfüllt ist: • WHILE Bedingung DO • Anweisung 1 • ... ... {Rumpf der Schleife} • Anweisung n • Anweisung n + 1 {nicht mehr in der Schleife} • Unterschied zur ersten Form: Die Bedingung wird vor der Ausführung des • Schleifenrumpfes geprüft. • Vorteilhaft, wenn damit gerechnet werden muß, daß in manchen Fällen bereits • beim erstmaligen Eintritt in die Schleife die Abbruchbedingung erfüllt ist, der • Schleifenrumpf also nicht ausgeführt werden soll. • Die beiden Formen der Iteration sind äquivalent, sie lassen sich (unter • Verwendung der bedingten Anweisung) ineinander überführen.

  17. Bedingung erfüllt nicht erfüllt Aktion 1 Aktion 2 Symbole für Struktogramme (1) Aktion Strukturblock Verzweigung Fallunterscheidung Fallauswahl 1 2 ... n Aktion 1 Aktion 2 ... Aktion n

  18. Symbole für Struktogramme 2 WHILE-Bedingung Solange-noch-Schleife Solange-bis-Schleife Aktion Aktion UNTIL-Bedingung

  19. Euklidischer Algorithmus (1) Struktogramm

  20. Darstellungsmittel für Programmablaufpläne (1) Aktion für Aktionen für Verzweigungen für Eingaben und Ausgaben N J Bedingung Eingabe X

  21. Darstellungsmittel für Programmablaufpläne (2) Übergangsstellen zwischen mehreren Diagrammen für Anfang und Ende Ablauflinie und Zusammenführung Unterprogramm A A Anfang Ende vollständige Aufstellung: Norm DIN 66 01 (Sinnbilder für Datenfluß- und Programmablaufpläne)

  22. Euklidischer Algorithmus (2) Programmablaufplan

  23. Euklidischer Algorithmus (3) Programmprotokoll ausgeführte Aktion

More Related