@MaxBlack

Как создать простой парсер математических выражений?

Нужно создать простой парсер математических выражения (помимо стандартных +-*/ нужна поддержка мат функций - sin, cos, ln, exp и т.д)
Знаю, что тема далеко не новая и после прочтения многочисленных форумов остались такие вопросы:
1) многие советуют использовать польскую нотацию. К чему она здесь? (знаю, что это такое и как работает)
2) также люди советуют применять автоматы состояний. (также примерно знаю, как это работает, но совершенно не понимаю какие состояния могут быть в моей задаче - разве что считывание посимвольно и если несколько(хотя бы 2) букв стоит без разделителей, то переход к состоянию распознавания функции?
3) так как у меня это не основная часть проекта - буду использовать парсер для считывания уравнений и уже своими способами их решать, то очень интересует наиболее оптимизированное и менее затратное по времени решение.
А так делаю проект в учебных целях, то прошу не предлагать готовые для использования парсеры, а лучше советы, как реализовать это быстрее, не прочитывая пару тройку книжек о синтаксическом и лексическом анализе.
  • Вопрос задан
  • 913 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для создания своего парсера вам всё равно придётся изучить теорию. Начните с Книги фиолетового дракона, разберитесь в первых главах, постройте лексер на конечном автомате, составьте грамматику формул, которые хотите использовать, научитесь преобразовывать формулы из обычной записи в польскую.
Почему именно польскую? Потому что практически она содержит программу, пошагово выполняемую компьютером для вычисления формулы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы