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