发布于 2010-05-13 17:51:38
我们的DMS软件重组工具包可以在C# 2/3/4中实现这一点。。(编辑2014:现在是C#5,编辑2020:现在C#7在C#8上工作)
DMS为C# (以及其他许多语言)提供了精确的编译器解析器。
它会自动为它所解析的任何内容构建完整的抽象语法树。每个AST节点都为表示该节点开始的令牌标记文件/行/列,最后一列可以通过DMS调用计算。它将注释附加到树节点上,这样它们就不会丢失。DMS还可以从AST或修改后的AST重新生成有效代码;这使其能够用于代码修改或生成。
它有一个内置选项,可以从AST生成XML,包括节点类型、源位置(如上面所示)以及任何相关的文字值。命令行调用是:
run DMSDomainParser ++XML <path_to_your_file>
DMS本身为操作它构建的AST提供了大量的基础设施:遍历、模式匹配(针对基本上以源形式编码的模式)、源到源转换。
它有C、COBOL和Java的控制流、数据流、点对点分析、全局调用图;这一切都是针对C#的。
DMS被设计成一个比XML更好的解决方案来操作这样的代码。
https://stackoverflow.com/questions/2770664
复制