Grammatikregeln als Ersetzungsregeln

Wege durch Syntaxdiagramme

Die Syntaxdiagramme für Gleitkommazahlen können als Fahrpläne zur Erzeugung von Gleitkommazahlen gedeutet werden.

floatnumber:

Syntaxdiagramm

pointfloat:

Syntaxdiagramm

exponentfloat:

Syntaxdiagramm

intpart:

Syntaxdiagramm

fraction:

Syntaxdiagramm

exponent:

Syntaxdiagramm

digit:

Syntaxdiagramm

Jeder Weg durch diese Diagramme - beginnend im Diagramm floatnumber - liefert eine korrekt gebildete Gleitkommazahl:

floatnumber ->
pointfloat ->
fraction ->
. digit digit ->
. 1 digit ->
. 1 4

Wenn es einem (wie im Fall .14) gelingt, ein Wort mit einem Weg durch die gegebenen Diagramme zu erzeugen, dann stellt das Wort eine korrekt gebildete Gleitkommazahl dar.

Deutung von Grammatikregeln

Die oben gezeigten Syntaxdiagramme sind Veranschaulichungen für die folgenden Grammatikregeln:

...
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
intpart ::= digit+
fraction ::= "." digit+
exponent ::= ("e" | "E") ["+" | "-"] digit+
digit ::= "0"..."9"
...

Die Grammatikregeln können als Abkürzungen für Ersetzungsregeln gedeutet werden:

Grammatikregeln - in EBNF Ersetzungsregeln
floatnumber ::= pointfloat | exponentfloat
floatnumber -> pointfloat
floatnumber -> exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
pointfloat -> fraction
pointfloat -> intpart fraction
pointfloat -> intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
exponentfloat -> intpart exponent
exponentfloat -> pointfloat exponent
intpart ::= digit+
intpart -> digit
intpart -> digit intpart
fraction ::= "." digit+
fraction -> "." intpart
exponent ::= ("e" | "E") ["+" | "-"] digit+
exponent -> "e" intpart
exponent -> "E" intpart
exponent -> "e" "+" intpart
exponent -> "E" "+" intpart
exponent -> "e" "-" intpart
exponent -> "E" "-" intpart
digit ::= "0"..."9"
digit -> "0"
digit -> "1"
digit -> "2"
digit -> "3"
digit -> "4"
digit -> "5"
digit -> "6"
digit -> "7"
digit -> "8"
digit -> "9"

Wenn man mit dem "richtigen" Symbol beginnt, dann kann man durch einen sukzessiven Ersetzungsprozess die Symbolfolge zur Darstellung einer gewünschten Gleitkommazahl ableiten.

floatnumber ->
pointfloat ->
fraction ->
"." intpart ->
"." digit intpart ->
"." digit digit ->
"." "1" digit ->
"." "1" "4"

Aufgabe 1

Zeige entsprechend, dass die Zeichenkette 2.E-1 mit den Ersetzungsregeln erzeugt werden kann.

X

Fehler melden

X

Suche