LINUX.ORG.RU
ФорумTalks

Парсинг формул. Вопрос теоретикам.

 ,


0

1

В общем дело такое. Мне нужно распарсить формулу и высчитать результат. Я где-то краем уха слышал, что это довольно классическая задача и отлично разжёвана то ли у Кнута, то ли ещё у кого из классиков.
Быстро не гуглится. Велосипедить говно вместо использования классического чугуна не хочу.
А ну, кто классику читал, ткните носом...

★★☆

У страусиного трупа подробно было все расписано с реализацией калькулятора.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Гм... Где-то у меня была его книженция. Вот только руки до неё так не дошли. Заодно может и наконец свою теоретическую плюсовую базу приведу в порядок:)

Stahl ★★☆
() автор топика

Добавь к слову калькулятор слова lex и yacc/bison. Найдёшь намного больше. Хотя можно заморочиться и сделать всё на Си.

sergej ★★★★★
()

Мне нужно распарсить формулу и высчитать результат

Из чего и во что парсить? Из LaTeX, допустим, а во что? Да и парсить LaTeX - не самое благодарное занятие. Приветствуется другой подход — код, скажем для Maxima, вставляется в окружение, который автоматически считается, а результат конвертится в LaTeX.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 2)
Ответ на: комментарий от Eddy_Em

Может тебе повезет, и ты найдешь круг задач, для которых С++ предпочтительней С. Я не нашел таких.

вопрос к эксперту, почему почти весь геймдев сидит на крестах тогда?

umren ★★★★★
()
Ответ на: комментарий от umren

Потому что это удобно. И вообще не слушай хейтеров. Никогда. Никаких. Они не несут полезной информации и не содержат конструктива. Они просто ненавидят. Плюсы, винду, правительство, зелёный цвет, пиво.

Stahl ★★☆
() автор топика
Ответ на: комментарий от umren

Откуда ж я знаю? Возможно, там С++ оправдан.

Eddy_Em ☆☆☆☆☆
()

А меня гугл это на втором собеседовании спросил, кто бы мог заранее предположить :(

Смотри на википедии shunting yard algorithm

Harald ★★★★★
()
Ответ на: комментарий от umren

Обезьянки же. Там баг на баге багом погоняет.

Впрочем, проблема тут не в С++

buddhist ★★★★★
()
Последнее исправление: buddhist (всего исправлений: 1)
Ответ на: комментарий от encyrtid

Прочитал сначала как «Дагонбук» и, Ктулху меня обосри, задумался каким боком тут Дагон. Потом прочитал правильно, вбил в гугл и поразился нелепости названия:)

Stahl ★★☆
() автор топика

1) строишь грамматику как для калкулятора (примеров куча), расширяешь своими операциями (обычно в примерах возведение в степень и корни не рассматривают)
2) скармливаешь lex/yacc'у

invy ★★★★★
()

ищи table-driven parser.

Реализовывается очень легко. У меня где-то валяется самописный быдлокод на Делфях.

dikiy ★★☆☆☆
()

Ловите для начала - http://habrahabr.ru/post/122397/

«Титиретики» не нужны в реальной жизни.

Их и так в отстойниках, называемых быдлотехническими типа ВУЗами, среди препов-лузеров пруд пруди.

Нужны практики.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 2)

В современных языках есть замечательная функция eval(). И если безопасность тебя не заботит, бери её прямо готовую и юзай!

amomymous ★★★
()
Ответ на: комментарий от Bioreactor

и не стыдно тебе было этот быдлокод сюда тащить

Harald ★★★★★
()
Ответ на: комментарий от beastie

Фи, как пошло! Use yacc, Luke!

В Styx определение языка не смешивается с C-кодом как в yacc. Styx генерирует библиотеку для работы с деревом разбора с удобным C-интерфейсом.

inoremap ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.