Есть ли анализатор Java для языка Java?

Я ищу библиотеку Java, которая позволяет мне анализировать исходный файл Java, и который дает мне AST-представление кода.

На самом деле меня интересуют только определения классов и методов с их аннотациями. Мне не нужно AST кода метода.

Я использую эту информацию для генерации кода. Вот почему я не могу сначала скомпилировать исходный файл, чтобы получить информацию из результирующего файла класса. Код не будет компилироваться без ошибок, пока я не сгенерирую некоторые дополнительные классы.

6 ответов

Решение

Я нашел проект javaparser, который анализирует один файл java и возвращает правильно сформированный AST.

Java 6 поддерживает это как встроенную часть компилятора и имеет стандартные API для него (javax.lang.model). Вы можете прочитать об этом здесь. Он разработан специально для вашего варианта использования (т.е. генерация кода из аннотаций и исходного кода).

ANTLR ( http://www.antlr.org/) имеет синтаксический анализатор для языка Java и поддерживает AST.

пытаться

options {
    output=AST;
}

в файле *.g (лично я не пробовал);

Вы можете попробовать JavaCC с файлом грамматики для языка Java.

@tangens писал о JavaParser, но ссылался на устаревший проект.

В 2011 году был форк, который все еще активно поддерживается, и теперь также анализирует Java 1.7 и 1.8.

Вы можете найти его там: https://github.com/javaparser/javaparser

Отказ от ответственности: я участвую в этом проекте.

Я думаю, что NetBeans Javaparser может быть чем-то, что вас заинтересует.

Другие вопросы по тегам