помимо вычисления соответствующего значения текущий
FORTH DEFINITIONS VOCABULARY П VOCABULARY К П DEFINITIONS ( ДЕЙСТВИЯ С ПЕРЕМЕННЫМИ) : ЗНАЧ ( PFA->N:ЗНАЧ) @ FORTH ; : АДР ( PFA->A:АДР) FORTH ; К DEFINITIONS ( ДЕЙСТВИЯ С КОНСТАНТАМИ) : ЗНАЧ ( PFA->N:ЗНАЧ) @ FORTH ; : АДР ( PFA->) CR ." НЕДОПУСТИМОЕ ИСПОЛЬЗОВАНИЕ КОНСТАНТЫ " BODY> >NAME ID. ABORT ; FORTH DEFINITIONS : ЗНАЧ ( ->) ; : АДР ( ->) -1 ABORT" НЕДОПУСТИМЫЙ АДРЕС" ;
Заметим, что при исполнении слов
ЗНАЧ и
АДР в контекстах
П и
К помимо вычисления соответствующего значения текущий контекст переключается на
FORTH. Исполняющая часть определяющих слов
ПЕРЕМ и
КОНСТ теперь состоит в установке соответствующего контекста, при этом на стек кладется адрес поля параметров данной статьи:
: ПЕРЕМ ( ->) CREATE 0 , DOES> ( PFA->PFA) П ; : КОНСТ ( ->) CREATE BL WORD DROP ( ВЫБРАТЬ ЗНАК =) BL WORD NUMBER DROP ( N:ЗНАЧ) , DOES> ( PFA->PFA) К ;
Чтобы теперь при обработке выражения в левой части присваивания получать значение переменной или константы, надо слегка изменить определение слова
>ОПРЦ> (см. ) — включить в него исполнение операции
ЗНАЧ, которая идентифицируется динамически по текущему контексту.
: >ОПРЦ> ( N:ПРИОРИТЕТ->) >R " ЗНАЧ" FIND DROP EXECUTE BEGIN ОПРЦ@ R@ < NOT WHILE ОПРЦ> DROP ОПРЦ> ( CFA) EXECUTE REPEAT R> DROP ;
Если это определение исполняется сразу после переменной или константы (в контексте
П или
К), то оно преобразует адрес поля параметров соответствующей статьи, который находится в этот момент на вершине стека, в значение данной переменной или константы. Для всех других случаев (контекст
FORTH) преобразования стека не происходит. Именно по этой причине определения
ЗНАЧ в списках
П и
К по завершении их исполнения переключают текущий контекст на
FORTH, а в списке
FORTH присутствует определение
ЗНАЧ с пустым действием. Последнее обстоятельство гарантирует успешный поиск слова
ЗНАЧ в любом контексте, поэтому в приведенном определении проверка того, что поиск закончился успешно, опущена.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий