Редактирование: Слово ;

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
[[Файл:CallistoSave.png|thumb|right|264px|Пример работы слова ;]]
''';''' (точка с запятой) — стандартное слово [[Каллисто]].
''';''' (точка с запятой) — стандартное слово [[Каллисто]].
;              ( −− )                              Закончить определение через двоеточие.
 
[[Файл:CallistoSave.png|thumb|right|264px|Пример работы слова ;]]
Закончить [[Слово :|определение через двоеточие]].
Слово ; завершает [[Слово :|определение через двоеточие]].


== Ввод слова ; ==
== Ввод слова ; ==
Строка 8: Строка 8:


== ; в стандарте ANS Forth ==
== ; в стандарте ANS Forth ==
<PRE>
  6.1.0460  ;                                "semicolon"                  CORE
  6.1.0460  ;                                "semicolon"                  CORE
         Интерпретация: Семантика интерпретации для этого слова не определена.
         Интерпретация: Семантика интерпретации для этого слова не определена.
Строка 35: Строка 34:
  определить, действительно ли должно быть предпринято какое либо действие, чтобы  
  определить, действительно ли должно быть предпринято какое либо действие, чтобы  
  позволить ему быть найденным.
  позволить ему быть найденным.
</PRE>
== История ==
Слово ; является одним из самых древних сохранившихся слов Форта.
Впервые оно появилось в 1964 году под именем END в программе CURVE (по информации из журнала «Байт» за август 1980 года, стр. 76 она называлась TRANSPORT), написанной Чак Муром на Алголе для Burroughs B5500 ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]), где означало остановку интерпретации сохранённого определения.
Вот пример одного из ранних (1970 год) определений слова Чаком Муром для 2К×48бит версии Форта на Burroughs B-5500, которое выглядит, как современное:
: SHIFT      -1  @T    0  -3  =T  ;
Хотя из {{colorForth}} убрано двоеточие в пользу кодирования определяемого слова красным цветом, слово ; сохранено. Его использование необязательно — при его отсутствии управление передаётся следующему определяемому слову.


=== ; в предыдущем стандарте Forth-83 (англ.) ===
== ; в предыдущем стандарте Forth-83 (англ.) ==
       ;            --                            C,I,79    "semi-colon"
       ;            --                            C,I,79    "semi-colon"
                   sys --  (compiling)
                   sys --  (compiling)
Строка 57: Строка 45:
           return"  "9.4 Compilation"
           return"  "9.4 Compilation"


=== ; в стандарте Forth-79 (англ.) ===
== ; в стандарте Forth-79 (англ.) ==
  ;                                            I,C,196  "semi-colon"
  ;                                            I,C,196  "semi-colon"
     Terminate  a  colon  definition  and  stop  compilation.    If
     Terminate  a  colon  definition  and  stop  compilation.    If
Строка 63: Строка 51:
     before encountering ; an error condition exists.
     before encountering ; an error condition exists.


=== ; в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== ; в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  ;                                          P,C,L0
  ;                                          P,C,L0
         Terminate a colon-definition and stop further compilation. Compiles
         Terminate a colon-definition and stop further compilation. Compiles
         the run-time ;S.
         the run-time ;S.


== Реализация ==
== История ==
<pre>
Слово ; является одним из самых древних сохранившихся слов Форта.
2510 ;#Semi
2511 ; ;             I ( −− )                              Закончить определение через двоеточие.
2512 LSMI:          .DB    81H
2513                .DB    3BH                    ; ";"
2514                .DW    LCOLON
2515 SMI:            .DW CALL, QCSP, COMP,EXIT, SMUG, LBRAC, EXIT
</pre>


В 11-й главе американского [http://www.forth.com/starting-forth/sf11/sf11.html Starting FORTH] ''(англ.)'' слово ; определяется через POSTPONE
Впервые оно появилось в 1964 году под именем END в программе CURVE (по информации из журнала «Байт» за август 1980 года, стр. 76 она называлась TRANSPORT), написанной Чак Муром на Алголе для Burroughs B5500 ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]), где означало остановку интерпретации сохранённого определения.
 
