|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
||||||
Интепретатор №201.10.2009, 16:53. Показов 3254. Ответов 17
Метки нет (Все метки)
Прочитав тему [C++]Пишем свой интерпретатор, воодушевился написать свой, с 0.
На данный момент застопорился на арифметике. У меня возникла проблема с порядком вычислений. Если брать в "лоб" то выражение 2+2*2 будет равно 8. Если добавить рекурсию - то 2+2*2 будет считатся корректно, но выражение 3-1+2 будет равно 0, т.к. фактически оно считает 3-(1+2) (что необходимо для сохранения приоритета умножений/делений). Как лучше решить этот вопрос? Высладываю свою функцию расчета:
1
|
||||||
| 01.10.2009, 16:53 | |
|
Ответы с готовыми решениями:
17
Компилятор или интепретатор.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 01.10.2009, 17:04 | |
|
Можно использовать польскую инверсную запись, например, a+b в этой записи будет ab+. В этом случае отпадает необходимость в скобках.
0
|
|
|
|
||||||
| 01.10.2009, 17:16 | ||||||
|
Если тебя интересует просто вычисление выражения, то можно воспользоваться польской записью, про которую на форуме уже писалось много раз. Если реально хочешь сделать что-то наподобие интерпретатора, особенно если в него будет входить промежуточное представление, то тут лучше делать через рекурсивный спуск
Для начала посмотри пример и описание к этому примеру. Если будут какие-то конкретные вопросы - задавай Формальное описание синтаксиса для этой программы примерно такое:
Добавлено через 45 секунд Ну и чисто для самообразования: интепрЕтатор
1
|
||||||
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
||
| 01.10.2009, 17:45 [ТС] | ||
|
не думаю что это будет понятно простому русскому уму, т.к. нас еще в коле учили что 4ac это 4*а*с
Добавлено через 25 минут
0
|
||
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
|
| 01.10.2009, 18:13 [ТС] | |
|
0
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 01.10.2009, 18:27 | |
|
Прочитайте про польскую инверсную запись.
ab+ - это представление не будет никуда выводиться, оно для облегчения работы с записью. Разумеется, что сначала нужно выражение к такой записи преобразовать.
1
|
|
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
|
| 01.10.2009, 20:03 [ТС] | |
|
Evg, Кстати твоя программа заткнулась после вот такого примера:
(2-3+1*3)*2-4*(2-11)
0
|
|
| 01.10.2009, 20:47 | |
|
может быть можно начать с того, что определить что создается, и составить для наглядности набор тестов, который проиллюстрирует задачу и послужит доказательством правильности функционирования.
например: "2/2" -> "1" "2.2/2" -> "1.1" ...
0
|
|
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
|
| 01.10.2009, 22:54 [ТС] | |
|
может быть, но тогда выход из программы происходит не из main() т.к. я там добавил system("pause");
и получается что при простом примере все нормально, а при таком примере, окно открывается и сразу закрывается.
0
|
|
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
||
| 02.10.2009, 21:04 [ТС] | ||
|
Таки не работает, выдает:
0
|
||
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
|
| 02.10.2009, 23:43 [ТС] | |
|
Не знаю, может мне тестером устраиватся? Или прелести Dev C++?
0
|
|
|
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
|
||||||
| 03.10.2009, 08:27 [ТС] | ||||||
0
|
||||||
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|