gpt4 book ai didi

parsing - Haskell 解析器到 AST

转载 作者:行者123 更新时间:2023-12-04 13:14:07 25 4
gpt4 key购买 nike

作为学习 Haskell(并折磨自己)的练习,我正在考虑编写一个可配置的 Haskell 代码美化器。

它将支持用 JSON 或 YAML(或更好的东西?)编写的配置文件,该文件指定诸如排序导入、排序/分组等选项dataclass语句,部分之间的行数等。

我正在寻找用于生成抽象语法树 (AST) 的 Haskell 98 解析器并保留评论 .解析 GHC 及其语言扩展将是一个额外的好处。

在没有这样的事情的情况下,我想我可以编写一个递归下降解析器或使用 Parsec 或解析器生成器的解析器。也许滚动我自己会增加学习(和折磨:-))。

是否有一个完整的 Haskell->AST 解析器在开源许可下可用?如果我在这个项目上取得任何进展,我会把它放在 github 上。

最佳答案

haskell-src-exts 中有一个可用的解析器包裹。解析器不仅解析大部分 GHC 扩展;它还识别常见的扩展,例如语法 XML 文字等。您应该使用 parseModuleWithComments 如果您还想访问评论信息,请使用此功能。

但是请注意,注释并不存储在实际的语法树中。它们存储为带有位置信息的单独评论列表。如果您确实需要将注释包含在树中,那么通过使用线性合并算法将树与列表合并(两个序列都可以被认为是“排序的”),将它们包含在树中应该是相当简单的。评论甚至可以与关联的 AST 节点一起存储,因为“带注释”的 AST 可以在每个节点中包含任意元数据(默认情况下,只有 SrcSpanInfo )。实际haskell-src-exts中没有这样做的原因package 大概是因为 AST 解析器是在注释解析器之前编写的。

关于parsing - Haskell 解析器到 AST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com