Есть ли анализатор 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 может быть чем-то, что вас заинтересует.