211a
<< <> >>

211

Die Programmiersprache Forth
home
BASE für die Dauer eines einzelnen Wortes verändern

HX DM BN

Leo: In Forth kann man mit verschiedenen Zahlensystemen arbeiten, indem man beispielsweise HEX oder DECIMAL eintippt. Nun habe ich aber auch schon gesehen, dass man mit einem Dollarzeichen, das vorn an eine Zahl geheftet wird, bewirken kann, dass diese Zahl als Hexadezimalzahl interpretiert wird, selbst wenn sich Forth gerade im dezimalen Zustand befindet. In deinem Forth geht das nicht, ich würde es aber für gar nicht so schlecht halten. Und eigentlich hätte ich diese Idee gern noch um eine Möglichkeit erweitert gesehen, so'n Dollarzeichen nicht nur Zahlen, sondern auch Worten, die Zahlen ausgeben, als führendes Zeichen voranzustellen. Aus $. und $U. und $.S würden dann, um nur ein paar Beispiele zu nennen, Varianten der ihre Zahlen dezimal ausgebenden Worte . und U. und .S werden. Ist das möglich, ohne dass man für alle derartigen Worte Extra-Definitionen anfertigen muss?
Theo: Tja, kaum dass du das Arbeiten in verschiedenen Zahlensystemen normal findest, und das ist es in Forth, schraubst du deine Ansprüche höher und strebst eigentlich eine Methode an, die die Eintipparbeit noch weiter reduziert. Lang lebe die Benutzerfreundlichkeit.
Leo: Du klingst nicht sehr enthusiastisch. Hast du was gegen die Idee?
Theo: Nein, eigentlich nicht. Ich denke schon, dass man das machen kann. Ein gewöhnlicher Forth-Interpreter liest ein Wort und sucht nach ihm in seinem Wörterbuch. Wenn er es findet, ist alles gut. Wenn er es aber nicht finden kann, schaut er nach, ob es nicht vielleicht eine Zahl ist. Wenn auch das nicht fruchtet, gibt er auf. Die Routine, die dafür verantwortlich ist, muss natürlich auch mit der Situation "Dollarzeichen vorn an einer Zahl" umgehen können. Wenn sie aber schon dieser Aufgabe gewachsen ist, kann man auch gleich dafür sorgen, dass sie, wenn sie ein solches $ antrifft, wieder erst nachschaut, ob ein bestehendes Wort daran festhängt, und dann, ob es sich um eine Zahl handelt.
Weißt du, ich bin nicht so sehr dafür, dass der Forth-Interpreter, der sehr einfach sein kann, durch solcherart nebensächlichen Krimskrams verdorben wird. Außerdem ist es ein Eingriff in ein bestehendes Forthsystem, wenn man eine solche Möglichkeit hinzufügen will. Dazu muss man die einzelnen Systemabhängigkeiten gut verstehen.
Leo: Geht es nicht einfacher, ohne Eingriff in den Interpreter?
Theo: Ja, das geht schon, wenn du mit einem separaten Wort anstelle eines an das nächste Wort angehefteten führenden Zeichens einverstanden bist. HX zum Beispiel:
HX 10  \ Lies die Eingabe als hex.
HX .S  \ Liefere hex als Ausgabe.
>>