← All posts tagged parsers

Macil
Haskell parsers github.com hackage.haskell.org
Очередной комбинаторный парсер для лексического анализа. Токены определяются в виде простых свёрток.

Относительно новый (первый коммит 2016-08-08), поэтому фич у него немного Если чо, эти же ребята пишут repa.

Эх, эту бы тулзу мне бы да год назад... Теперь уже без надобности.
Macil
Haskell parsers Мысли вслух:
1. На практике не бывает строго top-down или bottom-up парсеров: что-то идет «вверх», а что-то — «вниз». Особенно, если на входе дерево. Особенно, если это квази-парсер а-ля aeson или binary.
2. У континюейшена парсера должно быть две ветки. Как результат, фейлить можно двумя способами: возвращая состояние Fail через ветку «успех», или вызывая ветку «фейл». Разница, в работе комбинатора <|>.
3. Фейл ­­­­­­­­­­— частный случай преждевременного исчерпания входного потока. Т.о. можно подрихтовать входной поток, и перезапустить парсер. Это крайне важно в квази-парсерах а-ля aeson.

И да, аттрибутивные грамматики — рулят!