高效"解析器a - > ByteString - >并[a]"功能

时间:2014-08-20 18:17:41

标签: haskell attoparsec

为已经创建的Attoparsec解析器的所有匹配解析大型文本内容(300K +)的最有效方法是什么?

我编写了一个性能缓慢的代码:

import Data.Either (rights)

findAll :: Parser a -> String -> [a]
findAll parser = rights . map (parseOnly parser . pack) . oneLess where
                        oneLess []           = []
                        oneLess (whole@(_:xs)) = whole : oneLess xs

它适用于String,但我认为最好的是ByteStrings。

在“abbabba”中解析“abba”应该只返回一个匹配[“abba”],即匹配后再继续。

0 个答案:

没有答案