2016-07-23 2 views
1

Как преобразовать ASTNode (или не менее CompilationUnit) в действительный фрагмент исходного кода?Преобразование ASTNode в код

В документации сказано, что не следует использовать toString, но не говоря уже о каких-либо альтернатив:

Возвращает строковое представление этого узла подходит только для целей отладки.

CompilationUnits имеет rewrite, но это не работает для АСТ, созданных вручную.

Параметры форматирования были бы хороши, но в основном я был бы доволен тем, что превращает произвольные ASTNodes в семантически эквивалентный исходный код.

ответ

1

В JDT нормальный способ для управления АСТ состоит в том, чтобы начать с базового CompilationUnit, а затем использовать перезаписывающее устройство для добавления контента. Тогда ASTRewriteAnalyzer/ASTRewriteFormatter должен заботиться о создании форматированного исходного кода. Создание CU, содержащего только объявление типа заглушки, не должно быть сложным, так что это один из вариантов.

Если это не соответствует вашим потребностям, вы можете захотеть испытать с помощью прямого вызова внутреннего org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.asString(ASTNode, RewriteEventStore). Если вы не редактируете существующие файлы, возможно, вы проигнорируете события, собранные в RewriteEventStore, просто используйте возвращаемую строку.

Смежные вопросы