Язык программирования Форт


Глава 10. Хранение программ и данных - часть 28


Если ввести ADDFILE PARSELINE то первые 64 символа файла будут подвергнуты разбору, т.е. разделены на слова-строки, между которыми в качестве разделителя стоит пробел, и выведены на экран. Главные различия между словами PARSIT и PARSELINE состоят в том, что в данном случае перед словом указывается не номер блока, а адрес и, кроме того, вместо конкретного кода 32 мы применили более общее DELIMITER и для выполнения разделения использовалось пространство в буфере ввода.

Теперь вам предстоит определить некоторые слова, которые являются полными аналогами слов из упражнений предыдущей серии (мы даже сохраним их имена), но они должны работать не с блоками, а с файлами.

Упражнения

1. Определите слово GETWOBD, которое будет выделять только одно слово-строку из файла и запоминать его в форме счетной строки в PAD, возвращая а стек адрес PAD. В стеке должны находиться адрес файла и смещение первого байта в файле. Тогда после ввода ADDFILE 8 GETWORD COUNT TYPE в PAD будет перемещена из файла и запомнена счетная строка символов ASCII* начинающаяся с байта номер 8 и заканчивающаяся пробелом. После этого выделенное слово-строка должно быть выведено на экран. Для распознавания конца слова-строки нужно использовать переменную DELIMITER. 2. Определите переменную POSITION, в которой должна быть записана позиция байта в файле, начиная с которой нужно произвести разбор текста и выделение слов-строк. Теперь определите слово FILEWOKD, которое должно выполнять разбор текста в файле, начиная с места, на которое указывает переменная POSITION. Например, последовательность операторов 8 POSITION ! ADDFILE FILEWORD COUNT TYPE должна приводить к тому же результату, как в примере из упражнения 1. Кроме того, слово FILEWORD должно изменять значение в POSITION так, чтобы оно указывало на байт, следующий после байта-разделителя, стоящего в конце выделенного слова-строки. Таким образом, если повторно будет исполняться ADDFILE FILEWORD COUNT TYPE то мы увидим последовательные слова строки. 3. Определите слово FILENUMBEK, используя FILEWORD, которое должно брать из файла число, представленное последовательностью кодов ASCII, и помещать его как число в стек.


- Начало -  - Назад -  - Вперед -