gpt4 book ai didi

haskell - 使用 Attoparsec 时输入不完整的问题

转载 作者:行者123 更新时间:2023-12-02 21:22:24 26 4
gpt4 key购买 nike

我正在将一些使用 Parsec 的功能 Haskell 代码转换为使用 Attoparsec,希望获得更好的性能。我已经进行了更改并且所有内容都已编译,但我的解析器无法正常工作。

我正在解析一个由各种记录类型组成的文件,每行一个。我用于解析记录或注释的每个函数都可以正常工作,但是当我尝试编写一个函数来编译记录序列时,解析器总是返回部分结果,因为它需要更多输入。

这是我尝试过的两个主要变体。两者都有同样的问题。

items :: Parser [Item]
items = sepBy (comment <|> recordType1 <|> recordType2) endOfLine

对于第二个,我更改了记录/注释解析器以使用行尾字符。

items :: Parser [Item]
items = manyTill (comment <|> recordType1 <|> recordType2) endOfInput

我的做法有什么问题吗?还有其他方法可以实现我正在尝试的目标吗?

最佳答案

如果您编写的 attoparsec 解析器在失败之前消耗尽可能多的输入,则必须在到达输入末尾时告诉部分结果继续。

关于haskell - 使用 Attoparsec 时输入不完整的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com