TO: различия между версиями
AtH (обсуждение | вклад) (Новая страница: «'''TO''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова К…») |
AtH (обсуждение | вклад) |
||
(не показано 35 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''TO''' — стандартное слово [[Каллисто]]. | '''TO''' (предлог «в», читается «ту») — стандартное слово [[Каллисто]]. Изменить значение десятичной величины. | ||
TO ( x −− ) Запись x в десятичную величину или переменную действия. | |||
[[Файл:CallistoValueTo.png|thumb|right|264px|Пример работы слова TO]] | |||
Запись в десятичную величину, созданную порождающим словом [[VALUE]]. Слово TO употребляется непосредственно перед именем величины, через один или несколько пробелов. | |||
Также слово TO употребляется для изменения действия слов, созданных словом [[DEFER]]. | |||
== Ввод слова TO == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите две белые клавиши [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша 5|{{Серая клавиша|5}}]] | |||
== TO в стандарте ANS Forth == | |||
<pre> | |||
6.2.2295 TO CORE EXT | |||
Интерпретация: ( x "<spaces>name" -- ) | |||
Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. | |||
Сохраняет x в name. Неопределенная ситуация существует, если name | |||
не было определено через VALUE. | |||
Компиляция: ( "<spaces>name" -- ) | |||
Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. | |||
Добавляет семантику времени-выполнения, данную ниже к текущему | |||
определению. Неопределенная ситуация существует, если name не было | |||
определено через VALUE. | |||
Время-выполнения: ( x -- ) | |||
Сохраняет x в name. | |||
Примечание: Неопределенная ситуация существует, если POSTPONE или | |||
[COMPILE], применяется к TO. | |||
См.: 6.2.2405 VALUE, 13.6.1.2295 TO. | |||
A.6.2.2295 TO | |||
Исторически, некоторые реализации TO не имеют явного выделения имени. Вместо | |||
этого они устанавливают флаг режима, который проверяется последующим | |||
выполнением имени. ANS Forth явно требует, чтобы TO выделял имя, так чтобы | |||
эффект TO был предсказуем, когда он используется в конце области анализа. | |||
Типичное использование: | |||
x TO name | |||
</pre> | |||
== Реализация == | |||
В [[Каллисто|Каллисто 1.0]] предусмотрена возможность самостоятельной разработки порождающих слов, использующих стандартное слово TO, без перекомпиляции транслятора. Реализация такой возможности в стандартную поставку не включена. Разработчикам предоставлена возможность самостоятельно продумать удобный синтаксис для таких порождающих слов и реализовать его. | |||
<pre> | |||
3342 ;#TO | |||
3343 ; TO I ( x −− ) Записать x в десятичную величину или переменную действия. | |||
3344 LTO: .DB 82H | |||
3345 .TEXT "TO" ; ( x "<пр>имя" −− ) | |||
3346 .DW LBCOM | |||
3347 TO: .DW CALL, BL,WORD, FIND, ZEQU, ZERO,QERR, DROP, N2PFA, TWOP | |||
3348 .DW STATE,UAT, ZBRAN,TO1, COMMA, EXIT | |||
3349 TO1: .DW EXEC, EXIT | |||
</pre> | |||
Реализации из SP-Forth 4.20: | |||
<pre> | |||
: (TO) | |||
ALSO TC-WL ' | |||
9 + STATE @ | |||
IF COMPILE, ELSE [ ALSO TC ] EXECUTE [ PREVIOUS ] THEN | |||
PREVIOUS | |||
; IMMEDIATE | |||
</pre> | |||
<pre> | |||
: TO ALSO TC-WL [COMPILE] TO PREVIOUS ; IMMEDIATE | |||
</pre> | |||
<pre> | |||
0 VALUE TOVALUE-CODE | |||
… | |||
: TO \ 94 CORE EXT | |||
\ Интерпретация: ( x "<spaces>name" -- ) | |||
\ Пропустить ведущие пробелы и выделить name, ограниченное пробелом. | |||
\ Записать x в name. Неопределенная ситуация возникает, если name не | |||
\ определено через VALUE. | |||
\ Компиляция: ( "<spaces>name" -- ) | |||
\ Пропустить ведущие пробелы и выделить name, ограниченное пробелом. | |||
\ Добавить семантику времени выполнения, данную ниже, к текущему определению. | |||
\ Неопределенная ситуация возникает, если name не определено через VALUE. | |||
\ Время выполнения: ( x -- ) | |||
\ Записать x в name. | |||
\ Примечание: Неопределенная ситуация возникает, если POSTPONE или [COMPILE] | |||
\ применяются к TO. | |||
' | |||
9 + STATE @ | |||
IF COMPILE, ELSE EXECUTE THEN | |||
; IMMEDIATE | |||
</pre> | |||
=== Советская реализация === | |||
У Баранова-Ноздрунова приводится следующее описание слова TO (стр. 97): | |||
: TO ' 2+ STATE @ IF , ELSE EXECUTE THEN ; | |||
IMMEDIATE | |||
== Ссылка == | |||
* {{Исходник|TO|TO}} | |||
* См. слова [[VALUE]], [[DEFER]], [[VARIABLE]] | |||
* См. также статью [[Векторное поле кода]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.2295 TO] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.2295 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans13.htm#13.6.1.2295 TO] и [http://forth.sourceforge.net/standard/dpans/dpansa13.htm#A.13.6.1.2295 комментарий к нему] в стандарте ANS Forth, расширение LOCAL ''(англ.)'' | |||
* Слово [http://forth-standard.org/standard/core/TO TO] и [http://forth-standard.org/standard/rationale#rat:core:TO комментарий к нему] в черновике Forth 200x ''(англ.)'' | |||
* [https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Присваивание в Википедии] | |||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Слова с признаком IMMEDIATE]] | |||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE EXT]] | |||
[[Категория:2012 CORE EXT]] |
Текущая версия от 19:08, 13 ноября 2017
TO (предлог «в», читается «ту») — стандартное слово Каллисто. Изменить значение десятичной величины.
TO ( x −− ) Запись x в десятичную величину или переменную действия.
![](/images/CallistoValueTo.png)
Запись в десятичную величину, созданную порождающим словом VALUE. Слово TO употребляется непосредственно перед именем величины, через один или несколько пробелов.
Также слово TO употребляется для изменения действия слов, созданных словом DEFER.
Ввод слова TO[править]
В режиме ЛАТ последовательно нажмите две белые клавиши 2 5
TO в стандарте ANS Forth[править]
6.2.2295 TO CORE EXT Интерпретация: ( x "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Сохраняет x в name. Неопределенная ситуация существует, если name не было определено через VALUE. Компиляция: ( "<spaces>name" -- ) Пропускает ведущие пробелы, и выделяет name, ограниченное пробелом. Добавляет семантику времени-выполнения, данную ниже к текущему определению. Неопределенная ситуация существует, если name не было определено через VALUE. Время-выполнения: ( x -- ) Сохраняет x в name. Примечание: Неопределенная ситуация существует, если POSTPONE или [COMPILE], применяется к TO. См.: 6.2.2405 VALUE, 13.6.1.2295 TO. A.6.2.2295 TO Исторически, некоторые реализации TO не имеют явного выделения имени. Вместо этого они устанавливают флаг режима, который проверяется последующим выполнением имени. ANS Forth явно требует, чтобы TO выделял имя, так чтобы эффект TO был предсказуем, когда он используется в конце области анализа. Типичное использование: x TO name
Реализация[править]
В Каллисто 1.0 предусмотрена возможность самостоятельной разработки порождающих слов, использующих стандартное слово TO, без перекомпиляции транслятора. Реализация такой возможности в стандартную поставку не включена. Разработчикам предоставлена возможность самостоятельно продумать удобный синтаксис для таких порождающих слов и реализовать его.
3342 ;#TO 3343 ; TO I ( x −− ) Записать x в десятичную величину или переменную действия. 3344 LTO: .DB 82H 3345 .TEXT "TO" ; ( x "<пр>имя" −− ) 3346 .DW LBCOM 3347 TO: .DW CALL, BL,WORD, FIND, ZEQU, ZERO,QERR, DROP, N2PFA, TWOP 3348 .DW STATE,UAT, ZBRAN,TO1, COMMA, EXIT 3349 TO1: .DW EXEC, EXIT
Реализации из SP-Forth 4.20:
: (TO) ALSO TC-WL ' 9 + STATE @ IF COMPILE, ELSE [ ALSO TC ] EXECUTE [ PREVIOUS ] THEN PREVIOUS ; IMMEDIATE
: TO ALSO TC-WL [COMPILE] TO PREVIOUS ; IMMEDIATE
0 VALUE TOVALUE-CODE … : TO \ 94 CORE EXT \ Интерпретация: ( x "<spaces>name" -- ) \ Пропустить ведущие пробелы и выделить name, ограниченное пробелом. \ Записать x в name. Неопределенная ситуация возникает, если name не \ определено через VALUE. \ Компиляция: ( "<spaces>name" -- ) \ Пропустить ведущие пробелы и выделить name, ограниченное пробелом. \ Добавить семантику времени выполнения, данную ниже, к текущему определению. \ Неопределенная ситуация возникает, если name не определено через VALUE. \ Время выполнения: ( x -- ) \ Записать x в name. \ Примечание: Неопределенная ситуация возникает, если POSTPONE или [COMPILE] \ применяются к TO. ' 9 + STATE @ IF COMPILE, ELSE EXECUTE THEN ; IMMEDIATE
Советская реализация[править]
У Баранова-Ноздрунова приводится следующее описание слова TO (стр. 97):
: TO ' 2+ STATE @ IF , ELSE EXECUTE THEN ; IMMEDIATE
Ссылка[править]
- Исходный текст слова TO в Каллисто Классик 1.0
- См. слова VALUE, DEFER, VARIABLE
- См. также статью Векторное поле кода
- Слово TO и комментарий к нему в стандарте ANS Forth (англ.)
- Слово TO и комментарий к нему в стандарте ANS Forth, расширение LOCAL (англ.)
- Слово TO и комментарий к нему в черновике Forth 200x (англ.)
- Присваивание в Википедии
![]() |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |