Редактирование: BEGIN
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''BEGIN''' (начать, начало) — стандартное слово [[Каллисто]]. Начать цикл. | '''BEGIN''' (начать, начало) — стандартное слово [[Каллисто]]. Начать цикл. | ||
BEGIN ( −− ) Отметить начало циклов BEGIN. | BEGIN ( −− ) Отметить начало циклов BEGIN. | ||
Слово BEGIN озаглавливает один из трёх циклов: [[Цикл BEGIN-WHILE-REPEAT|BEGIN…WHILE…REPEAT]], [[Цикл BEGIN-UNTIL|BEGIN…UNTIL]] или «бесконечный» цикл BEGIN…[[AGAIN]]: | |||
BEGIN условие WHILE тело-цикла REPEAT | BEGIN условие WHILE тело-цикла REPEAT | ||
BEGIN тело-цикла условие UNTIL | BEGIN тело-цикла условие UNTIL | ||
Строка 10: | Строка 10: | ||
== Ввод слова BEGIN == | == Ввод слова BEGIN == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша БП|{{Чёрная клавиша|БП}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша БП|{{Чёрная клавиша|БП}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]] | ||
== Детали реализации == | |||
Слово BEGIN начинает свою работу с того, что с помощью [[?COMP]] убеждается — [[INTERPRET|текстовый интерпретатор]] находится в [[Слово ]|состоянии компиляции]]. Если нет, слово [[?COMP]] вызывает [[Авост приложения|авост]] с сообщением об ошибке №17. | |||
Само слово BEGIN ничего не компилирует в [[шитый код]]. Оно лишь [[⟨MARK|запоминает в стеке текущий адрес]], чтобы в дальнейшем скомпилировать на него [[?BRANCH|условный]] (цикл BEGIN…[[UNTIL]]) или [[BRANCH|безусловный]] (циклы BEGIN…[[AGAIN]] и [[Цикл BEGIN-WHILE-REPEAT|BEGIN…WHILE…REPEAT]]) переход. | |||
== BEGIN в стандарте ANS Forth == | == BEGIN в стандарте ANS Forth == | ||
Строка 80: | Строка 85: | ||
== Реализация == | == Реализация == | ||
Юрий Семёнов приводит следующее определение слова BEGIN (стр. 64): | Юрий Семёнов приводит следующее определение слова BEGIN (стр. 64): | ||
: BEGIN ?COMP HERE 1 ; IMMEDIATE | : BEGIN ?COMP HERE 1 ; IMMEDIATE | ||
Строка 143: | Строка 117: | ||
* {{Исходник|BEGIN|BEGIN}} | * {{Исходник|BEGIN|BEGIN}} | ||
* См. слова [[WHILE]] и [[REPEAT]], [[UNTIL]] и [[AGAIN]] | * См. слова [[WHILE]] и [[REPEAT]], [[UNTIL]] и [[AGAIN]] | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0760 BEGIN] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0760 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0760 BEGIN] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0760 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http://forth-standard.org/standard/core/BEGIN BEGIN] и [http://forth-standard.org/standard/rationale#rat:core:BEGIN комментарий к нему] в черновике Forth 200x ''(англ.)'' | * Слово [http://forth-standard.org/standard/core/BEGIN BEGIN] и [http://forth-standard.org/standard/rationale#rat:core:BEGIN комментарий к нему] в черновике Forth 200x ''(англ.)'' |