Насколько я знаю, единственный способ проанализировать исходный код Java в AST (Абстрактное синтаксическое дерево) состоит в том, чтобы использовать API Дерева Компилятора Java: com.sun.source.tree
У меня есть два вопроса:
Вы можете взять tools.jar и использовать его. javac с открытым исходным кодом, так что вы можете просто взять этот код (предполагая, что вы можете иметь дело с лицензией). Antlr также имеет грамматику для Java.
Что касается вашего второго вопроса, то в дополнение к Солнцу доступны десятки парсеров Java. Вот небольшой пример:
Мой лучший совет - попробуйте каждый из них, чтобы посмотреть, какой из них работает лучше всего для ваших нужд.
.Я использовал парсер AST Эклипса. Я нашел его довольно хорошим (ну, он был частью плагина Eclipse, так что имело смысл его использовать). Смотрите Изучение ASTParser Eclipse.
.Это не единственный путь.
См. наш Java Front End , который представляет собой полнофункциональный парсер Java, построенный на основе DMS Software Reengineering Toolkit . Он анализирует Java и строит AST как внутренние структуры данных.
Суть DMS заключается в том, что она предоставляет огромное количество дополнительных полезных машин (грамматические атрибуты, таблицы символов, анализ потока, манипуляции с AST, включая доступ и обновление, а также преобразования из исходного кода в исходный) для анализа и преобразования этого AST в результаты и/или модифицированный исходный код. Если вы получите "просто" парсер Java (например, JavaCC + грамматика Java), то вы, IMHO, не сможете многого с ним сделать. DMS позволяет делать много, без необходимости изобретать всю эту дополнительную технику самостоятельно.
Если вы действительно не хотите использовать дополнительную технику, предоставляемую DMS, то она выкинет дерево как XML.
.