在 Haskell/Parsec 中引发 ParseError
在秒差距中引发错误 (ParseError
) 的首选方法是什么?我在解析器中获取了一些执行检查的代码,如果检查失败,则应返回 ParseError
(即运行 parse
时的 Left ParseError
) 。
What is the prefered way to raise errors (ParseError
) in Parsec? I got some code inside a parser that performs a check and if the check fails a ParseError
should be returned (i.e. Left ParseError
when running parse
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
Text.ParserCombinators.Parsec.Prim.unexpected
和Control.Monad.fail
为此。两者都采用一个String
参数来表示错误消息,并且将返回(在本例中)一个GenParser tok st a
类型的值。有关更多信息,请参阅
Text.ParserCombinators.Parsec.Error
,特别是消息
。在那里您可以阅读在哪种情况下使用哪个函数(尽管两者都表示解析错误,但它们在语义上略有不同)。You can use
Text.ParserCombinators.Parsec.Prim.unexpected
andControl.Monad.fail
for this. Both take aString
argument signifying the error message and will return (in this case) a value of typeGenParser tok st a
.For more, see
Text.ParserCombinators.Parsec.Error
, specificallyMessage
. There you can read which function to use in which case (though both signify a parse error, they are semantically slightly different).