将ASTNode转换为代码

时间:2016-07-23 12:57:01

标签: eclipse-jdt

如何将ASTNode(或至少一个CompilationUnit)转换为有效的源代码?

文档说不应该使用toString,但不提及任何替代方案:

  

返回此节点的字符串表示形式,仅适用于调试目的。

CompilationUnits有rewrite,但是那个对于手工创建的AST不起作用。

格式化选项会很好,但我基本上对任何将任意ASTNode转换为语义等效源代码的东西感到满意。

1 个答案:

答案 0 :(得分:1)

在JDT中,AST操作的常规方法是从基本CompilationUnit开始,然后使用重写器添加内容。然后ASTRewriteAnalyzer / ASTRewriteFormatter应该负责创建格式化的源代码。创建一个只包含存根类型声明的CU应该不难,所以这是一个选项。

如果这不能满足您的需求,您可能需要直接调用内部org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.asString(ASTNode, RewriteEventStore)进行体验。如果不编辑现有文件,您可能会忽略RewriteEventStore中收集的事件,只需使用返回的字符串。