Парсер арифметических выражений...

Модератор: Модераторы разделов

dimaz-z
Сообщения: 22

Парсер арифметических выражений...

Сообщение dimaz-z »

Мне бы хотелось написать программу для построения графиков функций... это для закрепления изучаемого c++ ... но для всего этого нужен парсер... я представляю, что наработок по этому поводу уже достаточно... мне бы простенький парсер для начала, а потом поняв алгоритм, я сам его доработаю... я c++ знаю на начальном уровне (по сравнению с гуру... :)) а вот книжек по алгоритмам неть :( ... помогите плз. буду рад всему: фрагментам кода, ссылкам и.т.п..... но хотелось бы иметь класс или пару функций парсера не очень больших по размеру, чтобы можно было полегче разобраться.... примерно не больше 500 строк :) мне для начала хотя бы нужно, чтобы он умел производить операции /*-+ ^ ну и со скобками работал, а потом я доаботаю :) помогите, плз.
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Парсер арифметических выражений...

Сообщение Shura »

поищи книги Кнута. Очень хороший материал.
Еще есть пример парсера в книге Страуструпа "Язык С++"
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Парсер арифметических выражений...

Сообщение oav »

(dimaz-z @ Вторник, 25 Января 2005, 17:31) писал(а):Мне бы хотелось написать программу для построения графиков функций... это для закрепления изучаемого c++ ... но для всего этого нужен парсер... я представляю, что наработок по этому поводу уже достаточно... мне бы простенький парсер для начала, а потом поняв алгоритм, я сам его доработаю... я c++ знаю на начальном уровне (по сравнению с гуру... :)) а вот книжек по алгоритмам неть :( ... помогите плз. буду рад всему: фрагментам кода, ссылкам и.т.п..... но хотелось бы иметь класс или пару функций парсера не очень больших по размеру, чтобы можно было полегче разобраться.... примерно не больше 500 строк :) мне для начала хотя бы нужно, чтобы он умел производить операции /*-+ ^  ну и со скобками работал, а потом я доаботаю :) помогите, плз.


если хочешь действительно разобраться, понять и написать - то путь однозначно один - Ахо, Ульман, Сети. "Компиляторы. Принципы, технологии, инструменты". С++ сдесь ни причем.

Если необходимо написать программу, которая просто это делает, то :
http://www.boost.org/libs/spirit/index.html
почти все сэмплы к спириту - это как раз калькулятор мат. выражений.

зы. АхоУльман - это книга конечно :)
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Парсер арифметических выражений...

Сообщение aLexx programmer »

Эх... Помню, как на первом семестре первого курса одно из обязательных заданий было доработать имеющийся парсер, чтобы он понимал кроме "+", "-", "*" и скобок ещё и возведение в степень и деление... И чтоб он упрощал выражение до многочлена, где возможно... Вот это было весело... :new_rolleyes:
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Парсер арифметических выражений...

Сообщение demongloom »

Ну это относительно гиморно решать. Я бы за такую задачку бы взялся, благо в школе теорию по такого рода теме проходили. Атоматы или как их там?
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Парсер арифметических выражений...

Сообщение elide »

я такую фигню делал на bison.
в документации к нему как раз и есть очень даже неплохой расширяемый калькулятор.
с переменными, там... с функциями пользовательскими...
слава роботам!
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Парсер арифметических выражений...

Сообщение Jan2ary »

Я как-то начал писать, уже почти готово было, но пришлось переключиться...

Рекурсия - великая вещь! :)
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали: