BEGIN CONVERT Преобразование до первого
BEGIN CONVERT Преобразование до первого символа, не являющегося цифрой DUP C@ DUP ASCII : = SWAP ASCII . ASCII / 1+ Это запятая, дефис, точка или слэш? WITHIN OR WHILE 0 DPL ! REPEATE Если да, то переустановить DPL и продолжать -ROT R> IF DNEGATE THEN Перемещение d в вершину. Если значение в стеке возвратов указывает минус, то число делается отрицательным. ROT С@ BL = ; Является ли последний, непреобраэованный, символ пробелом, как это и должно быть?
: NUMBER ( адр -- d) NUMBER? NOT ABORT" ?" ; Если преобразование завершилось неудачей, то аварийный выход посредством ABORT.
В приведенном определении учитывается, что
CONVERT вычитает из
DPL по единице при обработке каждой цифры до тех пор, пока значение переменной не станет равным -1. Кроме того, в определении используется слово
WITHIN, аналогичное слову ВНУТРИ (см. упражнение к гл. 4).
В качестве «истины» принято арифметическое значение -1, как это определено Стандартом-83. Для более ранних систем, где значением истины является единица, в строке 4 нужно заменить «-» на «+».
В Форте число, вводимое без знаков пунктуации, заносится в стек как число одинарной длины. При рассмотренном здесь определении слова
NUMBER текстовый интерпретатор должен обращаться к нему примерно так: ... NUMBER DPL @ -1 = IF DROP THEN ...
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий