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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Строка 95: Строка 95:
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\01.OSNOWY%20FORTA ОСНОВЫ ФОРТА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\01.OSNOWY%20FORTA ОСНОВЫ ФОРТА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf1/sf1.html Fundamental Forth] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
* [http://www.forth.com/starting-forth/sf1/sf1.html Fundamental Forth] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
* [http://www.forth.com/starting-forth/sf11/sf11.html Extending the Compiler] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''





Версия от 01:53, 26 марта 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.

История

Слово ; является одним из самых древних сохранившихся слов Форта.

Впервые оно появилось в 1964 году под именем END в программе CURVE (по информации из журнала «Байт» за август 1980 года, стр. 76 она называлась TRANSPORT), написанной Чак Муром на Алголе для Burroughs B5500 (Национальная ускорительная лаборатория SLAC, Стэнфордский университет), где означало остановку интерпретации сохранённого определения.

Вот пример одного из ранних (1970 год) определений слова Чаком Муром для 2К×48бит версии Форта на 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

Вот это определение:

  : ;  POSTPONE EXIT  SMUDGE POSTPONE [ ; IMMEDIATE

Определение слова ; в ядре ФОРТ-ЕС:

                     Экран номер 32
( 31.03.66   CONSTANT  VARIABLE 2CONSTANT  2VARIABLE  : ; )

: ; ( -> ) ?CSP COMPILE  EXIT  UNSMUDGE [COMPILE] [ ; IMMEDIATE

Ссылки


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