Programmierkurs Java Teil Imperative Programmierung Unterrichtseinheit 3 Syntaxdiagramme

  • Slides: 15
Download presentation
Programmierkurs Java Teil Imperative Programmierung Unterrichtseinheit 3 Syntaxdiagramme Dr. Dietrich Boles Programmierkurs Java UE

Programmierkurs Java Teil Imperative Programmierung Unterrichtseinheit 3 Syntaxdiagramme Dr. Dietrich Boles Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 1

Gliederung Ø Compiler Ø Syntaxdiagramme Ø BNF und EBNF Ø Zusammenfassung Programmierkurs Java UE

Gliederung Ø Compiler Ø Syntaxdiagramme Ø BNF und EBNF Ø Zusammenfassung Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 2

Compiler Lexikalik: gültige Zeichen und Wörter der Sprache Syntax: korrekter Aufbau von Sätzen der

Compiler Lexikalik: gültige Zeichen und Wörter der Sprache Syntax: korrekter Aufbau von Sätzen der Sprache Semantik: Bedeutung von Sätzen der Sprachen Pragmatik: Einsatzbereich einer Sprache Quellprogramm Lexikalische Analyse (Scanner) Tokenfolge Ableitungsbaum Syntaktische Analyse (Parser) Programmierkurs Java UE 3 Zielprogramm Semantische Analyse/ Codegenerierung Syntaxdiagramme Dietrich Boles Seite 3

Compiler / Lexikalische Analyse Ø Entfernung von Trennzeichen und Kommentaren Ø Erkennung von Token

Compiler / Lexikalische Analyse Ø Entfernung von Trennzeichen und Kommentaren Ø Erkennung von Token (Zeichen, die bedeutungsmäßig zusammengehören): Ø Schlüsselwörter Ø Bezeichner Ø Symbole Ø Zeichenketten Ø. . . while (zahl >= 17) { zahl = zahl-1; } while ( zahl >= 17 ) { Java Programmierkurs Java UE 3 Syntaxdiagramme zahl = zahl 1 ; } Dietrich Boles Seite 4

Compiler / Syntaktische Analyse Ø Überführung einer Tokenfolge in Ableitungsbaum Ø Untersuchung auf syntaktische

Compiler / Syntaktische Analyse Ø Überführung einer Tokenfolge in Ableitungsbaum Ø Untersuchung auf syntaktische Korrektheit Ø Darstellung: Syntaxdiagramme, BNF Zuweisung Variable zahl = 3 + i Ausdruck = + zahl Programmierkurs Java UE 3 Term Konstante Variable 3 i Syntaxdiagramme Dietrich Boles Seite 5

Syntaxdiagramme Ø Technik zur grafischen Darstellung kontextfr. Grammatiken Ø Elemente: Ø Knoten Ø Ellipsen

Syntaxdiagramme Ø Technik zur grafischen Darstellung kontextfr. Grammatiken Ø Elemente: Ø Knoten Ø Ellipsen (Token, Terminale) Ø Rechtecke (Nichtterminale) Ø Kanten Ø knotenverbindende Pfeile Ø eintretender Pfeil (Eingangskante) Ø austretender Pfeil (Ausgangskante) Ø Interpretation: Durchläuft man ein Syntaxdiagramm von der Eingangs- zur Ausgangskante entlang den Pfeilen, dann ist die Folge der Knoteninhalte, die dabei "aufgesammelt" werden, aus dem Syntaxdiagramm ableitbar. Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 6

Syntaxdiagramme / Veranschaulichung Syntaktisch korrekt: • • Schlangen Delphine Schlangen Elephanten Pinguine Affen Delphine

Syntaxdiagramme / Veranschaulichung Syntaktisch korrekt: • • Schlangen Delphine Schlangen Elephanten Pinguine Affen Delphine Schlangen Elephanten Pinguine Delphine Syntaktisch nicht korrekt: • • Elephanten Delphine Schlangen Pinguine Schlangen Elephanten Affen Delphine Schlangen Pinguine Schlangen Delphine Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 7

Syntaxdiagramme / Definition: Ø Jedes Syntaxdiagramm (SD) besitzt eine Bezeichnung Ø Elemente eines Syntaxdiagramms

