Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
mOleg писал(а): Цитата: \ s" " S: ; \ пробелы просто пропускаются \ Нет пробелы не считаются операторами а зря, мне это нравится Собственно и мне сначало понравилось только это мешает правильно разбираться со знаками Да и нелогично это, пробел все же не является оператором покрайней мере в Си подобных языках.
[quote="mOleg"][quote] \ s" " S: ; \ пробелы просто пропускаются \ Нет пробелы не считаются операторами[/quote]
а зря, мне это нравится [/quote] Собственно и мне сначало понравилось только это мешает правильно разбираться со знаками Да и нелогично это, пробел все же не является оператором покрайней мере в Си подобных языках.
|
|
|
|
Добавлено: Пт июл 23, 2010 16:37 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
mOleg писал(а): там и в примере косяки с макросами надо очень внимательным быть Точно ступил Самое интересное что чтобы обойти ошибку в EVALUATE я как раз mOleg писал(а): надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно, Это и делал таким образом свою ошибку и пропустил во как
[quote="mOleg"]там и в примере косяки с макросами надо очень внимательным быть[/quote] Точно ступил :shuffle; Самое интересное что чтобы обойти ошибку в EVALUATE я как раз[quote="mOleg"]надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно, [/quote]Это и делал таким образом свою ошибку и пропустил во как :!:
|
|
|
|
Добавлено: Пт июл 23, 2010 16:31 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
_Harry писал(а): LITERAL тоже выполнится скомпилирует число в слово и что не так? не так то, что LITERAL скомпилирует какое-то неизвестное число за 1, 2 и операцией сложения если же тебе необходимо, чтобы EVALUATE вычислил значение строки, надо временно переключить state в режим трансляции, а потом, после трансляции строки, вернуть его обратно, тогда можно использовать и LITERAL, точнее, смотри слово literal в literals.f
[quote="_Harry"]LITERAL тоже выполнится скомпилирует число в слово и что не так?[/quote] не так то, что 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
[quote="_Harry"]Как это EVALUATE Выполнится во время компиляции и положит на стек 3 [/quote] 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 тоже выполнится скомпилирует число в слово и что не так ?
[quote="mOleg"]поэтому, литерал выдаст ошибку исчерпание стека, если, конечно, на стеке у тя чего нить не болтается случайно завалявшегося. [/quote] Как это :?: EVALUATE Выполнится во время компиляции и положит на стек 3 , LITERAL тоже выполнится скомпилирует число в слово и что не так[size=200]?[/size]
|
|
|
|
Добавлено: Пт июл 23, 2010 15:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
вопрос писал(а): нет , только для строки с действиями Ну на вскидку Код: A++ Как компилировать Или Код: A+=5 A - может быть байтом, словом, двойным, словом и т.д. Типы учитывать надо, структуры, перечесления, - мало? Ладно дальше юниты, адреса, элементы масива .... думаю достаточно. Вобщем само нужное, ну для меня конечно, это подключение заголовочных файлов это сделать вполне реально, а остальной код уж увольте я за такое браться не хочу.
[quote="вопрос"]нет , только для строки с действиями[/quote] Ну на вскидку [code]A++[/code] Как компилировать Или [code]A+=5[/code]
A - может быть байтом, словом, двойным, словом и т.д. Типы учитывать надо, структуры, перечесления, - мало? Ладно дальше юниты, адреса, элементы масива .... думаю достаточно.
Вобщем само нужное, ну для меня конечно, это подключение заголовочных файлов это сделать вполне реально, а остальной код уж увольте я за такое браться не хочу.
|
|
|
|
Добавлено: Пт июл 23, 2010 15:41 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
Цитата: Это что транслятор с Си на Форт Бр........... спасибо не надо. нет , только для строки с действиями
[quote]Это что транслятор с Си на Форт Бр........... спасибо не надо.[/quote] нет , только для строки с действиями
|
|
|
|
Добавлено: Пт июл 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(??) поэтому, литерал выдаст ошибку исчерпание стека, если, конечно, на стеке у тя чего нить не болтается случайно завалявшегося. Ж;)
[quote="_Harry"]ti1 положит на стек во время компиляции 3. И зачем мне это [/quote] не верно! как раз ti1 исполняет EVALUATE в режиме компиляции, а это значит, что в код скомпилируется: lit(1) lit(2) +
[quote="_Harry"]: ti1 s" 1 2 +" EVALUATE [COMPILE] LITERAL ; IMMEDIATE \ что тут неправильно?\ Это слово должно скомпилировать результат работы EVALUATE[/quote] то есть, в коде будет: lit(1) lit(2) + lit(??)
поэтому, литерал выдаст ошибку 8) исчерпание стека, если, конечно, на стеке у тя чего нить не болтается случайно завалявшегося. Ж;)
|
|
|
|
Добавлено: Пт июл 23, 2010 15:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
Цитата: \ s" " S: ; \ пробелы просто пропускаются \ Нет пробелы не считаются операторами
а зря, мне это нравится
[quote]\ s" " S: ; \ пробелы просто пропускаются \ Нет пробелы не считаются операторами [/quote] а зря, мне это нравится ;)
|
|
|
|
Добавлено: Пт июл 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
[quote="mOleg"]должно быть так: transl/ evaluate.fts : ti1 s" 1 2 +" EVALUATE ; IMMEDIATE : t2 ti1 3 + ;[/quote] ti1 положит на стек во время компиляции 3. И зачем мне это :?:
[code]: ti1 s" 1 2 +" EVALUATE [COMPILE] LITERAL ; IMMEDIATE \ что тут неправильно? \ Это слово должно скомпилировать результат работы EVALUATE[/code]
|
|
|
|
Добавлено: Пт июл 23, 2010 14:59 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
mOleg писал(а): source-id @ -2 <> Угу я уже и сам туда добрался
[quote="mOleg"]source-id @ -2 <> [/quote] Угу я уже и сам туда добрался :wink:
|
|
|
|
Добавлено: Пт июл 23, 2010 14:47 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
вопрос писал(а): решение, учитывающее синтаксис языка весь Это что транслятор с Си на Форт Бр........... спасибо не надо. true-grue писал(а): Очевидно, cinf от Михаила Максимова Дык кому надо пусть пользуется. А меня этот мой постфикс вполне устраивает и именно как раз своей неуниверсальностью. А собственно чем он неуниверсален ведь изменить набор слов операторов и список операторов используемый при разборе всегда можно ( кстати это неплохо бы вынести в отдельный файл ) сама то логика преобразования правильная.
[quote="вопрос"]решение, учитывающее синтаксис языка весь[/quote] Это что транслятор с Си на Форт Бр........... спасибо не надо.[quote="true-grue"]Очевидно, cinf от Михаила Максимова[/quote] Дык кому надо пусть пользуется. А меня этот мой постфикс вполне устраивает и именно как раз своей неуниверсальностью. А собственно чем он неуниверсален ведь изменить набор слов операторов и список операторов используемый при разборе всегда можно ( кстати это неплохо бы вынести в отдельный файл ) сама то логика преобразования правильная.
|
|
|
|
Добавлено: Пт июл 23, 2010 14:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
_Harry писал(а): mOleg Опять какие то косяки с EVALUATE там и в примере косяки с макросами надо очень внимательным быть должно быть так: 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 повторная правка
[quote="_Harry"]mOleg Опять какие то косяки с EVALUATE[/quote] там и в примере косяки 8) с макросами надо очень внимательным быть должно быть так: [color=#400080][pre]transl/ evaluate.fts
: ti1 s" 1 2 +" EVALUATE ; IMMEDIATE
: t2 ti1 3 + ;[/pre] [/color] однако, ошибки я ловил, когда при закрытии текушего потока есть незавершонное поределение, а так, как evaluate работает с отдельным потоком, оно и вылезло, править sources.f [pre][color=#0040FF]\ транслировать указанный источник с помощью слова представленного своим xt[/color] [color=#404080]: EvalSrcWith ( src xt --> ) SWAP SetSource ON-SOURCE-START CATCH *IF ~ErrPlace THROW THEN DROP source-id @ -2 <> state AND ABORT" Незавершенное определение в конце исходного текста!" ExitSource ;[/pre][/color]
[color=#FF0000]* EvalSrcWith повторная правка[/color]
|
|
|
|
Добавлено: Пт июл 23, 2010 14:30 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
_Harry писал(а): вопрос писал(а): универсальное решение Что имеется в виду Очевидно, cinf от Михаила Максимова
[quote="_Harry"][quote="вопрос"] универсальное решение[/quote] Что имеется в виду :?:[/quote]
Очевидно, cinf от Михаила Максимова :)
|
|
|
|
Добавлено: Пт июл 23, 2010 13:15 |
|
|
|
|
|
Заголовок сообщения: |
Re: *преобразование скобочной записи в постфикс |
|
|
_Harry писал(а): вопрос писал(а): универсальное решение Что имеется в виду решение, учитывающее синтаксис языка весь
[quote="_Harry"][quote="вопрос"] универсальное решение[/quote] Что имеется в виду :?:[/quote]решение, учитывающее синтаксис языка весь
|
|
|
|
Добавлено: Пт июл 23, 2010 13:14 |
|
|
|
|