Вопрос

Каков предпочтительный способ возникновения ошибок (ParseError) в Парсеке?У меня есть код внутри парсера, который выполняет проверку, и если проверка не удалась, ParseError должен быть возвращен (т. Left ParseError при беге parse).

Это было полезно?

Решение

Вы можете использовать Text.ParserCombinators.Parsec.Prim.unexpected и Control.Monad.fail для этого.Оба принимают String аргумент, обозначающий сообщение об ошибке и возвращающий (в данном случае) значение типа GenParser tok st a.

Подробнее см. Text.ParserCombinators.Parsec.Error, конкретно Message.Там вы можете прочитать, какую функцию использовать в каком случае (хотя обе они означают ошибку синтаксического анализа, семантически они немного различаются).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top