Mathexpr: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Строка 8: Строка 8:
Математическое выражение реализуется классом Mathexpr.
Математическое выражение реализуется классом Mathexpr.


//////////////////картиночка/////////////////////
[[Файл:Mathexpr.jpg|700px]]


Математическое выражение состоит из 2 частей: заголовка и тела (рисунок 1). Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.  
Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.  
{| class="wikitable"
{| class="wikitable"
|+Члены класса Mathexpr
|+Члены класса Mathexpr

Версия 10:13, 21 апреля 2019

Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:

  • Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации.
  • Упрощение выражения: вычисление инициализированных токенов, приведение списка к древовидной структуре.
  • Вычисление выражения.


Парсинг выражения: заголовок функции

Математическое выражение реализуется классом Mathexpr.

Mathexpr.jpg

Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.

Члены класса Mathexpr
(конструкторы) Создают математическое выражение на основе поданной строки: парсинг заголовка и тела формулы, первичное упрощение функции.
header Заголовок математического выражения – строка до символа =
body Тело математического выражения – строка после символа =. Тело представляет собой указатель на единственный токен - корень дерева, которое отражает синтаксическую структуру выражения.
operator() Инициализирует аргументы математического выражения и вычисляет его значение.
lexBody Осуществляет лексический разбор входной строки с использованием алгоритма сортировочной станции и возвращает список, в котором выражение представлено в обратной польской нотации.