Fachkonzept - Syntaxdiagramm

Beispiel: Rechenausdrücke

Rechenausdrücke wie z. B. x*(y+2) oder (2*x+3*y)*(4*y-z) sind sprachliche Ausdrücke, in denen Zahlen, Variablen, Rechenzeichen und Klammern vorkommen können und die nach bestimmten Regeln gebildet werden.

Die Sprache der Rechenausdrücke kann man formal wie folgt beschreiben: Der Sprache der Rechenausdrücke liegt das Alphabet

Σ = {0, 1, ..., 9, x, y, z, +, -, *, /, (, )}

zu Grunde. Über diesem Alphabet lassen sich eine Vielzahl von Wörtern bilden, z. B. (), x++ oder 2*x+3. Die Sprache LRA der korekt gebildeten Rechenausdrücke ist eine bestimmte Teilmenge der Gesamtheit Σ* aller Wörter über Σ:

LRA = {0, 1, ..., x, y, z, ..., x+0, x+1, ...}

Welche Wörter über Σ zu LRA gehören, ist einer Mengendarstellung mit ... nicht genau zu entnehmen.

Eine präzise und konstruktive Beschreibung der Sprache LRA kann man z.B. mit Hilfe von Syntaxdiagrammen erstellen.

Ausdruck:

Syntaxdiagramm

Summand:

Syntaxdiagramm

Faktor:

Syntaxdiagramm

Variable:

Syntaxdiagramm

Zahl:

Syntaxdiagramm

Ziffer:

Syntaxdiagramm

Jeder Weg durch diese Diagramme - beginnend im Diagramm Ausdruck - liefert einen korrekt gebildeten Rechenausdruck:

Ausdruck ->
Summand + Summand ->
Faktor + Summand ->
Variable + Summand ->
x + Summand ->
x + Faktor * Faktor ->
x + Zahl * Faktor ->
x + Ziffer Fiffer * Faktor ->
x + 2 Ziffer * Faktor ->
x + 2 0 * Faktor ->
x + 2 0 * Variable ->
x + 2 0 * y

Dabei dürfen nur noch die Symbole in den abgerundeten Kästen vorkommen. Symbole in eckigen Kästen stehen für Teilwege, die in separaten Diagrammen festgelegt sind. Diese müssen passend zu den entsprechenden Diagrammen ersetzt werden.

Bei der Ableitung eines Weges wird eine Symbolfolge schrittweise umgeformt. Wir starten mit dem Symbol Ausdruck. Das Diagramm Ausdruck legt fest, wie dieses Symbol ersetzt werden kann. Wir wählen einen Weg, der zur Symbolfolge Summand + Summand führt. Das erste Symbol Summand lässt sich jetzt mit dem entsprechenden Diagramm Summand ersetzen. Wir wählen hier einen Weg, der dieses Symbol durch das Symbol Faktor ersetzt. Es ergibt sich die neue Symbolfolge Faktor + Summand, usw.. Nach einer Reihe weiterer Umformungen erhält man schließlich die Symbolfolge x + 2 0 * y bzw. das Wort x+20*y.

Umgekehrt lässt sich auch jeder korrekt gebildete Rechenausdruck durch einen Weg durch die Diagramme erzeugen. Für den Rechenausdruck (x+y)*(x-y) könnte man folgende Wegbeschreibung benutzen:

Ausdruck ->
Summand ->
Faktor * Faktor ->
( Ausdruck ) * Faktor ->
( Summand + Summand ) * Faktor ->
( Faktor + Summand ) * Faktor ->
( Variable + Summand ) * Faktor ->
( x + Summand ) * Faktor ->
( x + Faktor ) * Faktor ->
( x + Variable ) * Faktor ->
( x + y ) * Faktor ->
( x + y ) * ( Ausdruck ) ->
( x + y ) * ( Summand - Summand ) ->
( x + y ) * ( Faktor - Summand ) ->
( x + y ) * ( Variable - Summand ) ->
( x + y ) * ( x - Summand ) ->
( x + y ) * ( x - Faktor ) ->
( x + y ) * ( x - Variable ) ->
( x + y ) * ( x - y )

Aufbau von Syntaxdiagrammen

Im Folgenden soll das Fachkonzept "Syntaxdiagramm" präzisiert werden.

Syntaxdiagramme dienen dazu, die Syntax einer Sprache präzise zu beschreiben. Syntaxdiagramme bestehen aus Terminalsymbolen, Nichtterminalsymbolen und Verbindungspfeilen.

Terminalsymbole sind Symbole des Alphabets der Sprache, die in Diagrammen durch abgerundete Rahmen zu erkennen sind.

Nichtterminalsymbole sind Hilfssymbole, die in Diagrammen durch rechteckige Rahmen zu erkennen sind. Nichtterminalsymbole stehen jeweils für eigene Diagramme.

Im Beispiel oben sind Ausdruck, Summand, Faktor, Variable, Zahl, Ziffer die benutzten Nichtterminalsymbole und 0, 1, ..., 9, x, y, z, +, -, *, /, (, ) die Terminalsymbole.

Mit Hilfe von Syntaxdiagrammen lassen sich Wörter über dem Alphabet der Terminalsymbole ableiten. Eine Ableitung besteht dabei aus einer Folge von Umformungen einer Symbolfolge entlang der Wege durch die Syntaxdiagramme mit dem Ziel, die Nichtterminalsymbole letztlich alle durch Terminalsymbole zu ersetzen. Zwei solche Herleitungen sind oben im Beispiel dargestellt.

Die Verbindung von Terminal- und Nichtterminalsymbolen mit Hilfe von Pfeilen lässt folgende Konstruktionsmuster erkennen:

Sequenz:

A

Syntaxdiagramm

Alternative:

A

Syntaxdiagramm

Iteration:

A

Syntaxdiagramm

Rekursion:

A

Syntaxdiagramm
X

Fehler melden

X

Suche