Содержание
- Базовые концепции
- Результат разбора
- Интерфейс парсера
- Простейшие парсеры
- Простейшие комбинаторы парсеров
- Комбинаторы
- Вспомогательные методы
- Последовательности
- Альтернативы
- Регулярные замыкания
- Пример: JSON
- Простые парсеры
- Массивы
- Объекты
- Полный парсер
Домашнее задание 12. Комбинаторные парсеры
- Простой вариант.
Реализуйте функцию
(parseObjectPostfix "expression")
, разбирающую выражения, записанные в постфиксной форме, и функциюtoStringPostfix
, возвращающую строковое представление выражения в этой форме. Например,(toStringPostfix (parseObjectPostfix "( ( 2 x * ) 3 - )"))
должно возвращать((2 x *) 3 -)
. - Сложный вариант.
Реализуйте функцию
(parseObjectInfix "expression")
, разбирающую выражения, записанные в инфиксной форме, и функциюtoStringInfix
, возвращающую строковое представление выражения в этой форме. Например,(toStringInfix (parseObjectInfix "2 * x - 3"))
должно возвращать((2 * x) - 3)
. - Бонусный вариант. Добавьте в библиотеку комбинаторов возможность обработки ошибок и продемонстрируйте ее использование в вашем парсере.
- Функции разбора должны базироваться на библиотеке комбинаторов, разработанной на лекции.