Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 17:33

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 148 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 18:12 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
_Harry писал(а):
Опять к mOleg
Еще одна неприятная особенность (или особенная неприятность :wink: )>postfix-а.
Если делать его между CREATE и DOES> то получаем исключение во время создания слова.
Пример:
Код:
\ Распечатать строку со счетчиком ( CELL )
: @type ( addr -- ) DUP CELL + SWAP @ TYPE ;

\ Демонстрационное слово
: #def1 ( /name /expression -- ) CREATE
        0 , HERE A>L
        Cr_ PARSE
        >postfix  \ Здесь  происходит сбой при поытке создания слова
        DUP ALLOT
        TUCK AL@ SWAP CMOVE AL> CELL - !
        DOES> @type ;

\ Демонстрационное слово
: #def2 ( /name /expression -- ) NextWord
        Cr_ PARSE >postfix DSWAP  \ Когда постфикс здесь то все работает
        CREATED 0 , HERE A>L
        DUP ALLOT
        TUCK AL@ SWAP CMOVE AL> CELL - !
        DOES> @type ;
Причем в этом случае буфер не причем
(пробовал вместо >postfix создавать буфер и копировать в него строку - исключения нет)
:?: :?: :?: "Ну непонятно....." :?: :?: :?:
Да и если убрать секцию DOES> то оба слова работают.


Последний раз редактировалось _Harry Чт июл 08, 2010 19:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 18:30 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Можно взять мой пример - он как раз рабочий под разные языки
нужно только задать образец


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 18:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
Еще одна неприятная особенность (или особенная неприятность )>postfix-а.

да, забавно, падает (JOIN) , только голова сейчас совсем не варит. Похоже, кто-то где-то пишет не туда

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 19:21 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
В предыдущем моем посте была ошибка в коде def1 и def2 (исправлено)
правда это не меняет дела.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 19:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
проблема в
: ExitSource ( --> )
ON-SOURCE-EXIT
;CREATE
CURSRC A@ CloseSource
*IF DUP CURSRC A! TO system_buff ;THEN
STRING" Исчерпание входных источников!"
>STDERR BYE ;

а именно в ;CREATE , которое завершает создание текущего определения, после чего HERE становится недействителен.
Я боролся с определениями в конце файлового потока, и просмотрел возможность использование ExitSource для трансляции строки внутри определения. Подумаю, как исправить.

и тут сразу понятно, почему второй пример ошибки не вызывает, ведь строка разбирается до начала содания определения ;)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 19:44 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вобщем, самый простой способ, закоментировать строку с ;CREATE и пересобрать систему. Возможно с буфером такая же проблема была, однако, с последним разбираться буду на выходных.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Чт июл 08, 2010 22:57 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
неа, зачем? мне и так нравится

Хм ну если это рассматривать только как конкурсную задачку то да.
А я то с прицелом на практическое использование...
И такие вольности будут настоящей миной замедленного действия.
Ну да ладно все равно доработать много чего придётся. :roll:

Вот что за проблема с буфером и чем строка из Buffer> отличаются от строки из S>HEAP
просто таки загадка века. :?:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 04:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
А я то с прицелом на практическое использование...

достаточно закоментировать одну строчку:
: : BOX[ 1 B, s" !" S", ]BOX twoseater ; \ правое присвоение: x=>y
и не будет этого самого : ;)

_Harry писал(а):
Вот что за проблема с буфером и чем строка из Buffer> отличаются от строки из S>HEAP просто таки загадка века.

я же сказал, разберусь ;)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 10:15 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
достаточно закоментировать одну строчку:

Ну и еще кое что закоментировать придется. :wink: Это как раз не проблема,
а вот надо какие то проверки на корректность добалять.
Например выражение s" a+=b" будет обработано связкой >postfix EVALUATE
не по Си-шным правилам. Хотя в моем случае появление такого выражения и подобных ему должно вызывать ошибку.

mOleg писал(а):
я же сказал, разберусь

А никто и не сомневался :wink:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 14:37 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
Ну и еще кое что закоментировать придется. Это как раз не проблема,

