Я для одного хорошего друга такую задачу на паскале решил за один день. Разбор математических выражений - одна из тривиальных задач, что там были решены. Изучи и реализуй собственным кодом, потрать следующие три дня на обретение знаний.
Egorithm, да, разбор мат. выражений и его перевод в дерево операций с помощью обратной польской нотации - задача тривиальная и посильная для самостоятельной реализации студентом. Почитай теорию трансляторов, это очень интересная и простая тема.
В этом моем проекте даже виртуального процессора нет, там AST напрямую выполняется. Для тебя это сейчас - самое удобное и эффективное решение. Вот точное место, где производится разбор выражений. Вот как выглядит дерево операций. Это просто бинарное дерево.
Евгений Шатунов, имеете ввиду книгу по компиляторам с драконом?
Я думаю, что мне сначала нужно попробовать написать классы всяких стеков, деревьев, очередей, списков и прочего. Я как бы представление имею что это и как примерно сделать, но не писал. Как думаете?
Egorithm, книга с драконом - это для глубокго изучения вопроса. Не, сейчас ради обретения фундамента будет достаточно некоторых статей. Например с хабра: [1], [2], [3], [4], [5], [6]. Или с SO: [1].
Шаблоны стека и очереди у тебя уже есть, их можно не делать. Но вот бинарное дерево операций сделать надо. И сами операции тоже. Думай о константе, как о унарной операции, которая всегда возвращает одно значение. О переменной можно думать как о унарной операции, которая возвращает значение из внешней памяти, которая будет доступна в момент исполнения.
В целом, да, ты прав. Сейчас легче будет начать именно с этапа реализации АСТ формулы в виде бинарного дерева операций. На этом этапе ты уже сможешь выполнять АСТ как функцию чтобы сформировать значения для графика.
Это чёртов ад с этими сраными библиотеками, системами сборок и прочей хренью. Так все надоело. Потерял 3 дня и ничего не сделал. Лучше бы я сам этот парсер сел писать.
Vitaly Вот кстати яркий пример того, почему в C++ одно и то же велосипедят по 10 раз - никто сначала толком найти не может уже существующую библиотеку, а даже если найдёт - не может подключить)
Станислав Макаров, согласен, бывает такое ) А ещё в больших компаниях есть всякие политики безопасности, и написать своё бывает быстрее и дешевле, чем согласовать.