|
|
Строка 1: |
Строка 1: |
| [[Файл:CallistoSave.png|thumb|right|264px|Пример работы слова :]] | | #REDIRECT [[Слово :]] |
| ''':''' (двоеточие) — стандартное порождающее слово [[Каллисто]].
| |
| | |
| Начать определение слова через двоеточие.
| |
| | |
| == Ввод слова : ==
| |
| В [[Режим NUM|режиме NUM]] нажмите [[Клавиша В/О|чёрную клавишу {{Чёрная клавиша|В/О}}]]
| |
| | |
| == : в стандарте ANS Forth ==
| |
| 6.1.0450 : "colon" CORE
| |
| ( C: "<spaces>name" -- colon-sys )
| |
| Пропускает ведущие разделители пробелы. Выделяет name, ограниченное
| |
| пробелом. Создает определение для name, называемое "определение
| |
| через двоеточие". Вводит состояние компиляции и начинает текущее
| |
| определение, создавая colon-sys. Добавляет семантику инициирования,
| |
| данную ниже к текущему определению.
| |
| | |
| Семантика выполнения name будет определяться скомпилированными в
| |
| тело определения словами. Текущее определение не должно быть
| |
| находимым в словаре, пока оно не закончено (или до выполнения DOES>
| |
| в некоторых системах).
| |
| | |
| Инициирование: ( i*x -- i*x ) ( R: -- nest-sys )
| |
| Сохраняет зависящую-от-реализации информацию nest-sys о вызове
| |
| определения. Состояние стека i*x, представляет параметры для name.
| |
| | |
| name Выполнение: ( i*x -- j*x )
| |
| Выполняет name определения. Состояние стека i*x, и j*x представляет
| |
| параметры и результаты из name, соответственно.
| |
| | |
| См.: 3.4 Интерпретатор текста Forth, 3.4.1 Синтаксический анализ,
| |
| 3.4.5 Компиляция, 6.1.1250 DOES>, 6.1.2500 [, 6.1.2540 ],
| |
| 15.6.2.0470 ;CODE.
| |
| | |
| A.6.1.0450 :
| |
| Типичное использование:
| |
| : name ... ;
| |
| | |
| В Forth 83 это слово было определено для изменения порядка поиска. Эта
| |
| спецификация явно удалена в этом Стандарте. Мы полагаем, что в большинстве
| |
| случаев это не имеет никакого эффекта; однако системы, которые разрешают много
| |
| порядков поиска, нашли Forth-83 поведение двоеточия очень нежелательным.
| |
| | |
| Заметьте, что двоеточие самостоятельно не вызывает компилятор. Двоеточие
| |
| устанавливает состояние компиляции так, чтобы более поздние слова в области
| |
| анализа были откомпилированы.
| |
| | |
| | |
| == : в предыдущем стандарте Forth-83 (англ.) ==
| |
| : -- sys M,79 "colon"
| |
| A defining word executed in the form:
| |
| : <name> ... ;
| |
| Create a word definition for <name> in the compilation
| |
| vocabulary and set compilation state. The search order is
| |
| changed so that the first vocabulary in the search order is
| |
| replaced by the compilation vocabulary. The compilation
| |
| vocabulary is unchanged. The text from the input stream is
| |
| subsequently compiled. <name> is called a "colon
| |
| definition". The newly created word definition for <name>
| |
| cannot be found in the dictionary until the corresponding ;
| |
| or ;CODE is successfully processed.
| |
| | |
| An error condition exists if a word is not found and cannot
| |
| be converted to a number or if, during compilation from mass
| |
| storage, the input stream is exhausted before encountering ;
| |
| or ;CODE . sys is balanced with its corresponding ; . See:
| |
| "compilation" "9.4 Compilation"
| |
| | |
| | |
| == : в стандарте Forth-79 (англ.) ==
| |
| : 116 "colon"
| |
| A defining word executed in the form:
| |
| : <name> ... ;
| |
| Select the CONTEXT vocabulary to be identical to CURRENT.
| |
| Create a dictionary entry for <name> in CURRENT, and set
| |
| compile mode. Words thus defined are called 'colon-
| |
| definitions'. The compilation addresses of subsequent words
| |
| from the input stream which are not immediate words are stored
| |
| in the dictionary to be executed when <name> is later
| |
| executed. IMMEDIATE words are executed as encountered.
| |
| | |
| If a word is not found after a search of the CONTEXT and FORTH
| |
| vocabularies, conversion and compilation of a literal number
| |
| is attempted, with regard to the current BASE; that failing,
| |
| an error condition exists .
| |
| | |
| | |
| == : в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
| |
| : P,E,L0
| |
| Used in the form called a colon-definition:
| |
| : cccc ... ;
| |
| Creates a dictionary entry defining cccc as equivalent to the
| |
| following sequence of Forth word definitions '...' until the next
| |
| ';' or ';CODE'.
| |
| The compiling process is done by the text interpreter as long as
| |
| STATE is non-zero. Other details are that the CONTEXT vocabulary is
| |
| set to the CURRENT vocabulary and that words with the precedence bit
| |
| set (P) are executed rather than being compiled.
| |
| | |
| | |
| == Реализация : ==
| |
| Юрий Семёнов приводит следующее описание слова : (стр. 138):
| |
| : : ( второе ":" - имя слова)
| |
| ?EXEC ( система в режиме исполнения? Если нет, то
| |
| сообщение об ошибке)
| |
| !CSP CURRENT @ CONTEXT ! ( CONTEXT = CURRENT)
| |
| CREATE ( формирует имя нового слова и поле LFA)
| |
| ] ( вход в режим компиляции)
| |
| (;CODE) ; IMMEDIATE ( формирование поля CFA)
| |
| | |
| | |
| == История ==
| |
| В [[Каллисто]] : не влияет на [[CONTEXT|контекст]], то есть ведёт себя также, как в Форте-83 и последующих.
| |
| | |
| | |
| == Ссылки ==
| |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0450 : (colon)] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0450 комментарий к нему] в стандарте ANS Forth ''(англ.)''
| |
| * Слово [http://www.forth200x.org/documents/html3/core/Colon.html : (colon)] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:: комментарий к нему] в черновике Forth 200x ''(англ.)''
| |
| | |
| | |
| {{заготовка}}
| |
| [[Категория:Слова Каллисто]]
| |
| [[Категория:Порождающие слова Каллисто]]
| |
| [[Категория:Слова Каллисто без стековых диаграмм]]
| |