А и B. Сначала я хочу воспользоваться парсером А, но в случае если что-то не так (не может присоединится к url или еще что-то, в общем он не отработает), то я хочу переключиться на парсер В. Вот как красиво реализовать эту схему?
Кажется паттерн стратегия
А переключение то он не поможет реализовать
если оба парсера реализуют какой-то общий интерфейс, я бы их обернул в декоратор и дергал из него по очереди
Самый красивый который реализован в парсерах - это монадические комбинаторы. Когда у тебя парсер возвращает монаду, то комбинировать их проще простого.
Ну почти да, но уже есть готовые. FParsec. Там чтобы собрать парсер из двух парсеров через ИЛИ достаточно написать parser1 <|> parser2
» — Эй, гражданина! Ты туда не ходи — ты сюда ходи. А то снег башка попадёт — совсем мёртвый будешь...
На цепочку обязанностей можно посмотреть.
Обсуждают сегодня