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

时间:2010-05-05 04:41:06

标签: .net xml c#-3.0 abstract-syntax-tree

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

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

那里有工具吗?

1 个答案:

答案 0 :(得分:1)

我们的DMS Software Reengineering Toolkit can do this with C# 2/3/4。 (2014年编辑:现在是C#5)

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更好的 更好的解决方案。