如何将ASTNode(或至少一个CompilationUnit)转换为有效的源代码?
文档说不应该使用toString
,但不提及任何替代方案:
返回此节点的字符串表示形式,仅适用于调试目的。
CompilationUnits有rewrite
,但是那个对于手工创建的AST不起作用。
格式化选项会很好,但我基本上对任何将任意ASTNode转换为语义等效源代码的东西感到满意。
答案 0 :(得分:1)
在JDT中,AST操作的常规方法是从基本CompilationUnit
开始,然后使用重写器添加内容。然后ASTRewriteAnalyzer
/ ASTRewriteFormatter
应该负责创建格式化的源代码。创建一个只包含存根类型声明的CU应该不难,所以这是一个选项。
如果这不能满足您的需求,您可能需要直接调用内部org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.asString(ASTNode, RewriteEventStore)
进行体验。如果不编辑现有文件,您可能会忽略RewriteEventStore
中收集的事件,只需使用返回的字符串。