Доступны ли генераторы Java (или байт-кода) AST, чтобы я мог запустить несколько посетителей поверх его результата? - PullRequest
4 голосов
/ 05 марта 2011

Я ищу инструмент, который возьмет либо файл исходного кода .java, либо .class или .jar и проанализирует его, создав AST (абстрактное синтаксическое дерево), чтобы я мог поиграть с ним. Я намереваюсь создать пару Посетителей, чтобы бегать поверх этого.

Существуют ли такие инструменты в Java? В .NET существует нечто подобное, называемое Mono.Cecil (хотя, похоже, на сегодняшний день он не поддерживает сам шаблон Visitor).

Спасибо

Ответы [ 2 ]

4 голосов
/ 05 марта 2011

Возможно, вас заинтересует ASTParser, используемый в Eclipse IDE.Вот хорошая статья о начале работы с ней.

1 голос
/ 05 марта 2011

Наш DMS Software Reengineering Toolkit - это механизм компилятора общего назначения с поддержкой синтаксического анализа, построения AST, создания таблиц символов, обхода / проверки / изменения AST и приятной печати измененного AST обратно в исходный код. Он также обеспечивает сопоставление шаблонов с шаблонами, записанными в поверхностном синтаксисе целевого языка, как определено синтаксическим анализатором, который он использует. DMS также предоставляет общие средства для вычисления управления и потока данных, а также графы вызовов. DMS предоставляет полную экосистему для поддержки создания произвольных анализаторов, преобразователей кода или генераторов в зависимости от ваших потребностей.

DMS имеет дополнительный интерфейс Java , который позволяет DMS предоставлять все эти возможности для обработки файлов Java и .class.

...