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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
Строка 77: Строка 77:
3425                .DW WORD, DROP, EXIT
3425                .DW WORD, DROP, EXIT
</pre>
</pre>
Реализация из SP-Forth 4.20:
Реализации из SP-Forth 4.20:
<pre>
<pre>
: (  ( "ccc<paren>" -- ) \ 94 FILE
: (  ( "ccc<paren>" -- ) \ 94 FILE
Строка 92: Строка 92:
   REPEAT
   REPEAT
; IMMEDIATE
; IMMEDIATE
</pre>
<pre>
: ( [COMPILE] ( ; IMMEDIATE
</pre>
</pre>



Текущая версия от 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

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


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


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