Слово ;: различия между версиями

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


== История ==
== История ==
Слово ; является одним из самых древних сохранившихся слов Форта. Вот пример одного из ранних определений слова Чаком Муром для 2Кб версии B-5500 FORTH (1970 год), которое выглядит, как современное:
Слово ; является одним из самых древних сохранившихся слов Форта. Вот пример одного из ранних (1970 год) определений слова Чаком Муром для 2Кб версии Форта на Burroughs B-5500, которое выглядит, как современное:
  : SHIFT      -1  @T    0  -3  =T  ;
  : SHIFT      -1  @T    0  -3  =T  ;



Версия от 17:40, 20 марта 2016

Пример работы слова ;

; (точка с запятой) — стандартное слово Каллисто.

Закончить определение через двоеточие.

Ввод слова ;

В режиме NUM нажмите чёрную клавишу  С/П 

; в стандарте ANS Forth

6.1.0460   ;                                 "semicolon"                   CORE
       Интерпретация: Семантика интерпретации для этого слова не определена.
       Компиляция: ( C: colon-sys -- )
           Добавляет семантику времени-выполнения ниже к текущему определению. 
           Заканчивает текущее определение, позволяя ему быть найденным в 
           словаре, и вводит состояние интерпретации, потребляя colon-sys. 
           Если указатель области данных не выровненный, резервирует 
           достаточно области данных для его выравнивания.
       Время-выполнения: ( -- )  ( R:  nest-sys -- )
           Возвращение к вызывающему определению, определенному nest-sys.
       См.: 3.4 Интерпретатор текста Forth, 3.4.5 Компиляция.
A.6.1.0460   ;
Типичное использование:
       : name ... ;
Одна функция, выполняемая ; и ;CODE это позволить текущему определению быть 
найденным в словаре. Если текущее определение было создано с помощью :NONAME 
текущее определение не имеет имя определения и таким образом не может быть 
найдено в словаре. Если :NONAME реализовано, компилятор Forth должен сохранить 
достаточно информации о текущем определении, чтобы позволить ; и ;CODE 
определить, действительно ли должно быть предпринято какое либо действие, чтобы 
позволить ему быть найденным.

; в предыдущем стандарте Forth-83 (англ.)

     ;            --                            C,I,79    "semi-colon"
                  sys --   (compiling)
          Stops compilation of a colon definition, allows the <name>
          of this colon definition to be found in the dictionary, sets
          interpret state and compiles EXIT (or a system dependent
          word which performs an equivalent function).  sys is
          balanced with its corresponding : .  See:  EXIT  :  "stack,
          return"  "9.4 Compilation"

; в стандарте Forth-79 (англ.)

;                                            I,C,196   "semi-colon"
    Terminate  a  colon  definition  and  stop  compilation.    If
    compiling  from mass storage and the input stream is exhausted
    before encountering ; an error condition exists.

; в fig-FORTH Release 1 glossary, май 1979 (англ.)

;                                           P,C,L0
       Terminate a colon-definition and stop further compilation. Compiles
       the run-time ;S.

История

Слово ; является одним из самых древних сохранившихся слов Форта. Вот пример одного из ранних (1970 год) определений слова Чаком Муром для 2Кб версии Форта на Burroughs B-5500, которое выглядит, как современное:

: SHIFT      -1   @T    0   -3   =T   ;

Хотя из colorForth убрано двоеточие в пользу кодирования определяемого слова красным цветом, слово ; сохранено.

Реализация ;

Юрий Семёнов приводит следующее описание слова ; (стр. 138):

 : ;   ?CSP COMPILE EXIT   ( завершает описание слова, записав в
                        PFA нового слова ссылку на оператор EXIT)
       SMUDGE [ ; IMMEDIATE

У Баранова-Ноздрунова определение слова ; выглядит так (стр. 69):

: ;  ( ---> )   COMPILE  EXIT  [COMPILE]  [  ;
                                     IMMEDIATE

В 11-й главе Starting FORTH слово ; определяется так:

  : ;  POSTPONE EXIT  SMUDGE POSTPONE [ ; IMMEDIATE

Ссылки


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