Forth
http://www.fforum.winglion.ru/

Дополнения, изменения, ошибки.
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=1511
Страница 4 из 4

Автор:  _Harry [ Ср авг 18, 2010 18:08 ]
Заголовок сообщения:  Re: Дополнения, изменения, ошибки.

Код:
ALSO HIDDEN

\ Пропустить символ Lf во входном буфере
: SkipLf ( -- ) CharAddr C@ Lf_ = IF system_buff MissOne THEN ;

\ Неполный! аналог Си-шного #define
\ создает слово /name которое при вызове выдает на стек адрес и длину
\ строки /expression ( макросы не поддерживаются )
: #define ( /name /expression -- ) NextWord
          s" (" SEARCH ABORT" Макросы не поддерживаются!"
          CREATED
          CharAddr <C C@ Cr_ =
                             IF SkipLf CharAddr 0
                             ELSE Cr_ PARSE /*...*/ _//!
                             THEN S", IMMEDIATE
  DOES> ( -- asc # ) COUNT ;
\ С коментариями разбираемся перед сохранением строки что вобщем не соответсвует Си
\ но так лучше.

PREVIOUS

Вот во что в итоге превратился #define :(

Автор:  mOleg [ Ср авг 18, 2010 18:29 ]
Заголовок сообщения:  Re: Дополнения, изменения, ошибки.

_Harry писал(а):
Очень распространеная вещь

тогда надо в #define парсить строку до конца, и разбирать ее отдельно

так же глянь на слова
\ найти начало текущей строки
: <EOL ( start end --> addr )
\ найти начало следующей строки
\ в случае ненахождения возвращает адрес последнего символа строки
: EOL> ( start end --> addr )

лежат в kernel\compiler\parseradd.f

Автор:  mOleg [ Ср авг 18, 2010 18:30 ]
Заголовок сообщения:  Re: Дополнения, изменения, ошибки.

_Harry писал(а):
Вот во что в итоге превратился #define

ну, в общем не страшно.

Страница 4 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/