我正在 Haskell 中使用 Alex 和 Happy 编写一个单子解析器。
我的误差函数定义如下:
parseError :: Token -> Alex a
parseError _ = alexError "error occurred"
在解析过程中如何发送自定义错误(例如尝试将字符串添加到数字时类型不正确)?
UPDATE
解析器不需要进行类型检查,因为我跟踪操作数类型,所以我在生产内部进行类型检查。
正如评论中所说,我不能使用parseError
,那么有没有办法打印错误并停止解析器呢?
我通过实现这个函数解决了这个问题:
fatalError :: (Show a1, Show a) => [Char] -> a -> a1 -> t
fatalError s l c = error ("Error at line " ++ (show l) ++ " column " ++ (show c) ++ ": " ++ s)
当检测到错误时,我从生产中调用它
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)