解析 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)
我在检测到错误时从生产中调用它
我正在 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)
我在检测到错误时从生产中调用它