在Parsec中提出错误(ParseError
)的首选方法是什么?我在执行检查的解析器中获得了一些代码,如果检查失败,则应返回ParseError
(即运行Left ParseError
时为parse
)。
答案 0 :(得分:5)
您可以使用Text.ParserCombinators.Parsec.Prim.unexpected
和Control.Monad.fail
。两者都使用String
参数表示错误消息,并返回(在本例中)类型为GenParser tok st a
的值。
有关详情,请参阅Text.ParserCombinators.Parsec.Error
,特别是Message
。在那里你可以读取在哪种情况下使用哪个函数(尽管两者都表示解析错误,它们在语义上略有不同)。