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



         

Интерпретация входного потока


Собственно работа форт-системы заключается в распознавании и исполнении слов-команд, которые программист вводит с терминала. Ввод осуществляется построчно: набрав нужный текст, программист нажимает специальную управляющую клавишу, сообщая тем самым о завершении ввода. Форт-система размещает введенный текст в специальном буфере для ввода с терминала, который располагается в адресном пространстве оперативной памяти. Адрес начала этого буфера дает стандартное слово TIB (сокращение от TEXT INPUT BUFFER — буфер для ввода текста), его длина хранится в стандартной переменной #TIB. Данный буфер представляет собой входной поток, из которого слово WORD выбирает слова. По исчерпании входного потока форт-система вводит в этот буфер новый текст, получаемый от программиста. При возникновении какой-либо ошибочной ситуации форт-система прекращает дальнейшую интерпретацию текущего содержимого этого буфера и, выдав соответствующее сообщение программисту, заполняет буфер новым текстом, который после этого вводит программист.

Альтернативой вводу текста с терминала является ввод из внешней памяти форт-системы. Переключением входного потока на внешнюю память и обратно на терминал управляет стандартная переменная BLK (сокращение от BLOCK — блок), значение которой проверяется каждый раз в слове WORD. Если это нуль, то в качестве входного потока служит буфер TIB, в противном случае это значение рассматривается как номер блока внешней памяти, который используется как входной поток (этот блок переносится в оперативную память словом BLOCK). Текущая позиция во входном потоке хранится в стандартной переменной >IN (от IN — вход) и в случае ввода с терминала изменяется в пределах от 0 до значения #TIB, а при вводе из внешней памяти — в диапазоне от 0 до 1024.

Обычно конец входного потока в оперативной памяти отмечается нулевым кодом (именно для этого в буферном пуле после памяти для данных блока резервируется еще одна ячейка). Слово WORD, «натыкаясь» на нулевой код, возвращает в качестве результата пустую строку с нулевым значением счетчика литер, при этом в список FORTH включается словарная статья для такого «пустого» слова.


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