2016-07-23 355 views
1

如何將ASTNode(或至少一個CompilationUnit)轉換爲有效的源代碼片段?將ASTNode轉換爲代碼

的文檔中說,一個不應該使用toString,但沒有提到任何替代方案:

返回僅適用於調試目的這個節點的字符串表示。

CompilationUnits have rewrite,但那個不適用於手動創建的AST。

格式化選項會很好,但我基本上滿足於任何將任意ASTNode轉換爲語義等同的源代碼。

回答

1

在JDT中,AST操作的正常方式是從基本的CompilationUnit開始,然後使用重寫器添加內容。然後ASTRewriteAnalyzer/ASTRewriteFormatter應該照顧創建格式化的源代碼。創建一個只包含存根類型聲明的CU應該不難,所以這是一種選擇。

如果這不符合您的需求,您可能需要直接撥打內部org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.asString(ASTNode, RewriteEventStore)進行體驗。如果不編輯現有文件,則可能會忽略RewriteEventStore中收集的事件,只需使用返回的字符串即可。