Упрощение выражения: различия между версиями
Alinap95 (обсуждение | вклад) (Новая страница: «На этом этапе выполняется перемещение токенов-аргументов в хранилища параметров токено…») |
Alinap95 (обсуждение | вклад) |
||
Строка 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, вычисление функций, у которых каждый аргумент является числом. Данная операция выполняется для каждого элемента списка до тех пор, пока в нем не останется только один элемент – корень дерева.
Алгоритм упрощения:
В цикле 6-11 выполняется перенос токенов-аргументов внутрь функционального токена. Каждый токен имеет метод get_required_parameter_count(), который возвращает количество ожидаемых аргументов. Если токен не является функциональным (т.е. число или переменная), то число параметров будет равно 0 и цикл выполняться не будет. В обратной польской нотации при записи функции или оператора сначала идут аргументы (их порядок сохраняется), а затем сама функция/оператор. Т.к. param_it указывает на функциональный токен, то шаг 7 перемещает итератор назад к аргументу, после этого выполняется его перемещение и удаление из списка. На шаге 13 осуществляется попытка упростить выражение. Если все аргументы готовы, то на выходе получаем значение функции/оператора.