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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 28 промежуточных версий этого же участника)
Строка 1: Строка 1:
[[Файл:comment.gif|thumb|right|178px|[[INTERPRET]] и комментарий.<br>Картинка из книги Лео Борди «Starting FORTH»]]
'''(''' (скобка, открывающая круглая скобка) — стандартное слово [[Каллисто]]. Комментарий — пропустить следующий текст до [[Символ с кодом 41|закрывающей круглой скобки]].
'''(''' — стандартное слово [[Каллисто]].
(              ( −− )                              Комментарий. Игнорировать входные литеры до закрывающей круглой скобки.
[[Файл:comment.gif|thumb|right|178px|[[INTERPRET]] и комментарий.<br>Картинка из книги Лео Броди «Starting FORTH»]]
Слово ( отмечает начало комментария; все следующие литеры до первой ) (закрывающей скобки) считаются комментарием и при обработке вводимого текста [[Каллисто]] пропускаются.


Комментарий пропустить следующий текст до закрывающей круглой скобки.
Комментарии в [[Каллисто|Каллисто 1.0]] не могут быть вложенными первый найденный символ ) завершает комментарий.


== Ввод слова ( ==
В [[Режим NUM|режиме NUM]] нажмите чёрную клавишу {{ШГ→}}


== ( в стандарте ANS Forth ==
== ( в стандарте ANS Forth ==
<pre>
  6.1.0080  (                              "paren"                        CORE
  6.1.0080  (                              "paren"                        CORE
         Компиляция: Исполняет семантику выполнения, данную ниже.
         Компиляция: Исполняет семантику выполнения, данную ниже.
Строка 21: Строка 26:
  Типичное использование:
  Типичное использование:
         ...  ( ccc) ...
         ...  ( ccc) ...
</pre>


== История ==
В Каллисто слово ( взято из Форта, где оно — одно из самых древних и устоявшихся.


== ( в предыдущем стандарте Forth-83 (англ.) ==
Впервые слово ( появилось в 1964 году под именем COMMENT в программе CURVE, написанной Чак Муром на Алголе для 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 Стэнфордский университет]). Комментарий заканчивался символом ;
 
Уже тогда ввод стал достаточно сложным, чтобы оправдать наличие комментария.
 
=== ( в предыдущем стандарте Forth-83 (англ.) ===
       (            --                            I,M,83        "paren"
       (            --                            I,M,83        "paren"
                   --  (compiling)
                   --  (compiling)
Строка 35: Строка 47:
           remaining in the input stream up to the closing parenthesis.
           remaining in the input stream up to the closing parenthesis.


 
=== ( в стандарте Forth-79 (англ.) ===
== ( в стандарте Forth-79 (англ.) ==
  (              --                            I,122          "paren"
  (              --                            I,122          "paren"
     Used in the form:
     Used in the form:
Строка 46: Строка 57:
     if the input stream is exhausted before the right parenthesis.
     if the input stream is exhausted before the right parenthesis.


 
=== ( в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== ( в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  (                                              P,L0
  (                                              P,L0
         Used in the form:
         Used in the form:
Строка 55: Строка 65:
         colon-definition. A blank after the leading parenthesis is required.
         colon-definition. A blank after the leading parenthesis is required.


== Реализация ==
<pre>
3417 ;#p
3418 ; (              I ( −− )                              Комментарий. Игнорировать входные литеры до закрывающей круглой скобки.
3419 ; Комментарий. Игнорировать всё до первой встречной ")" или конца строки (терминал) / экрана (интерпретация блока).
3420 LPAREN:        .DB    81H
3421                .TEXT  "("
3422                .DW    LVOCAB
3423 PAREN:          .DW CALL, LITB
3424                .DB 41                          ; ")"
3425                .DW WORD, DROP, EXIT
</pre>
Реализации из SP-Forth 4.20:
<pre>
: (  ( "ccc<paren>" -- ) \ 94 FILE
\ Расширить семантику CORE (, включив:
\ Когда разбирается текстовый файл, если конец разбираемой области достигнут
\ раньше, чем найдена правая скобка, снова заполнить входной буфер следующей
\ строкой из файла, установить >IN в ноль и продолжать разбор, повторяя
\ этот процесс до тех пор, пока не будет найдена правая скобка или не
\ будет достигнут конец файла.
  BEGIN
    [CHAR] ) DUP PARSE + C@ = 0=
  WHILE
    REFILL 0= IF EXIT THEN
  REPEAT
; IMMEDIATE
</pre>
<pre>
: ( [COMPILE] ( ; IMMEDIATE
</pre>


== Реализация ( ==
=== Советская реализация ===
 
В Thinking FORTH (стр. 169, "More Tips for Readability") приводится такая реализация слова ( :
В Thinking FORTH (стр. 169, "More Tips for Readability") приводится такая реализация слова ( :
  : (  ')' WORD DROP ; IMMEDIATE
  : (  ')' WORD DROP ; IMMEDIATE


Такое же определение слова ( было в ядре ФОРТ-ЕС:
<PRE>
  (        Н ->                КОММЕНТАРИИ - ПРОПУСТИТЬ СЛЕДУЮЩИЙ ТЕКСТ  28
                                          ДО ЗАКРЫВАЮЩЕЙ КРУГЛОЙ СКОБКИ
                    Экран номер 28
( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT )
: (  ( ->)  C" )  WORD DROP ; IMMEDIATE
</PRE>
Определение слова ( в FORTH ИТЭФ:
<PRE>
            HEAD    301Q,,250Q,PAREN,$COL                ; (
            DW  LIT,51Q,$WORD,SEMI
</PRE>


== Ссылки ==
== Ссылки ==
* См. также слова Каллисто [[\ (Каллисто)|\]] , [[\S]] и [[−−⟩]]
* {{Исходник|p|(}}
* См. также слова Каллисто [[Слово \|\]] и [[\S]]
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0080 Слово ( (paren) в стандарте ANS Forth] ''(англ.)'' и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0080 комментарий к нему] ''(англ.)''
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0080 Слово ( (paren) в стандарте ANS Forth] ''(англ.)'' и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0080 комментарий к нему] ''(англ.)''
* [http://www.forth200x.org/documents/html/core.html#core:p Слово ( (paren) в черновике Forth 200x] ''(англ.)'' и [http://www.forth200x.org/documents/html/rationale.html#rat:core:p комментарий к нему] ''(англ.)''
* Слово [http://forth-standard.org/standard/core/p ( (paren)] и [http://forth-standard.org/standard/rationale#rat:core:p комментарий к нему] в черновике Forth 200x ''(англ.)''
* [http://www.compiler.su/dlinnye-kommentarii.php Длинные комментарии на compiler.su]
* [http://www.compiler.su/dlinnye-kommentarii.php Длинные комментарии на compiler.su]
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29 Комментарий на Википедии]
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29 Комментарий на Википедии]
* [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/sf3/sf3.html The Editor (and Staff)] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




Строка 73: Строка 131:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова с признаком IMMEDIATE]]
[[Категория:Средства отладки Каллисто]]
[[Категория:Средства отладки Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]

Текущая версия от 19:13, 13 ноября 2017

( (скобка, открывающая круглая скобка) — стандартное слово Каллисто. Комментарий — пропустить следующий текст до закрывающей круглой скобки.

(              ( −− )                               Комментарий. Игнорировать входные литеры до закрывающей круглой скобки.
INTERPRET и комментарий.
Картинка из книги Лео Броди «Starting FORTH»

Слово ( отмечает начало комментария; все следующие литеры до первой ) (закрывающей скобки) считаются комментарием и при обработке вводимого текста Каллисто пропускаются.

Комментарии в Каллисто 1.0 не могут быть вложенными — первый найденный символ ) завершает комментарий.

Ввод слова ([править]

В режиме NUM нажмите чёрную клавишу  ШГ→ 

( в стандарте ANS Forth[править]

 6.1.0080   (                               "paren"                         CORE
        Компиляция: Исполняет семантику выполнения, данную ниже.

        Выполнение: ( "ccc<paren>" -- )
            Выделяет ccc, ограниченное ) (правая круглая скобка). ( - слово 
            немедленного исполнения.

            Число символов в ccc может быть нулевое для числа символов в 
            области анализа.

        См.: 3.4.1 Синтаксический анализ, 11.6.1.0080 (.

 A.6.1.0080   (
 Типичное использование:
        ...  ( ccc) ...

История[править]

В Каллисто слово ( взято из Форта, где оно — одно из самых древних и устоявшихся.

Впервые слово ( появилось в 1964 году под именем COMMENT в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 (Национальная ускорительная лаборатория SLAC, Стэнфордский университет). Комментарий заканчивался символом ;

Уже тогда ввод стал достаточно сложным, чтобы оправдать наличие комментария.

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

     (            --                            I,M,83         "paren"
                  --   (compiling)
          Used in the form:
                  ( ccc)
          The characters ccc, delimited by ) (closing parenthesis),
          are considered comments.  Comments are not otherwise
          processed.  The blank following ( is not part of ccc.  ( may
          be freely used while interpreting or compiling.  The number
          of characters in ccc may be zero to the number of characters
          remaining in the input stream up to the closing parenthesis.

( в стандарте Forth-79 (англ.)[править]

(              --                            I,122          "paren"
    Used in the form:
         ( ccc)
    Accept  and ignore comment characters from the  input  stream,
    until  the  next  right parenthesis.   As  a  word,  the  left
    parenthesis  must be followed by one blank.   It may freely be
    used while executing or compiling.   An error condition exists
    if the input stream is exhausted before the right parenthesis.

( в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

(                                               P,L0
       Used in the form:
       ( cccc)
       Ignore a comment that will be delimited by a right
       parenthesis on the same line. May occur during execution or in a
       colon-definition. A blank after the leading parenthesis is required.

Реализация[править]

3417 ;#p
3418 ; (              I ( −− )                               Комментарий. Игнорировать входные литеры до закрывающей круглой скобки.
3419 ; Комментарий. Игнорировать всё до первой встречной ")" или конца строки (терминал) / экрана (интерпретация блока).
3420 LPAREN:         .DB     81H
3421                 .TEXT   "("
3422                 .DW     LVOCAB
3423 PAREN:          .DW CALL, LITB
3424                 .DB 41                          ; ")"
3425                 .DW WORD, DROP, EXIT

Реализации из SP-Forth 4.20:

: (  ( "ccc<paren>" -- ) \ 94 FILE
\ Расширить семантику CORE (, включив:
\ Когда разбирается текстовый файл, если конец разбираемой области достигнут
\ раньше, чем найдена правая скобка, снова заполнить входной буфер следующей
\ строкой из файла, установить >IN в ноль и продолжать разбор, повторяя
\ этот процесс до тех пор, пока не будет найдена правая скобка или не
\ будет достигнут конец файла.
  BEGIN
    [CHAR] ) DUP PARSE + C@ = 0=
  WHILE
    REFILL 0= IF EXIT THEN
  REPEAT
; IMMEDIATE
: ( [COMPILE] ( ; IMMEDIATE

Советская реализация[править]

В Thinking FORTH (стр. 169, "More Tips for Readability") приводится такая реализация слова ( :

: (   ')' WORD DROP ; IMMEDIATE

Такое же определение слова ( было в ядре ФОРТ-ЕС:

  (         Н ->                КОММЕНТАРИИ - ПРОПУСТИТЬ СЛЕДУЮЩИЙ ТЕКСТ  28
                                           ДО ЗАКРЫВАЮЩЕЙ КРУГЛОЙ СКОБКИ

                     Экран номер 28
( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT )

: (  ( ->)  C" )  WORD DROP ; IMMEDIATE

Определение слова ( в FORTH ИТЭФ:

             HEAD    301Q,,250Q,PAREN,$COL                ; (
             DW  LIT,51Q,$WORD,SEMI

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


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


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