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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - *преобразование скобочной записи в постфикс
Автор Сообщение
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
mOleg писал(а):
Цитата:
\ s" " S: ; \ пробелы просто пропускаются
\ Нет пробелы не считаются операторами


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

Собственно и мне сначало понравилось только это мешает правильно разбираться со знаками
Да и нелогично это, пробел все же не является оператором покрайней мере в Си подобных языках.
Сообщение Добавлено: Пт июл 23, 2010 16:37
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
mOleg писал(а):
там и в примере косяки с макросами надо очень внимательным быть

Точно ступил :shuffle;
Самое интересное что чтобы обойти ошибку в EVALUATE я как раз
mOleg писал(а):
надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно,
Это и делал таким образом свою ошибку и пропустил во как :!:
Сообщение Добавлено: Пт июл 23, 2010 16:31
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_Harry писал(а):
LITERAL тоже выполнится скомпилирует число в слово и что не так?

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

если же тебе необходимо, чтобы EVALUATE вычислил значение строки, надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно, тогда можно использовать и LITERAL, точнее, смотри слово literal в literals.f
Сообщение Добавлено: Пт июл 23, 2010 15:54
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_Harry писал(а):
Как это EVALUATE Выполнится во время компиляции и положит на стек 3

EVALUATE не вычисляет выражение, а "вклинивает" трансляцию текста внутрь текущего потока.
Короче, это как просто вставить в код t2 вместо ti1 выражение: 1 2 +
то есть равносильно
: t2 1 2 + 3 - ;
соответственно в коде так и будет: lit(1) lit(2) + lit(3) - exit
Сообщение Добавлено: Пт июл 23, 2010 15:52
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
mOleg писал(а):
поэтому, литерал выдаст ошибку исчерпание стека, если, конечно, на стеке у тя чего нить не болтается случайно завалявшегося.

Как это :?: EVALUATE Выполнится во время компиляции и положит на стек 3 , LITERAL тоже выполнится скомпилирует число в слово и что не так?
Сообщение Добавлено: Пт июл 23, 2010 15:46
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
вопрос писал(а):
нет , только для строки с действиями

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


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

Вобщем само нужное, ну для меня конечно, это подключение заголовочных файлов
это сделать вполне реально, а остальной код уж увольте я за такое браться не хочу.
Сообщение Добавлено: Пт июл 23, 2010 15:41
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
Цитата:
Это что транслятор с Си на Форт Бр........... спасибо не надо.

нет , только для строки с действиями
Сообщение Добавлено: Пт июл 23, 2010 15:17
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_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) исчерпание стека, если, конечно, на стеке у тя чего нить не болтается случайно завалявшегося.
Ж;)
Сообщение Добавлено: Пт июл 23, 2010 15:08
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
Цитата:
\ s" " S: ; \ пробелы просто пропускаются
\ Нет пробелы не считаются операторами

а зря, мне это нравится ;)
Сообщение Добавлено: Пт июл 23, 2010 15:04
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
mOleg писал(а):
должно быть так:
transl/ evaluate.fts
: ti1 s" 1 2 +" EVALUATE ; IMMEDIATE
: t2 ti1 3 + ;

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

Код:
: ti1 s" 1 2 +" EVALUATE [COMPILE] LITERAL ; IMMEDIATE  \ что тут неправильно?
\ Это слово должно скомпилировать результат работы EVALUATE
Сообщение Добавлено: Пт июл 23, 2010 14:59
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
mOleg писал(а):
source-id @ -2 <>

Угу я уже и сам туда добрался :wink:
Сообщение Добавлено: Пт июл 23, 2010 14:47
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
вопрос писал(а):
решение, учитывающее синтаксис языка весь

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

Дык кому надо пусть пользуется.
А меня этот мой постфикс вполне устраивает и именно как раз своей неуниверсальностью.
А собственно чем он неуниверсален ведь изменить набор слов операторов и список операторов используемый при разборе всегда можно ( кстати это неплохо бы вынести в отдельный файл ) сама то логика преобразования правильная.
Сообщение Добавлено: Пт июл 23, 2010 14:46
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_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 повторная правка
Сообщение Добавлено: Пт июл 23, 2010 14:30
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_Harry писал(а):
вопрос писал(а):
универсальное решение

Что имеется в виду :?:


Очевидно, cinf от Михаила Максимова :)
Сообщение Добавлено: Пт июл 23, 2010 13:15
  Заголовок сообщения:  Re: *преобразование скобочной записи в постфикс  Ответить с цитатой
_Harry писал(а):
вопрос писал(а):
универсальное решение

Что имеется в виду :?:
решение, учитывающее синтаксис языка весь
Сообщение Добавлено: Пт июл 23, 2010 13:14

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


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