Содержание

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

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

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