gpt4 book ai didi

parsing - 从源码到 AST 再到 CodeDom

转载 作者:行者123 更新时间:2023-12-03 03:06:49 25 4
gpt4 key购买 nike

我正在阅读《语言实现模式》( http://pragprog.com/book/tpdsl/language-implementation-patterns ) 这本书,其中混杂着一些其他书籍来阐明概念以及偶尔浏览的网站。我正在尝试制作一个工具来读取简单的编程语言并对其进行一些基本分析。

我陷入了这个工具的设计阶段。我构建了一个简单的手写递归体面解析器,可以很好地验证源文件。但是,使用 CodeDom 树执行源操作会很有用。

问题:

1) 像这样的工具所采取的逻辑步骤是:解析并构建文本树和匹配的符号表,然后将其转换为 CodeDom?

2)构建文本树时,最方便的是 AST,更容易转换为 CodeDom ..但是重构工具会维护语句中所有嵌入标记的列表,以便保留内联注释,以及如何做他们在他们的树中跟踪这个?

最佳答案

您可以构建自己的解析器、自己的树构建器、自己的树遍历器、自己的分析器、自己的 pretty-print ......但这需要大量工作。

您可能会考虑为您提供所有这些机制的工具。

这样的工具就是我们的 DMS Software Reengineering Toolkit

给定一个语法,DMS将解析并自动构建一棵树;是的,它会自动捕获“微 token ”(例如评论)并将它们附加到适当的树节点。它可以在转换之前或之后将树漂亮地打印出来。您必须提供对符号表的支持,因为这是一种语义,而不是语法结构,但 DMS 提供了通用符号表和范围管理工具作为构建的库。 DMS 还提供了用于控制和数据流分析的完整库,如果您想要进行认真的代码转换或重构,则需要这些库。

DMS 最好的特性之一是能够应用使用语法语法声明的转换,例如,“如果您看到这个(用我的语言),则将其替换为那个”。

您可以看到an example of defining lexer, parser, prettyprinter and transformation rules that define 9th grade algebra and a bit of calculus.重写规则用于对代数公式进行化简和计算符号导数。

关于parsing - 从源码到 AST 再到 CodeDom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2964801/

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