Редактирование: STATE
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''STATE''' (состояние) — стандартная переменная [[Каллисто]]. Переменная, хранящая состояние [[INTERPRET|текстового интерпретатора]]. «Истина» (ненулевое значение) означает состояние компиляции, [[FALSE|«ложь» (ноль)]] — | '''STATE''' (состояние) — стандартная переменная [[Каллисто]]. Переменная, хранящая состояние [[INTERPRET|текстового интерпретатора]]. «Истина» (ненулевое значение) означает состояние компиляции, [[FALSE|«ложь» (ноль)]] — исполнения. | ||
STATE ( −− a ) Переменная, состояние текстового интерпретатора. | STATE ( −− a ) Переменная, состояние текстового интерпретатора. | ||
Слово STATE кладёт на стек a — адрес [[Ячейка (Каллисто)|ячейки]], содержащей текущее состояние [[INTERPRET|текстового интерпретатора]]. Значение | Слово STATE кладёт на стек a — адрес [[Ячейка (Каллисто)|ячейки]], содержащей текущее состояние [[INTERPRET|текстового интерпретатора]]. Значение ноль («ложь») означает состояние исполнения — [[INTERPRET|текстовый интерпретатор]] [[EXECUTE|исполняет]] слова сразу же после их нахождения в [[Словарь|словаре]]. | ||
В [[Каллисто]] значение 128 (не ноль) означает | В [[Каллисто]] значение 128 (не ноль) означает состояние компиляции. В состоянии компиляции [[INTERPRET|текстовый интерпретатор]] [[Слово ,|компилирует]] (записывает в [[словарь]]) [[xt]] найденных слов. Адресный интерпретатор исполнит эти слова позже, когда потребуется. | ||
Обращаться к STATE самостоятельно не рекомендуется. Для переключения в | Обращаться к STATE самостоятельно не рекомендуется. Для переключения в состояние исполнения существует слово [[Слово [|[]], а в состояние компиляции [[INTERPRET|текстовый интерпретатор]] переключает слово [[Слово ]|]]]. Это два удобных, стандартных слова. Они устоялись, широко известны и переносимы на всевозможные варианты Форта. | ||
== Ввод слова STATE == | == Ввод слова STATE == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 2|{{Серая клавиша|2}}]] {{ШГ←}} [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | ||
== STATE в стандарте ANS Forth == | == STATE в стандарте ANS Forth == | ||
Строка 76: | Строка 76: | ||
Слово STATE отличало компиляцию от исполнения. Во время компиляции счётчик и первые три символа слова компилировались для последующего исполнения. | Слово STATE отличало компиляцию от исполнения. Во время компиляции счётчик и первые три символа слова компилировались для последующего исполнения. | ||
Устоявшееся слово STATE присутствует в ядре всех стандартов (''англ.'' CORE) со времён fig-Форта до | Устоявшееся слово STATE присутствует в ядре всех стандартов (''англ.'' CORE) со времён fig-Форта до готовящегося стандарта Форт-2012. Хотя для хранения состояния [[INTERPRET|текстового интерпретатора]] достаточно одного байта, [[Каллисто]] идёт навстречу стандарту и отводит на эту переменную целую [[Ячейка (Каллисто)|ячейку]]. | ||
Все реализации Форта сходятся на том, что нулевое значение STATE означает исполнение — [[EXECUTE|выполнения]] слов, найденных в [[Словарь|словаре]]. Какое именно ненулевое значение STATE означает компиляцию, стандарт не задаёт и оно разнится от одной реализации Форта к другой. | Все реализации Форта сходятся на том, что нулевое значение STATE означает исполнение — [[EXECUTE|выполнения]] слов, найденных в [[Словарь|словаре]]. Какое именно ненулевое значение STATE означает компиляцию, стандарт не задаёт и оно разнится от одной реализации Форта к другой. | ||
Строка 102: | Строка 102: | ||
== Реализация == | == Реализация == | ||
Описание и определение переменной STATE в ядре ФОРТ-ЕС: | Описание и определение переменной STATE в ядре ФОРТ-ЕС: | ||
<PRE> | <PRE> | ||
Строка 143: | Строка 120: | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|STATE|STATE}} | * {{Исходник|STATE|STATE}} | ||
* См. слова | * См. слова [[Слово [|[]] [[Слово ]|]]] | ||
* См. также слова [[?EXEC]] и [[?COMP]] | * См. также слова [[?EXEC]] и [[?COMP]] | ||
* [http://www.complang.tuwien.ac.at/anton/euroforth/ef98/ertl98.pdf state — Why it is Evil and How to Exorcise it, by M. Anton Ertl, pdf] ''(англ.)'' — материал euroFORTH '98 | * [http://www.complang.tuwien.ac.at/anton/euroforth/ef98/ertl98.pdf state — Why it is Evil and How to Exorcise it, by M. Anton Ertl, pdf] ''(англ.)'' — материал euroFORTH '98 | ||
Строка 158: | Строка 135: | ||
[[Категория:Переменные USER]] | [[Категория:Переменные USER]] | ||
[[Категория:Встроенные переменные Каллисто]] | [[Категория:Встроенные переменные Каллисто]] | ||