Упрощение выражения: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «На этом этапе выполняется перемещение токенов-аргументов в хранилища параметров токено…»)
 
 
Строка 3: Строка 3:
Алгоритм упрощения:
Алгоритм упрощения:


[[Файл:Simplify.jpg]]
[[Файл:Simplify.jpg|400px]]


В цикле 6-11 выполняется перенос токенов-аргументов внутрь функционального токена. Каждый токен имеет метод get_required_parameter_count(), который возвращает количество ожидаемых аргументов. Если токен не является функциональным (т.е. число или переменная), то число параметров будет равно 0 и цикл выполняться не будет.  
В цикле 6-11 выполняется перенос токенов-аргументов внутрь функционального токена. Каждый токен имеет метод get_required_parameter_count(), который возвращает количество ожидаемых аргументов. Если токен не является функциональным (т.е. число или переменная), то число параметров будет равно 0 и цикл выполняться не будет.  
В обратной польской нотации при записи функции или оператора сначала идут аргументы (их порядок сохраняется), а затем сама функция/оператор. Т.к. param_it указывает на функциональный токен, то шаг 7 перемещает итератор назад к аргументу, после этого выполняется его перемещение и удаление из списка. На шаге 13 осуществляется попытка упростить выражение. Если все аргументы готовы, то на выходе получаем значение функции/оператора.
В обратной польской нотации при записи функции или оператора сначала идут аргументы (их порядок сохраняется), а затем сама функция/оператор. Т.к. param_it указывает на функциональный токен, то шаг 7 перемещает итератор назад к аргументу, после этого выполняется его перемещение и удаление из списка. На шаге 13 осуществляется попытка упростить выражение. Если все аргументы готовы, то на выходе получаем значение функции/оператора.

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

На этом этапе выполняется перемещение токенов-аргументов в хранилища параметров токенов-функций ops, вычисление функций, у которых каждый аргумент является числом. Данная операция выполняется для каждого элемента списка до тех пор, пока в нем не останется только один элемент – корень дерева.

Алгоритм упрощения:

Simplify.jpg

В цикле 6-11 выполняется перенос токенов-аргументов внутрь функционального токена. Каждый токен имеет метод get_required_parameter_count(), который возвращает количество ожидаемых аргументов. Если токен не является функциональным (т.е. число или переменная), то число параметров будет равно 0 и цикл выполняться не будет. В обратной польской нотации при записи функции или оператора сначала идут аргументы (их порядок сохраняется), а затем сама функция/оператор. Т.к. param_it указывает на функциональный токен, то шаг 7 перемещает итератор назад к аргументу, после этого выполняется его перемещение и удаление из списка. На шаге 13 осуществляется попытка упростить выражение. Если все аргументы готовы, то на выходе получаем значение функции/оператора.