我正在转换一些正在运行的Haskell代码,它使用Parsec来代替使用Attoparsec来获得更好的性能。我做了更改并编译了所有内容,但解析器无法正常工作。使用Attoparsec时输入不完整的问题
我正在解析一个由不同记录类型组成的文件,每行一个。我的每个解析记录或注释的函数都能正常工作,但是当我尝试编写函数来编译一系列记录时,解析器总是返回一个部分结果,因为它需要更多的输入。
这些是我尝试过的两个主要变化形式。两者都有同样的问题。
items :: Parser [Item]
items = sepBy (comment <|> recordType1 <|> recordType2) endOfLine
对于第二个,我更改了记录/注释解析器以消耗行尾字符。
items :: Parser [Item]
items = manyTill (comment <|> recordType1 <|> recordType2) endOfInput
我的方法有什么问题吗?有没有其他方法可以实现我所尝试的?
谢谢,这解决了我的问题。 – 2010-06-07 14:56:36