Forth http://fforum.winglion.ru/ |
|
*преобразование скобочной записи в постфикс http://fforum.winglion.ru/viewtopic.php?f=19&t=1509 |
Страница 6 из 10 |
Автор: | вопрос [ Вс янв 11, 2009 19:42 ] |
Заголовок сообщения: | |
Цитата: Так что для меня этот код видится чорным ящиком с множеством странных, непонятных и сложно-взаимосвязанных Но из словесного описания принцип действия понятен?
|
Автор: | VoidVolker [ Вс янв 11, 2009 20:48 ] |
Заголовок сообщения: | |
вопрос писал(а): (Злорадно) А вот почему я С++ читаю без напряга (почти)...
Ну так привычка и практика. |
Автор: | mOleg [ Чт фев 19, 2009 22:08 ] |
Заголовок сообщения: | |
достаточно своеобразное решение, сделано под форк контроля ошибок нет (и не надо в данном случае) все поддерживаемые операции спрятаны в отдельный словарь (можно подключать другой словарь с другим набором) алгоритм прост - берем следующую лексему, если это оператор - обрабатываем как оператор, если операнд - просто добавляем во внешний буфер. допустимые операции: присвоение - : то есть a:b эквивалентно a b ! отделение - ; разбивает выражение на два , то есть a+b=d; d+e=f извлечение - [ ] по результату выражения в скобках берется значение из памяти: [base+index*size]=123 другие скобки просто группируют выражения (меняют приоритет) \ 19.02.2009 ~mOleg |
Автор: | вопрос [ Чт фев 19, 2009 22:16 ] |
Заголовок сообщения: | |
преобразование префиксной записи в инфиксную именно так? |
Автор: | mOleg [ Чт фев 19, 2009 22:19 ] |
Заголовок сообщения: | |
вопрос писал(а): преобразование префиксной записи в инфиксную
именно так? пардон, исправил, конечно префиксной в постфиксную |
Автор: | вопрос [ Пт ноя 06, 2009 00:43 ] |
Заголовок сообщения: | |
Mihail писал(а): Только ненужно это. Изначально программа должна быть максимально простой.
За тем, решать только те проблемы, которые встретились на практике. Уже пришёл к выводу, что это один из губительных для мотивации подходов, ни в коем случае ... |
Автор: | mOleg [ Ср ноя 11, 2009 12:02 ] |
Заголовок сообщения: | |
добавлены исправления в мой вариант преобразование скобочной записи в постфикс исправлены последние ошибки, обнаруженные вопрос-ом : большое спасибо за помощь. была ошибка при сравнении приоритета, вместо <> (не равно) надо было <= (меньше или равно). предложенные тесты проходят. Как и ранее работает с форком |
Автор: | mOleg [ Ср ноя 11, 2009 12:04 ] |
Заголовок сообщения: | |
вопрос писал(а): Mihail писал(а): Только ненужно это. Изначально программа должна быть максимально простой.
За тем, решать только те проблемы, которые встретились на практике. Уже пришёл к выводу, что это один из губительных для мотивации подходов, ни в коем случае ... так поделись выводом вывода почему же так? к тому же, любой проект развивается "спирально", и "ничто так не улучшает программу, как потеря ее исходников" |
Автор: | вопрос [ Ср ноя 11, 2009 14:50 ] |
Заголовок сообщения: | |
mOleg писал(а): вопрос писал(а): Mihail писал(а): Только ненужно это. Изначально программа должна быть максимально простой. За тем, решать только те проблемы, которые встретились на практике. Уже пришёл к выводу, что это один из губительных для мотивации подходов, ни в коем случае ... так поделись выводом вывода почему же так? к тому же, любой проект развивается "спирально", и "ничто так не улучшает программу, как потеря ее исходников" НА самом деле, любой код, который не стремится быть как бы образцом решения типовой задачи 1. используется однократно - что преступление 2. трудно проверяем на правильность (т.к. представляет собою частный случай) 3. не мотивирует на исчерпывающее тестирование 4. не мотивирует на "академическую" функциональность - т.е. обязательно односторонний и неприменимый "в другом месте" Что легче создать: "функцию сравнения стандартных строк" или "функцию сравнения некоторых особенных строк в некотором особом случае для некоторого сообого компилятора" ? |
Автор: | вопрос [ Ср ноя 11, 2009 14:53 ] |
Заголовок сообщения: | |
поэтому максимальная простота программы оборачивается 1. недоделанностью (частный случай - несоответствием стандарту) 2. недотестированностью (в частности потому. что сложно реализовать все тестовые надстройки) 3. ограниченной функциональностью |
Автор: | mOleg [ Ср ноя 11, 2009 17:43 ] |
Заголовок сообщения: | |
вопрос писал(а): поэтому максимальная простота программы оборачивается
1. недоделанностью (частный случай - несоответствием стандарту) 2. недотестированностью (в частности потому. что сложно реализовать все тестовые надстройки) 3. ограниченной функциональностью если речь о конечном продукте, то спорить не о чем - ты прав! если же речь идет о - иллюстрации принципа, - наброске - скелете проекта то я полностью не согласен с тобой |
Автор: | _Harry [ Ср июл 07, 2010 12:15 ] |
Заголовок сообщения: | Re: *преобразование скобочной записи в постфикс |
Вопрос к mOleg-у Столкнулся с проблемой при попытке интерпретации полученой с помщью >postfix строки. Хотя выяснилось что дело не в >postfix-е а в буфере но пишу здесь. Вобщем так текст помещеный в буфер созданны с помощью memory/ buff.fts при попытке его интерпретации EVALUATE вызывает вылет без вывода сообщений. Ну к примеру вот так: Код: 0x1000 Buffer VALUE buf s" 1 2 +" buf >Buffer . \ Здесь TRUE buf Buffer> EVALUATE \ <- Здесь Вылет А вот так: Код: 0x1000 Buffer VALUE buf От не пойму в чем разница.
s" 1 2 +" buf >Buffer DROP buf Buffer> S>HEAP \ Перебросим в другое место COUNT EVALUATE \ <- Здесь все ок! (на стеке 3) |
Автор: | mOleg [ Ср июл 07, 2010 19:06 ] |
Заголовок сообщения: | Re: *преобразование скобочной записи в постфикс |
_Harry писал(а): Вопрос к mOleg-у ок, посмотрю. |
Автор: | _Harry [ Чт июл 08, 2010 16:03 ] |
Заголовок сообщения: | Re: *преобразование скобочной записи в постфикс |
Опять к mOleg Интересно это по правилам какого языка Код: s" a:b" >postfix TYPE Ни Cи ни Паскаль ни Басик вроде такого не имеют.a b ! ok (0) Может лучше этот оператор исключить |
Автор: | mOleg [ Чт июл 08, 2010 17:51 ] |
Заголовок сообщения: | Re: *преобразование скобочной записи в постфикс |
_Harry писал(а): Интересно это по правилам какого языка никакого, я делал пример, того, как можно реализовать присваивание. Можно вместо: сделать ':=' к примеру, но я не предусматривал разбор таких последовательностей в данном примере. _Harry писал(а): Может лучше этот оператор исключить неа, зачем? мне и так нравится |
Страница 6 из 10 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |