TO: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 19 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''TO''' (предлог «в», читается «ту») — стандартное слово [[Каллисто]].
'''TO''' (предлог «в», читается «ту») — стандартное слово [[Каллисто]]. Изменить значение десятичной величины.
TO            ( x −− )                            Запись x в десятичную величину или переменную действия.
[[Файл:CallistoValueTo.png|thumb|right|264px|Пример работы слова TO]]
Запись в десятичную величину, созданную порождающим словом [[VALUE]]. Слово TO употребляется непосредственно перед именем величины, через один или несколько пробелов.


Запись в десятичную переменную, созданную порождающим словом [[VALUE]]. Слово TO употребляется непосредственно перед именем переменной, через один или несколько пробелов.
Также слово TO употребляется для изменения действия слов, созданных словом [[DEFER]].


== Ввод слова TO ==
== Ввод слова TO ==
Строка 7: Строка 10:


== TO в стандарте ANS Forth ==
== TO в стандарте ANS Forth ==
<pre>
  6.2.2295  TO                                                          CORE EXT
  6.2.2295  TO                                                          CORE EXT
         Интерпретация: ( x "<spaces>name" -- )
         Интерпретация: ( x "<spaces>name" -- )
Строка 35: Строка 39:
  Типичное использование:
  Типичное использование:
         x TO name
         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 ==
=== Советская реализация ===
У Баранова-Ноздрунова приводится следующее описание слова TO (стр. 97):
У Баранова-Ноздрунова приводится следующее описание слова TO (стр. 97):
   : TO  'N NAME> 2+ STATE @ IF , ELSE EXECUTE THEN ;
   : TO  ' 2+ STATE @ IF , ELSE EXECUTE THEN ;
                                             IMMEDIATE
                                             IMMEDIATE


== Ссылка ==
== Ссылка ==
* См. слова [[VALUE]] [[VARIABLE]]
* {{Исходник|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/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.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://www.forth200x.org/documents/html3/core/TO.html TO] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:TO комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [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 Присваивание в Википедии]
* [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 в десятичную величину или переменную действия.
Пример работы слова TO

Запись в десятичную величину, созданную порождающим словом 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

Ссылка[править]


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.