使用 Parsec 解析复杂文件

Parsing complex files with Parsec

我想用 Haskell 解析包含多个数据序列(相同列数、相同内容……)的文件。 我的数据序列将由关键字前后分隔。

BEGIN
1   882
2   809
3   435
4   197
5   229
6   425
...
END

BEGIN
1   235 623 684
2   871 699 557
3   918 686 49
4   53  564 906
5   246 344 501
6   929 138 474
...
END

我的问题是,在使用 Parsec 进行了几次测试之后,我的印象是 Parsec 更倾向于逐行而不是整个文件文件.

Parsec 是实现我想要的东西的正确方法吗?或者我应该考虑使用其他工具,例如 Happy亚历克斯 ?

是否有网站(或其他资源)提供使用 Parsec 解析复杂文本文件的示例?


注意:我给出的例子是非常简单的例子。如果我的文件中包含更多关键字和组合,事情会变得更加棘手。

您所描述的格式在秒差距内处理起来一点也不难。

至于学习如何使用它:您的第一步应该是避免任何指南给您的印象是 parsec 是逐行工作的。我推荐Chapter 16 of Real World Haskell as a good place to get started, and once you're comfortable with the basics the reference material at http://hackage.haskell.org/package/parsec其实很清楚