解析 Happy 时显示自定义错误 Haskell

Show custom errors while parsing Happy Haskell

我正在 Haskell 中使用 Alex 和 Happy 编写单子解析器。

我的误差函数是这样定义的:

parseError :: Token -> Alex a
parseError _ = alexError "error occurred"

如何在解析过程中发送自定义错误(例如尝试向数字添加字符串时输入的类型不正确)?


更新

解析器不需要进行类型检查,我在生产过程中进行检查,因为我会跟踪操作数类型。 正如评论中所说,我不能使用 parseError,那么有没有办法打印错误并停止解析器?

我已经通过实现这个函数解决了:

fatalError :: (Show a1, Show a) => [Char] -> a -> a1 -> t
fatalError s l c = error ("Error at line " ++ (show l) ++ " column " ++ (show c) ++ ": " ++ s)

我在检测到错误时从生产中调用它