Есть ли анализатор Java для языка Java? - PullRequest
7 голосов
/ 31 октября 2009

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

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

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

Ответы [ 6 ]

10 голосов
/ 31 октября 2009

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

8 голосов
/ 31 октября 2009

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

попробуй

options {
    output=AST;
}

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

2 голосов
/ 08 марта 2015

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

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

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

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

2 голосов
/ 02 ноября 2009

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

2 голосов
/ 31 октября 2009

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

2 голосов
/ 31 октября 2009

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

...