Syntaxdiagramme / Definition: Ø Jedes Syntaxdiagramm (SD) besitzt eine Bezeichnung Ø Elemente eines Syntaxdiagramms sind Knoten (Ellipsen, Rechtecke) und Kanten (Pfeile) Ø Rechtecke enthalten die Bezeichnung eines (anderen) Syntaxdiagramms Ø Ellipsen enthalten Token Ø in jeden Knoten führt genau ein Pfeil hinein Ø aus jedem Knoten führt genau ein Pfeil hinaus Ø Pfeile dürfen sich aufspalten bzw. zusammengezogen werden Ø jedes SD besitzt genau eine eintretende Kante (kein Ausgangsknoten) Ø jedes SD besitzt genau eine austretende Kante (kein Eingangsknoten) Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 8

Syntaxdiagramme / Beispiel 1 S a D b D c Syntaktisch korrekt oder nicht

Syntaxdiagramme / Beispiel 1 S a D b D c Syntaktisch korrekt oder nicht ? • • abababcccabab aba ccccccc Programmierkurs Java • • UE 3 ab. Dc bababac ababcdcd ABABABc Syntaxdiagramme Dietrich Boles Seite 9

Syntaxdiagramme / Beispiel 2 S S a b Syntaktisch korrekt oder nicht ? •

Syntaxdiagramme / Beispiel 2 S S a b Syntaktisch korrekt oder nicht ? • • • L (S) = ? a. Sb aaabbbbbbb aaabbbaaa Programmierkurs Java = { anbn|n N, n>0 } UE 3 Syntaxdiagramme Dietrich Boles Seite 10

Syntaxdiagramme / Beispiel 3 L = {a (b 2 c)n di } | n

Syntaxdiagramme / Beispiel 3 L = {a (b 2 c)n di } | n ist natürliche Zahl oder Null; i ist natürliche Zahl} L a b Programmierkurs Java b UE 3 c Syntaxdiagramme d Dietrich Boles Seite 11

BNF und EBNF Backus-Naur-Form (BNF): Ø Ø Ø Ø Technik zur textuellen Darstellung kontextfreier

BNF und EBNF Backus-Naur-Form (BNF): Ø Ø Ø Ø Technik zur textuellen Darstellung kontextfreier Grammatiken Verwendung von Ersetzungsregeln (Produktionen) besitzen linke und rechte Seite linke Seite: Nichtterminalsymbol: durch < > gekennzeichnet Alternativen: durch | gekennzeichnet (Epsilon): leere Alternative EBNF: Ø Erweiterung der BNF (Abkürzungsmöglichkeiten) Ø [. . . ] bedeutet: Symbole in Klammern können auch wegfallen Ø {. . . } bedeutet: Symbole in Klammern können beliebig oft (auch Null mal) wiederholt werden Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 12

BNF / Beispiel BNF: <Zoo> : : = "Schlangen" <Säugetiere-und-mehr> : : = <Säugetiere>

BNF / Beispiel BNF: <Zoo> : : = "Schlangen" <Säugetiere-und-mehr> : : = <Säugetiere> "Pinguine" <Säugetiere-und-mehr> | <Säugetiere> "Delphine" <Säugetiere> : : = "Elephanten" | "Affen" | Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 13

EBNF / Beispiel EBNF: <Zoo> : : = "Schlangen" <Säugetiere> {"Pinguine" <Säugetiere>} "Delphine" <Säugetiere>

EBNF / Beispiel EBNF: <Zoo> : : = "Schlangen" <Säugetiere> {"Pinguine" <Säugetiere>} "Delphine" <Säugetiere> : : = "Elephanten" | "Affen" | Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 14

Zusammenfassung Ø Compiler: überprüft unter anderem, ob ein Programm bezogen auf eine bestimmte Programmiersprache

Zusammenfassung Ø Compiler: überprüft unter anderem, ob ein Programm bezogen auf eine bestimmte Programmiersprache syntaktisch korrekt ist Ø Syntaxdiagramme: graphische Notation zur Definition der Syntax einer Programmiersprache Ø BNF/EBNF: textuelle Notation zur Definition der Syntax einer Programmiersprache Programmierkurs Java UE 3 Syntaxdiagramme Dietrich Boles Seite 15