我需要将 C# 代码转换为等效的 XML 表示。
我计划将 C# 代码(C# 2.0 代码片段,无泛型或可空类型)转换为 AST,然后将 AST 转换为 XML。为 C# 寻找一个输出 AST 的简单词法分析器/解析器。
任何关于将 C# 代码转换为 XML 表示(可以转换回 C#)的指针也将非常有帮助。
亲切的问候,
还有问题:
正如 Mitch 所说,Antlr 可以成为您的解决方案。您可以根据需要转换 Antlr 的 AST 输出,然后使用 xstream 对其进行序列化。这就是我在我的 bs 项目中使用的方法,如果有人知道更好的方法,那对我也很好。
您可以找到 csharp 语法示例,例如http://www.antlr.org/grammar/1127720913326/tkCSharp.g或http://www.antlr.org/grammar/1151612545460/CSharpParser.g但您可能需要适应它到 ANTLRV3 或您自己的需要。
我们的DMS 软件再造工具包是一个用于构建代码分析器和转换器的生态系统。DMS 由语言定义参数化,并具有 C#、Java、C++、C、PL/SQL、PHP、JavaScript、COBOL 和各种其他语言的语言定义。当 DMS 根据语言定义进行解析时,它会自动构建一个 AST。DMS 提供的 AST 库可以以类似 Lisp 的括号形式或 XML 格式打印树。DMS 可以直接从 AST 重新生成源代码,而不是将 XML 转换回源代码。DMS 还提供源到源的转换以允许对 AST 进行操作。