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/ |