haskell - 获取 Parsec 的左输入

标签 haskell parsec

我想知道是否有办法在停止解析后从 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/

相关文章:

Haskell 秒差距问题

html - Haskell - Parsec 解析 <p> 元素

haskell - 如何解释编译器消息 'Couldn' t 匹配类型 : [b0] with: [a2] -> t :'?

haskell - Let .. in 语句在 IO 中不起作用?

parsing - Haskell 和秒差距 : Parsing two separated lists of numbers

haskell - 如何解析无序语法

haskell - 记录没有无限类型错误

haskell - 如何在 Haskell 中编写自定义显示功能

haskell - 将函数转换为无点样式会更改其类型

parsing - 在 Haskell 中正确解析 uu-parsinglib 中的行缩进