Поднимите ParseError в Haskell / Parsec - PullRequest
6 голосов
/ 19 ноября 2009

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

1 Ответ

5 голосов
/ 19 ноября 2009

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

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

...