279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|||||||||||
1 | |||||||||||
Парсер арифметических выражений20.07.2017, 22:01. Показов 6866. Ответов 33
Метки нет (Все метки)
Пишу парсер мат. выражений. Столкнулся с проблемкой: как обозначить унарные операции + и - ?
Есть мапа приоритетов:
Добавлено через 1 минуту Так же хотелось узнать стоит ли туда запихивать различные мат.функции и лепить им приоритет? Добавлено через 43 секунды
0
|
20.07.2017, 22:01 | |
Ответы с готовыми решениями:
33
Парсер арифметических выражений Реализовать парсер арифметических выражений (файловый ввод/вывод, задача №80 acmp) Написать парсер математических выражений с функцией упрощения этих выражений Вычисление арифметических выражений |
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
20.07.2017, 22:42 | 2 | |||||
Никак.
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
20.07.2017, 22:47 [ТС] | 3 |
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
20.07.2017, 23:00 | 4 |
1) Не стандартный доступ к мапе. Типа, если у нас унарная операция - добавь, парсер, скобочки, если бинарная - не добавляй. Тогда уж проще по двум мапам разнести.
2) Само выражение как хранится? Если как у меня, полиморфными объектиками, вам один фиг будет нужно по case'+': на каждый полиморфный объектик на стадии разбора выражения. И все эти таблицы остаются неудел. Если в форме структурок с кодом операции, вам для исполнения выражения понадобится switch по этому коду. А значит батарею case вы все равно получите, плюс табличка в нагрузку. Ну и нафига оно надо?
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
||||||
20.07.2017, 23:08 [ТС] | 5 | |||||
сделал фабрикой
Добавлено через 4 минуты Renji, на данный момент написано:
0
|
Заблокирован
|
|
20.07.2017, 23:16 | 6 |
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
20.07.2017, 23:32 [ТС] | 7 |
daun-autist, по-моему с ним только сорс разрастётся
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
20.07.2017, 23:37 | 8 | |||||
1) Дело конечно же хозяйское, но зачем там stack? В смысле, чем не устраивает решение в котором промежуточные данные складываются в стандартный стек, а не его наколеночный аналог? Единственное преимущество которое я вижу - stack не грозит переполнение. Но если у вас там выражения не на сто тысяч операторов, едва ли такое преимущество актуально.
2) Долго думал нафига эти фабрики.
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
||||||
21.07.2017, 10:22 [ТС] | 9 | |||||
Renji, идея кажется бредовой, но все же выскажусь: что если заюзать такую мапу:
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
21.07.2017, 10:40 [ТС] | 11 |
Ferrari F1, нельзя буст юзать
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
21.07.2017, 14:15 | 12 |
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
21.07.2017, 14:44 [ТС] | 13 |
Renji, тогда мне две фабрики делать придется
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
21.07.2017, 16:12 | 14 | |||||
Ну так нормально напишите фабрику и распил одной фабрики на две большой бедой не будет. Серьезно, у меня от вашего кода складывается ощущение что в ТЗ было "подмести плац ломом" ("а мне не надо быстрее, мне нужно чтобы ты за...мучался").
1
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
21.07.2017, 17:24 [ТС] | 15 |
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
21.07.2017, 17:29 | 17 |
Во-первых, в ней std::map который никогда не будет также быстр и компактен как switch. Во-вторых, все эти register_creation тупо громоздкие. Городить весь этот огород, ради того чтобы потом вызвать фабрику в одном единственном месте - из пушки по воробьям.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
21.07.2017, 18:38 | 19 |
0
|
21.07.2017, 19:37 | 20 |
Renji, emplace уже был мною упомянут), но рекции не последовало, хотя zarko97 был в сети.
Поэтому подумал, что мб ему нужон был именн инсерт Добавлено через 56 минут Хотя в данном случае у zarko97 должен выполниться инсерт принимающий r value ссыль, тогда в этом случае встает вопрос, что лучше перемещение или емпласе ?
0
|
21.07.2017, 19:37 | |
21.07.2017, 19:37 | |
Помогаю со студенческими работами здесь
20
Распараллеливание арифметических выражений Вычисление арифметических выражений Табулирование арифметических выражений Разбор арифметических выражений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|