我想知道,如果在Haskell中有一个标准的,规范的方式,不仅要编写特定文件格式的解析器,还要写一个编写器。
在我的情况下,我需要解析一个数据文件进行分析。但是,我还模拟要分析的数据并将其保存为相同的文件格式。我现在可以使用Parsec或类似的东西编写解析器,并编写以所需方式执行文本输出的函数,但每当我更改文件格式时,我都必须在代码中更改两个函数。有没有更好的方法来实现这一目标?
谢谢你, 多米尼克
答案 0 :(得分:4)
BNFC-meta包https://hackage.haskell.org/package/BNFC-meta-0.4.0.3
可能就是你要找的东西
"具体来说,给定一个准引用的LBNF语法(由BNF转换器使用),它生成(使用Template Haskell)一个LALR解析器和非常漂亮的语言打印机。"
更新:发现此套餐似乎也符合目标(尚未测试)http://hackage.haskell.org/package/syntax