Проверка ввода пользователем Math equation

#c

#c

Вопрос:

Я получил задание проверить математическое уравнение, например: x ^ 3 (2x-23 -> необходимо сообщить об ошибке и исправить ошибку в x ^ 3 (2 * x-23).

Мне нужна помощь с выполнением правильной логики для решения этой проблемы.

Ответ №1:

Вам необходимо реализовать простой анализатор для преобразования строки уравнения в AST.

Первым шагом является лексический анализ, преобразуйте строку уравнения в список токенов.

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

(Если вам нужно только проверить это, не вычисляя конечный результат, лучше используйте стороннюю библиотеку.)