Hardware Reference
In-Depth Information
3.3.3 Texteingabe
Das Einlesen von Eingabedaten aus einer Datei ist komplizierter als die Aus-
gabe. Das in der Informatik übliche Modell dafür ist ein Band mit Zeichen, das
von einem Akzeptorautomaten abgeräumt wird. Abräumen bedeutet Lesen,
auf Zulässigkeit testen, wenn zulässig verarbeiten und den Lesezeiger weiter-
stellen, sonst Fehler signalisieren und Zeiger zurückstellen. Die Zeichenfolge
zur Darstellung einer vorzeichenfreien ganzen Zahl sei z.B. definiert als eine
Ziffer, gefolgt von beliebig vielen Ziffern und einem Trennzeichen
Zahl ) z f z g t
(z - Ziffer; t - Trennzeichen). Der zugehörige Akzeptorautomat räumt das
erste Zeichen ab. Wenn es eine Ziffer ist, räumt er, solange er weitere Ziffern
findet, auch diese ab und versucht danach ein Trennzeichen abzuräumen. Im
Erfolgsfall terminiert er mit einem Band, das bis zum Ende oder bis zum
nächsten Eingabewort abgeräumt ist, und einer gültigen Ausgabe. Falls das
erste Zeichen keine Ziffer oder das auf die Ziffern folgende Zeichen kein Trenn-
zeichen ist, terminiert er im Fehlerzustand, d.h. mit zurückgesetztem Zeiger
und ungültiger Ausgabe (Abb. 3.16). Die Werteberechnung erfolgt im Beispiel
rekursiv. Die erste Ziffer liefert den Ziffernwert und die weiteren erhöhen ihn
auf
w = Bw + z
(w - Wert; B - Basis des Zahlensystems; z - Ziffernwert).
Band Wert
...
135 58k...
erwartet
ja
ja
ja
z
z
z 135
z z ok
t
Start1
1
nein
nein
13
nein
err
z(nein)
t 135
Startzustand
Ziffererwartet
Endzustand
ok 135
z
z
z
Start2
5
Trennzeichenerwartet
t
58
zul¨assigesZeichen
keinzul¨assigesZeichen
Worterfolgreichabger¨aumt
Eingabefehler
z(nein)
nein
t(nein)
ok
err
Endzustand
err ung¨ultig
Abb. 3.16. Einlesen einer vorzeichenfreien ganzen Zahl mit einem Akzeptorauto-
maten
Die Eingabedatei kann fehlerhaft sein. Die Fehlersuche verlangt aussage-
kräftige Fehlermeldungen, aus denen hervorgeht, bei welchem Wert des Lese-
zeigers das unzulässige Zeichen erkannt wurde und welche Zeichen oder Sym-
bole an dieser Stelle hätten stehen müssen. Im Package »Tuc.Eingabe« ist der
Datentyp für das abzuräumende Band als Verbund definiert:
Search WWH ::




Custom Search