Содержание
- База
- Источники
- test, take и expect
- Генерация ошибок
- Тестирование
- Метод рекурсивного спуска
- Разбор вариантов
- Рекурсия
- JSON
- Строки
- Числа
- Массивы
- Объекты
Домашнее задание 13. Разбор выражений
-
Доработайте предыдущее домашнее задание так, чтобы
выражение строилось по записи вида
x * (x - 2)*x + 1
-
В записи выражения могут встречаться:
-
бинарные операции:
умножение
*
, деление /
,
сложение +
и вычитание -
;
-
унарный минус
-
;
-
переменные
x
, y
и z
;
-
целочисленные константы в десятичной системе счисления,
помещающиеся в 32-битный знаковый целочисленный тип;
-
круглые скобки для явного обозначения приоритета операций;
-
произвольное число пробельных символов в любом месте,
не влияющем на однозначность понимания формулы
(например, между операцией и переменной, но не внутри констант).
-
Приоритет операций, начиная с наивысшего
- унарный минус;
- умножение и деление;
- сложение и вычитание.
-
Разбор выражений рекомендуется производить
методом рекурсивного спуска.
- Алгоритм должен работать за линейное время.
- Лексический анализ (токенизация) не требуется.