parsing - Haskell 中 Data.ByteString.Lazy.Char8 的解析器?

标签 parsing haskell bytestring

嗨 我面临以下问题,我必须重新编写现有代码以提高他的性能。旧版本使用如下定义的解析器:

newtype Parser Char a = Parser {runParser :: [Char] -> [(a,[Char])]}

解析文件中的行。但它太慢并且需要大量内存才能实现在线计算。为了改进该代码,我决定使用 Data.ByteString.Lazy.Char8 而不是 String,但我不知道如何处理解析器,是否可以通过这种方式定义解析器?

newtype Parser Char a = parser {runParser :: ByteString -> [(a,ByteString)]} ?

或者,是否有专门用于此类工作的解析器包?

感谢回复

最佳答案

attoparsecParsec 3两者都有针对惰性字节字符串的接口(interface)。

(当然,可以用这种方式定义解析器,但我认为你的意思是

newtype Parser a = Parser {runParser :: ByteString -> [(a,ByteString)]}

)

关于parsing - Haskell 中 Data.ByteString.Lazy.Char8 的解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822210/

相关文章:

haskell - 字节串直方图

parsing - 你会如何解析 Markdown?

Haskell 不可变数据结构 - Map 数据类型

haskell - 使用随机数加密消息

haskell - 您可以将记录语法与 Haskell 数据类型中的枚举混合使用吗?

Haskell 字节串 : How to pattern match?

sockets - 从 Socket 句柄构建的惰性 ByteString 无法被延迟使用和 GC

android - 如何将数据类解析为 Kotlin 的 JSON 字符串?

php - 从文件解析数据后使用舍入函数

javascript - 如何在javascript中只读取小数点前的数字?