将 C#3 代码表示为 XML 中的抽象语法树

发布于 2024-08-31 00:51:52 字数 203 浏览 4 评论 0原文

我想知道是否有类似于 C#3 的 GCC_XML 的东西;基本上是一种用 XML 表示程序整个语法结构的方法。

创建表示后,我希望将其解析为 XDocument 并从那里解释或查询它。

有这方面的工具吗?

I was wondering if there is something similar to GCC_XML for C#3; basically a way to represent a program's entire syntactic structure in XML.

Once the representation is created, I was hoping to parse it into an XDocument and interpret or query it from there.

Are there tools out there for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鼻尖触碰 2024-09-07 00:51:52

我们的 DMS 软件重新工程工具包可以使用 C# 2/3/4 实现此目的。 (编辑 2014:现在是 C#5,编辑 2020:现在是 C#7 在 C#8 上工作)

DMS 具有针对 C#(以及 Java 和许多其他语言)的编译器精确解析器。

它会自动为其解析的内容构建完整的抽象语法树。每个 AST 节点都标有文件/行/列的标记,以表示该节点的开始,
最后一列可以通过 DMS API 调用来计算。它将注释附加到树节点,这样它们就不会丢失。 DMS 还可以从 AST 或修改后的 AST 重新生成有效代码;这使得它能够用于代码修改或生成。

它有一个内置选项,可以从 AST 生成 XML,包括节点类型、源位置(如上所述)和任何关联的文字值。命令行调用是:

 run DMSDomainParser ++XML  <path_to_your_file>

DMS 本身提供了大量的基础设施来操作它构建的 AST:
遍历、模式匹配(针对本质上以源形式编码的模式)、源到源的转换。

它具有C、COBOL和Java的控制流、数据流、指向分析、全局调用图;这一切都将发生在 C# 上。

DMS 被设计为比 XML 更好的解决方案来操作此类代码。

Our DMS Software Reengineering Toolkit can do this with C# 2/3/4. (EDIT 2014: and now C#5, EDIT 2020: now C#7 working on C#8)

DMS has compiler accurate parsers for C# (as well as Java and many other languages).

It automatically builds full Abstract Syntax Trees for whatever it parses. Each AST node is stamped with file/line/column for the token that represents that start of that node,
and the final column can be computed by a DMS API call. It attaches comments to tree nodes so they aren't lost. DMS can also regenerate valid code from the AST, or from a modified AST; this enables it to be used for code modification or generation.

It has a built-in option to generate XML from the ASTs, complete with node type, source position (as above), and any associated literal value. The command line call is:

 run DMSDomainParser ++XML  <path_to_your_file>

DMS itself provides a vast amount of infrastructure for manipulating the ASTs it builds:
traversing, pattern matching (against patterns coded essentially in source form), source-to-source transforms.

It has control flow, data flow, points-to analysis, global call graphs for C, COBOL and Java; that's all coming for C#.

DMS was designed to be a much better solution than XML for manipulating such code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文