TO

Материал из ПМК вики
Перейти к навигации Перейти к поиску

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

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


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