на самом деле проблема, я пока не придумал, как бы получше обойти косяк с ;CREATE .
_Harry писал(а):
а вот надо какие то проверки на корректность добалять.

дело в том, что я не думал парсить сишный текст, наоборот, я думал о том, что не плохо было бы иногда в Форте иметь возможность иметь возможность прямой записи, т.е. шутки типа OVER+DUP* должны работать, т.е.: OVER DUP * +
;) что же до ошибок, то ловить их можно, для этого надо анализировать состояние стека операторов на выходе.
проблема в том, что количество входных и выходных параметров контролировать невозможно.

_Harry писал(а):
Например выражение s" a+=b" будет обработано связкой >postfix EVALUATEне по Си-шным правилам. Хотя в моем случае появление такого выражения и подобных ему должно вызывать ошибку.

тогда нужно начинать с сишного парсера..

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 16:13 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
я думал о том, что не плохо было бы иногда в Форте иметь возможность иметь возможность прямой записи, т.е. шутки типа OVER+DUP* должны работать, т.е.: OVER DUP * +

Бр... а сам то потом не будеш путаться где как записанно.
Неее помне лучше "Форту фортово..." Но уменя вот такая идея недавно возникла

Код:
Formula{ (a+2-c)/2 }Formula \ Слово правда длинновато... идея вобщем :roll:

Formula{ Вычисляет инфиксное выражение и кладет значение на стек или компилирует
}Formula просто завершает это дело
Вобщем ты понял... :wink:

Вот а практически я столкнулся с тем что нужно все таки заголовочные файлы Си-шные транслировать.
И там как раз инфиксные выражения переодически попадаются.
Полноценный Си-шный парсер вобщем то не нужен а вот проверку на допустимость какую то надо иметь.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 17:01 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
Бр... а сам то потом не будеш путаться где как записанно.

Не буду, т.к. я пользуюсь постфиксом 8) Опять же, pp2.f - это иллюстрация идеи, как можно разбирать префиксную запись, целью которой было схематически показать, как можно сделать не только преобразование префиксной записи в постфиксную, а так же налету менять правила (достаточно подставить другой словарь в oplist ).
Сделать контроль ошибок можно.

_Harry писал(а):
Formula{ Вычисляет инфиксное выражение и кладет значение на стек или компилирует}Formula просто завершает это делоВобщем ты понял...

да это было сразу понятно, правда для этого придется подправить слово: expression

_Harry писал(а):
Вот а практически я столкнулся с тем что нужно все таки заголовочные файлы Си-шные транслировать.И там как раз инфиксные выражения переодически попадаются.

где-то я экспериментировал с разбором сишных хидеров, ээ, typedef.fts в набросках.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пт июл 09, 2010 18:45 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
где-то я экспериментировал с разбором сишных хидеров, ээ, typedef.fts в набросках.

Угу видел конечно но там не совсем то что мне нужно.
Мне не столько структуры нужны, сколько выражения типа #define (1233*2)+12
Ну и некоторые другие которые к Си-шному стандарту отношения не имеют но используются в компиляторе.
Вобщем все у нас получится :wink:


Последний раз редактировалось _Harry Пт июл 09, 2010 18:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Сб июл 10, 2010 15:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
_Harry писал(а):
Столкнулся с проблемой при попытке интерпретации полученой с помщью >postfix строки.Хотя выяснилось что дело не в >postfix-е а в буфере но пишу здесь.Вобщем так текст помещеный в буфер созданны с помощью memory/ buff.ftsпри попытке его интерпретации EVALUATE вызывает вылет без вывода сообщений.

проблема обнаружена и исправлена. См новую сборку.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: *преобразование скобочной записи в постфикс
СообщениеДобавлено: Пн июл 12, 2010 10:30 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
mOleg писал(а):
проблема обнаружена и исправлена. См новую сборку.

Ага теперь карашо т.е. гут!
А подскажи что с буфером получалось почему строка из него не EVALUAT-илась :wink:
интересно же :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 148 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB