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

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


Строка 10: Строка 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" -- )
Строка 38: Строка 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  ' 2+ STATE @ IF , ELSE EXECUTE THEN ;
   : TO  ' 2+ STATE @ IF , ELSE EXECUTE THEN ;
Строка 45: Строка 93:


== Ссылка ==
== Ссылка ==
* {{Исходник|TO|TO}}
* См. слова [[VALUE]], [[DEFER]], [[VARIABLE]]
* См. слова [[VALUE]], [[DEFER]], [[VARIABLE]]
* См. также статью [[Векторное поле кода]]
* См. также статью [[Векторное поле кода]]
Строка 57: Строка 106:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Слова с признаком 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

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


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