我想知道是否有办法在停止解析后从 Parsec 获取剩余的输入,无论解析成功还是失败,也许是这个签名:
parseRemaining :: Stream s Identity t => Parsec s () a -> SourceName -> s -> (s, Either ParseError a)
我们得到的不是 Either ParseError a
,而是还得到了剩余的 Stream s
最佳答案
看看Megaparsec
— Parsec 的现代分支,从版本 4.2.0 开始它允许提供
解析开始时的自定义状态并在结束时提取解析器状态(它
解析器成功或失败并不重要)。这允许部分解析
输入,恢复解析,指定非标准初始文本位置,
等参见
runParser'
和
runParserT'
.
披露:我是 Megaparsec 的作者之一。
关于haskell - 获取 Parsec 的左输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813797/