Gleitkommazahlen in Python

Gleitkommazahlen - korrekt / nicht korrekt dargestellt

Gleitkommazahlen kann man in Python auf vielerelei Weisen darstellen. Man kann dabei aber auch Fehler machen.

korrekt nicht korrekt
2.0
002.0
2.200
2.
.2
2e10
.2e01
2e-1
2e+1
2E1
e10
2e1.0
.e2
2.2.2






Die Sprache der Python-Gleitkommazahlen

Die Sprache der Python-Gleitkommazahlen lässt sich wie folgt mit Syntaxdiagrammen präzise beschreiben.

floatnumber:

Syntaxdiagramm

pointfloat:

Syntaxdiagramm

exponentfloat:

Syntaxdiagramm

intpart:

Syntaxdiagramm

fraction:

Syntaxdiagramm

exponent:

Syntaxdiagramm

digit:

Syntaxdiagramm

Passend zu diesen Syntaxdiagrammen kann man die Sprache der Python-Gleitkommazahlen mit einer Grammatik präzisieren.

Grammatikregeln - in EBNF Grammatikregeln - als Produktionen
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"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
digit -> "0"
digit -> "1"
digit -> "2"
digit -> "3"
digit -> "4"
digit -> "5"
digit -> "6"
digit -> "7"
digit -> "8"
digit -> "9"

Spracherkennung mit Hilfe von Produktionen

Wenn man mit dem Startsymbol beginnt, dann kann man durch einen sukzessiven Ersetzungsprozess jede Python-Gleitkommazahl mit den Produktionen der Grammatik ableiten.

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

Aufgabe 1

Zeige entsprechend, dass die Zeichenkette 21. mit den Ersetzungsregeln erzeugt werden kann.

X

Fehler melden

X

Suche