Вот пример одного из ранних (1970 год) определений слова Чаком Муром для 2К×48бит версии Форта на Burroughs B-5500, которое выглядит, как современное:
: SHIFT      -1  @T    0  -3  =T  ;


Вот это определение:
Хотя из {{colorForth}} убрано двоеточие в пользу кодирования определяемого слова красным цветом, слово ; сохранено.
  : ;  POSTPONE EXIT  SMUDGE POSTPONE [ ; IMMEDIATE
Реализации из SP-Forth 4.20:
<pre>
: ; ( -- )
  RET, [COMPILE] [ SMUDGE
  ClearJpBuff
  0 TO LAST-NON
; IMMEDIATE
</pre>
<pre>
C" SHERE-TAB-CUR" FIND NIP
[IF]
: ; PREVIOUS
  ?SET SetOP  POSTPONE ; [I] OPT OPT_CLOSE
  DP @ SHERE-TAB-CUR @ CELL- !  ; IMMEDIATE
[ELSE]
: ; PREVIOUS
  ?SET SetOP  POSTPONE ; [I] OPT OPT_CLOSE  ; IMMEDIATE
[THEN]
</pre>


=== Советская реализация ===
== Реализация ; ==
Юрий Семёнов приводит следующее определение слова ; (стр. 138):
Юрий Семёнов приводит следующее описание слова ; (стр. 138):
   : ;  ?CSP COMPILE EXIT  ( завершает описание слова, записав в
   : ;  ?CSP COMPILE EXIT  ( завершает описание слова, записав в
                         PFA нового слова ссылку на оператор EXIT)
                         PFA нового слова ссылку на оператор EXIT)
Строка 112: Строка 76:
                                       IMMEDIATE
                                       IMMEDIATE


Описание и определение слова ; в ядре ФОРТ-ЕС:
В 11-й главе американского [http://www.forth.com/starting-forth/sf11/sf11.html Starting FORTH] ''(англ.)'' слово ; определяется через POSTPONE
 
Вот это определение:
  : ;  POSTPONE EXIT  SMUDGE POSTPONE [ ; IMMEDIATE
 
Определение слова ; в ядре ФОРТ-ЕС:
<PRE>
<PRE>
  ;        HK ->                  ЗАКОНЧИТЬ ОПРЕДЕЛЕНИЕ ЧЕРЕЗ ДВОЕТОЧИЕ  32
                     Экран номер 32
                     Экран номер 32
( 31.03.86  CONSTANT  VARIABLE 2CONSTANT  2VARIABLE  : ; )
( 31.03.86  CONSTANT  VARIABLE 2CONSTANT  2VARIABLE  : ; )


: ; ( -> ) ?CSP COMPILE  EXIT  UNSMUDGE [COMPILE] [ ; IMMEDIATE
: ; ( -> ) ?CSP COMPILE  EXIT  UNSMUDGE [COMPILE] [ ; IMMEDIATE
</PRE>
Определение слова ; в FORTH ИТЭФ:
<PRE>
            HEAD    301Q,,273Q,SMI,$COL                  ; ;
            DW QCSP,COMP,SEMI,SMUG,LBRAC,SEMI
</PRE>
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|Semi|;}}
* См. [[слово :]] и [[Символ с кодом 59|символ ';']]
* См. [[слово :]] и [[Символ с кодом 59|символ ';']]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0460 ; (semicolon)] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0460 комментарии к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0460 ; (semicolon)] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0460 комментарии к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/Semi ; (semicolon)] и [http://forth-standard.org/standard/rationale#rat:core:; комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/Semi.html ; (semicolon)] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:; комментарий к нему] в черновике Forth 200x ''(англ.)''
* [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] ''(англ.)''
Строка 141: Строка 102:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Компилирующие слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)