Поднимите ParseError в Haskell/Parsec
Вопрос
Каков предпочтительный способ возникновения ошибок (ParseError
) в Парсеке?У меня есть код внутри парсера, который выполняет проверку, и если проверка не удалась, ParseError
должен быть возвращен (т. Left ParseError
при беге parse
).
Решение
Вы можете использовать Text.ParserCombinators.Parsec.Prim.unexpected
и Control.Monad.fail
для этого.Оба принимают String
аргумент, обозначающий сообщение об ошибке и возвращающий (в данном случае) значение типа GenParser tok st a
.
Подробнее см. Text.ParserCombinators.Parsec.Error
, конкретно Message
.Там вы можете прочитать, какую функцию использовать в каком случае (хотя обе они означают ошибку синтаксического анализа, семантически они немного различаются).
Не связан с StackOverflow