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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:…»)
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:
Mathexpr – подсистема, обрабатывающая введенные пользователем формулы. Функции подсистемы:
Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации.
* Парсинг введенного выражения: лексический, синтаксический анализ, представление в виде списка токенов в обратной польской нотации.
Упрощение выражения: вычисление инициализированных токенов, приведение списка к древовидной структуре.
* [[Упрощение выражения]]: вычисление инициализированных токенов, приведение списка к древовидной структуре.
Вычисление выражения.
* Вычисление выражения.




==Классы==
==Парсинг выражения: заголовок функции==
Математическое выражение реализуется классом Mathexpr.


[[Файл:Mathexpr.jpg|700px]]
Математическое выражение состоит из 2 частей: заголовка и тела. Заголовок включает в себя имя функции и список аргументов, которые перечисляются в скобках.
{| class="wikitable"
{| class="wikitable"
|+Члены класса Mathexpr
|(конструкторы)
|Создают математическое выражение на основе поданной строки: парсинг заголовка и тела формулы, первичное упрощение функции.
|-
|header
|{{Header brief}}, реализуемый классом [[Header]] – строка до символа =.
|-
|-
! Класс
|body
! Файл
|Тело математического выражения – строка после символа =. Тело представляет собой указатель на единственный токен - корень дерева, которое отражает синтаксическую структуру выражения.
! Описание
|-
|-
| [[/Medium/]]
|operator()
| medium.h
|Инициализирует аргументы математического выражения и вычисляет его значение. Оператор создает блок инициализации [[expr_param_storage]], а после успешного присвоения всем переменным значений вычисляет с помощью метода compute(), рекурсивно вычисляющий значение каждого элемента.  
| {{Распространение радиоволн ВЧ/Реализация/Medium brief}}
|-
|-
| [[/ModelMedium/]]
|[[lexBody]]
| medium.h
|{{lexBody brief}}
| {{Распространение радиоволн ВЧ/Реализация/ModelMedium brief}}
|}
|}

Текущая версия на 14:04, 21 апреля 2019

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

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


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

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

Mathexpr.jpg

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

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