BEGIN: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 28: | Строка 28: | ||
или | или | ||
: X ... BEGIN ... test WHILE ... REPEAT ; | : X ... BEGIN ... test WHILE ... REPEAT ; | ||
== BEGIN в предыдущем стандарте Forth-83 (англ.) == | == BEGIN в предыдущем стандарте Forth-83 (англ.) == | ||
Строка 44: | Строка 43: | ||
corresponding UNTIL or WHILE . See: "9.9 Control | corresponding UNTIL or WHILE . See: "9.9 Control | ||
Structures" | Structures" | ||
== BEGIN в стандарте Forth-79 (англ.) == | == BEGIN в стандарте Forth-79 (англ.) == | ||
Строка 57: | Строка 55: | ||
when either loop is finished. flag is always dropped after | when either loop is finished. flag is always dropped after | ||
being tested. | being tested. | ||
== BEGIN в fig-FORTH Release 1 glossary, май 1979 (англ.) == | == BEGIN в fig-FORTH Release 1 glossary, май 1979 (англ.) == | ||
Строка 73: | Строка 70: | ||
At compile time BEGIN leaves its return address and n for compiler | At compile time BEGIN leaves its return address and n for compiler | ||
error checking. | error checking. | ||
== Реализация BEGIN == | == Реализация BEGIN == | ||
Строка 94: | Строка 90: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Слова с признаком IMMEDIATE]] | |||
[[Категория:Структуры управления Каллисто]] | [[Категория:Структуры управления Каллисто]] | ||
[[Категория:Слова Каллисто без стековых диаграмм]] | [[Категория:Слова Каллисто без стековых диаграмм]] |
Версия от 01:51, 20 марта 2016
BEGIN (начать, начало) — стандартное слово Каллисто.
Начало цикла — BEGIN…WHILE…REPEAT, BEGIN…UNTIL или BEGIN…AGAIN.
Главное назначение оператора BEGIN (при компиляции) — запись в стек текущего значения указателя HERE, которое использует компилятор, чтобы сформировать правильный адрес ветвления при обработке оператора UNTIL, REPEAT или AGAIN.
Ввод слова BEGIN
В режиме ЛАТ последовательно нажмите клавиши В/О ИП БП 7 4
BEGIN в стандарте ANS Forth
6.1.0760 BEGIN CORE Интерпретация: Семантика интерпретации для этого слова не определена.
Компиляция: ( C: -- dest ) Помещает адрес следующей ячейки для передачи управления, dest, на стек потока-управления. Добавляет семантику времени-выполнения, данную ниже к текущему определению.
Время-выполнения: ( -- ) Продолжает выполнение.
См.: 3.2.3.2 Стек потока-управления, 6.1.2140 REPEAT, 6.1.2390 UNTIL, 6.1.2430 WHILE.
A.6.1.0760 BEGIN Типичное использование: : X ... BEGIN ... test UNTIL ; или : X ... BEGIN ... test WHILE ... REPEAT ;
BEGIN в предыдущем стандарте Forth-83 (англ.)
BEGIN -- C,I,79 -- sys (compiling) Used in the form: BEGIN ... flag UNTIL or BEGIN ... flag WHILE ... REPEAT BEGIN marks the start of a word sequence for repetitive execution. A BEGIN-UNTIL loop will be repeated until flag is true. A BEGIN-WHILE-REPEAT will be repeated until flag is false. The words after UNTIL or REPEAT will be executed when either loop is finished. sys is balanced with its corresponding UNTIL or WHILE . See: "9.9 Control Structures"
BEGIN в стандарте Forth-79 (англ.)
BEGIN I,C,147 Used in a colon-definition in the form: BEGIN ... flag UNTIL or BEGIN ... flag WHILE ... REPEAT BEGIN marks the start of a word sequence for repetitive execution. A BEGIN-UNTIL loop will be repeated until flag is true. A BEGIN-WHILE-REPEAT loop will be repeated until flag is false. The words after UNTIL or REPEAT will be executed when either loop is finished. flag is always dropped after being tested.
BEGIN в fig-FORTH Release 1 glossary, май 1979 (англ.)
BEGIN --- addr n (compiling) P,L0 Occurs in a colon-definition in form: BEGIN ... UNTIL BEGIN ... AGAIN BEGIN ... WHILE ... REPEAT At run-time, BEGIN marks the start of a sequence that may be repetitively executed. It serves as a return point from the corresponding UNTIL, AGAIN or REPEAT. When executing UNTIL, a return to BEGIN will occur if the top of the stack is false; for AGAIN and REPEAT a return to BEGIN always occurs.
At compile time BEGIN leaves its return address and n for compiler error checking.
Реализация BEGIN
Юрий Семёнов приводит следующее описание слова BEGIN (стр. 64):
: BEGIN ?COMP HERE 1 ; IMMEDIATE
У Баранова-Ноздрунова определение слова BEGIN выглядит так (стр. 58):
: BEGIN ( ---> A,2 ) <MARK 2 ; IMMEDIATE
В 11-й главе Starting FORTH слово BEGIN определяется так:
: BEGIN HERE ; IMMEDIATE
Ссылки
- Слово BEGIN и комментарий к нему в стандарте ANS Forth (англ.)
- Слово BEGIN и комментарий к нему в черновике Forth 200x (англ.)
- Цикл в Википедии
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |