Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб окт 20, 2018 18:43

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

там и в примере косяки 8) с макросами надо очень внимательным быть
должно быть так:
transl/ evaluate.fts

: ti1 s" 1 2 +" EVALUATE ; IMMEDIATE

: t2 ti1 3 + ;


однако, ошибки я ловил, когда при закрытии текушего потока есть незавершонное поределение, а так, как evaluate работает с отдельным потоком, оно и вылезло, править sources.f
\ транслировать указанный источник с помощью слова представленного своим xt
: EvalSrcWith ( src xt --> )
SWAP SetSource
ON-SOURCE-START
CATCH *IF ~ErrPlace THROW THEN DROP
source-id @ -2 <> state AND ABORT" Незавершенное определение в конце исходного текста!"
ExitSource ;


* EvalSrcWith повторная правка

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


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

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

Это что транслятор с Си на Форт Бр........... спасибо не надо.
true-grue писал(а):
Очевидно, cinf от Михаила Максимова

Дык кому надо пусть пользуется.
А меня этот мой постфикс вполне устраивает и именно как раз своей неуниверсальностью.
А собственно чем он неуниверсален ведь изменить набор слов операторов и список операторов используемый при разборе всегда можно ( кстати это неплохо бы вынести в отдельный файл ) сама то логика преобразования правильная.


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
mOleg писал(а):
source-id @ -2 <>

Угу я уже и сам туда добрался :wink:


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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
mOleg писал(а):
должно быть так:
transl/ evaluate.fts
: ti1 s" 1 2 +" EVALUATE ; IMMEDIATE
: t2 ti1 3 + ;

ti1 положит на стек во время компиляции 3. И зачем мне это :?:

Код:
: ti1 s" 1 2 +" EVALUATE [COMPILE] LITERAL ; IMMEDIATE  \ что тут неправильно?
\ Это слово должно скомпилировать результат работы EVALUATE


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4954
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Цитата:
\ s" " S: ; \ пробелы просто пропускаются
\ Нет пробелы не считаются операторами

а зря, мне это нравится ;)

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4954
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
_Harry писал(а):
ti1 положит на стек во время компиляции 3. И зачем мне это

не верно!
как раз ti1 исполняет EVALUATE в режиме компиляции, а это значит, что
в код скомпилируется:
lit(1) lit(2) +

_Harry писал(а):
: ti1 s" 1 2 +" EVALUATE [COMPILE] LITERAL ; IMMEDIATE  \ что тут неправильно?\ Это слово должно скомпилировать результат работы EVALUATE

то есть, в коде будет: lit(1) lit(2) + lit(??)

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

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Это что транслятор с Си на Форт Бр........... спасибо не надо.

нет , только для строки с действиями


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

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

Ну на вскидку
Код:
A++
Как компилировать
Или
Код:
A+=5


A - может быть байтом, словом, двойным, словом и т.д.
Типы учитывать надо, структуры, перечесления, - мало?
Ладно дальше юниты, адреса, элементы масива .... думаю достаточно.

Вобщем само нужное, ну для меня конечно, это подключение заголовочных файлов
это сделать вполне реально, а остальной код уж увольте я за такое браться не хочу.


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

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

Как это :?: EVALUATE Выполнится во время компиляции и положит на стек 3 , LITERAL тоже выполнится скомпилирует число в слово и что не так?


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4954
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
_Harry писал(а):
Как это EVALUATE Выполнится во время компиляции и положит на стек 3

EVALUATE не вычисляет выражение, а "вклинивает" трансляцию текста внутрь текущего потока.
Короче, это как просто вставить в код t2 вместо ti1 выражение: 1 2 +
то есть равносильно
: t2 1 2 + 3 - ;
соответственно в коде так и будет: lit(1) lit(2) + lit(3) - exit

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


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

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

не так то, что LITERAL скомпилирует какое-то неизвестное число за 1, 2 и операцией сложения

если же тебе необходимо, чтобы EVALUATE вычислил значение строки, надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно, тогда можно использовать и LITERAL, точнее, смотри слово literal в literals.f

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


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

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

Точно ступил :shuffle;
Самое интересное что чтобы обойти ошибку в EVALUATE я как раз
mOleg писал(а):
надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно,
Это и делал таким образом свою ошибку и пропустил во как :!:


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

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

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
mOleg писал(а):
Цитата:
\ s" " S: ; \ пробелы просто пропускаются
\ Нет пробелы не считаются операторами


а зря, мне это нравится

Собственно и мне сначало понравилось только это мешает правильно разбираться со знаками
Да и нелогично это, пробел все же не является оператором покрайней мере в Си подобных языках.


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

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


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

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


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

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