Язык Форт и его реализации

         

Литеры и строки, форматный вывод чисел - часть 2


Это слово снимает со стека число — количество литер (оно должно быть неотрицательно) и адрес начала строки (ее первого байта):

: TYPE ( A,N ---> ) ?DUP IF 0 DO DUP I + C@ EMIT LOOP THEN DROP ;

Если число литер равно нулю, то ничего не печатается.

Обратное действие — ввод строки литер — выполняет слово ЕХРЕСТ (ожидать), которое снимает со стека длину и адрес области памяти для размещения вводимых литер. Коды литер, последовательно вводимых с терминала, помещаются в указанную область до тех пор, пока не будет введено заданное число литер или не будет введена управляющая литера «возврат каретки» (код этой литеры в память не заносится). Фактическое число введенных литер сообщается в стандартной переменной SPAN (размер), эти литеры к тому же отображаются на терминале.

Ввиду его особой важности для кодирования пробела выделена специальная константа BL (от BLANK — пробел), которую для кода ASCII можно задать так: 32 CONSTANT BL. При исполнении слова BL на стеке остается код пробела. Чтобы вывести пробел на терминал, имеются следующие стандартные слова:

: SPACE ( ---> ) BL EMIT ; : SPACES ( N ---> ) ?DUP IF 0 DO SPACE LOOP THEN ;

Слово SPACE (пробел) выводит на терминал один пробел, а слово SPACES (пробелы) — несколько, снимая их количество со стека (это значение, как и длина строки в слове TYPE, должно быть неотрицательным).

Внутри определений через двоеточие можно использовать явно заданные тексты для вывода их на терминал. При исполнении слова ." (точка и кавычка), употребленного в контексте ." текст ", следующие за ним литеры до закрывающей кавычки исключительно печатаются на терминале. Пробел, отделяющий слово .", в число печатаемых литер не входит. Другое слово .( (точка и скобка) отличается от ." тем, что ограничителем текста является закрывающая правая скобка, и это слово можно использовать как внутри определений, так и вне их.

Помимо строки — поля байт, длина которого задается отдельно — язык Форт использует строки со счетчиком.


Содержание  Назад  Вперед