Тема 10. Комбинаторные парсеры

Содержание

  1. Базовые концепции
    1. Результат разбора
    2. Интерфейс парсера
    3. Простейшие парсеры
    4. Простейшие комбинаторы парсеров
  2. Комбинаторы
    1. Вспомогательные методы
    2. Последовательности
    3. Альтернативы
    4. Регулярные замыкания
  3. Пример: JSON
    1. Простые парсеры
    2. Массивы
    3. Объекты
    4. Полный парсер

Домашнее задание 12. Комбинаторные парсеры

  1. Простой вариант. Реализуйте функцию (parseObjectPostfix "expression"), разбирающую выражения, записанные в постфиксной форме, и функцию toStringPostfix, возвращающую строковое представление выражения в этой форме. Например,
    (toStringPostfix (parseObjectPostfix "( ( 2 x * ) 3 - )"))
    должно возвращать ((2 x *) 3 -).
  2. Сложный вариант. Реализуйте функцию (parseObjectInfix "expression"), разбирающую выражения, записанные в инфиксной форме, и функцию toStringInfix, возвращающую строковое представление выражения в этой форме. Например,
    (toStringInfix (parseObjectInfix "2 * x - 3"))
    должно возвращать ((2 * x) - 3).
  3. Бонусный вариант. Добавьте в библиотеку комбинаторов возможность обработки ошибок и продемонстрируйте ее использование в вашем парсере.
  4. Функции разбора должны базироваться на библиотеке комбинаторов, разработанной на лекции.