在Haskell中解析和漂亮打印相同的文件格式

10

我想知道在Haskell中是否有一种标准的方法来编写特定文件格式的解析器和编写器。

在我的情况下,我需要解析一个用于分析的数据文件。然而,我还需要模拟要分析的数据并以相同的文件格式保存它们。我可以使用Parsec或类似的工具编写解析器,并编写执行所需文本输出的函数,但每当我更改文件格式时,我都必须更改代码中的两个函数。有没有更好的方法来实现这个目标?

谢谢, Dominik


1
我认为最简单的方法是定义一个表示文件语法的数据类型,然后按照您的想法编写单独的解析器和漂亮的打印机。这就是大多数语言库的做法。 - daniel gratzer
2
以下是Reddit上一些最近相关的帖子:12。在我看来,这项技术仍然显得相当实验性。 - Li-yao Xia
你想要做的是定义一个语法,并使用一些库来自动生成解析器和漂亮的打印输出。有许多库声称能够做到这一点,但推荐其中一个可能会超出范围(如果我有任何经验,我会说的)。 - jberryman
8
我强烈反对关闭投票。这个问题并不是要求寻找一个外部资源;它在询问如何解决一个适合于Stack Overflow的问题。回答问题时使用 "你可以用这个库解决这个问题" 是可以的;这些答案都是事实性的,而非基于个人意见;这不会引起规则旨在避免的非建设性互动。 - Cirdec
1个回答

5

非常感谢您的评论和回答。我确实在寻找“语法”的概念。除了BNFC-meta软件包,夏立尧的第二个链接还提到了有趣的syntax库。 - Dominik Schrempf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接