Mathexpr: различия между версиями
Перейти к навигации
Перейти к поиску
Alinap95 (обсуждение | вклад) (Новая страница: «Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:…») |
Alinap95 (обсуждение | вклад) |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы: | Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы: | ||
* Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации. | |||
* [[Упрощение выражения]]: вычисление инициализированных токенов, приведение списка к древовидной структуре. | |||
* Вычисление выражения. | |||
== | ==Парсинг выражения: заголовок функции== | ||
Математическое выражение реализуется классом Mathexpr. | |||
[[Файл:Mathexpr.jpg|700px]] | |||
Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках. | |||
{| class="wikitable" | {| class="wikitable" | ||
|+Члены класса Mathexpr | |||
|(конструкторы) | |||
|Создают математическое выражение на основе поданной строки: парсинг заголовка и тела формулы, первичное упрощение функции. | |||
|- | |||
|header | |||
|{{Header brief}}, реализуемый классом [[Header]] – строка до символа =. | |||
|- | |- | ||
|body | |||
|Тело математического выражения – строка после символа =. Тело представляет собой указатель на единственный токен - корень дерева, которое отражает синтаксическую структуру выражения. | |||
|- | |- | ||
| [[ | |operator() | ||
|Инициализирует аргументы математического выражения и вычисляет его значение. Оператор создает блок инициализации [[expr_param_storage]], а после успешного присвоения всем переменным значений вычисляет с помощью метода compute(), рекурсивно вычисляющий значение каждого элемента. | |||
|- | |- | ||
| [[ | |[[lexBody]] | ||
|{{lexBody brief}} | |||
| {{ | |||
|} | |} |
Текущая версия на 14:04, 21 апреля 2019
Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:
- Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации.
- Упрощение выражения: вычисление инициализированных токенов, приведение списка к древовидной структуре.
- Вычисление выражения.
Парсинг выражения: заголовок функции
Математическое выражение реализуется классом Mathexpr.
Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.
(конструкторы) | Создают математическое выражение на основе поданной строки: парсинг заголовка и тела формулы, первичное упрощение функции. |
header | Заголовок математического выражения, реализуемый классом Header – строка до символа =. |
body | Тело математического выражения – строка после символа =. Тело представляет собой указатель на единственный токен - корень дерева, которое отражает синтаксическую структуру выражения. |
operator() | Инициализирует аргументы математического выражения и вычисляет его значение. Оператор создает блок инициализации expr_param_storage, а после успешного присвоения всем переменным значений вычисляет с помощью метода compute(), рекурсивно вычисляющий значение каждого элемента. |
lexBody | Осуществляет лексический разбор входной строки с использованием алгоритма сортировочной станции и возвращает список, в котором выражение представлено в обратной польской нотации. |