所以我仍然在尝试使用 Parsec,但我正在慢慢地将它融入我的工具箱。
当我有一个需要解析的文件时,我发现自己将文件作为字符串读取,然后将内容传递给解析:
problem <- readFile input
case runParser myParser () input problem of
Left err -> hPutStrLn stderr $ "Error: " ++ show err
Right cs -> -- continue processing...
不过,这似乎是一种相当常见的模式——我可以使用一些现有的函数来接受 aParsecT String u IO a
和 aFilePath
并解析内容吗?我在hoogle中找不到任何东西,但这可能只是想象力的失败。