Mathexpr
Перейти к навигации
Перейти к поиску
Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:
- Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации.
- Упрощение выражения: вычисление инициализированных токенов, приведение списка к древовидной структуре.
- Вычисление выражения.
Парсинг выражения: заголовок функции
Математическое выражение реализуется классом Mathexpr.
Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.
(конструкторы) | Создают математическое выражение на основе поданной строки: парсинг заголовка и тела формулы, первичное упрощение функции. |
header | Заголовок математического выражения, реализуемый классом Header – строка до символа =. |
body | Тело математического выражения – строка после символа =. Тело представляет собой указатель на единственный токен - корень дерева, которое отражает синтаксическую структуру выражения. |
operator() | Инициализирует аргументы математического выражения и вычисляет его значение. Оператор создает блок инициализации expr_param_storage, а после успешного присвоения всем переменным значений вычисляет с помощью метода compute(), рекурсивно вычисляющий значение каждого элемента. |
lexBody | Осуществляет лексический разбор входной строки с использованием алгоритма сортировочной станции и возвращает список, в котором выражение представлено в обратной польской нотации. |