Ответ 1
Там JackPot, который основан на Java, но я не думаю, что он уделяет большое внимание. Имеет АСТ и символические таблицы AFAIK. Вы, вероятно, можете расширить его; Я сомневаюсь, что кто-нибудь остановит вас (или поможет).
Здесь есть API-интерфейсы компилятора Java для компилятора Sun, er, Oracle java. Вероятно, они активно поддерживаются, но я не думаю, что вы можете изменить исходный код и восстановить его. Конечно, есть таблицы символов; dunno о деревьях. Вероятно, довольно сложно расширить; вы должны идти в ногу с парнями-компиляторами, а не наоборот.
Существует ANTLR, в котором реализована реализация Java и парсер Java, который будет строить АСТ. Я не думаю, что он имеет полные таблицы символов, поэтому серьезный анализ/пересмотр кода, вероятно, будет сложным. ANTLR, безусловно, активно поддерживается, и никто не будет возражать против вас, улучшая грамматику Java с помощью таблиц символов. Просто знайте, что вам понадобится около 6 месяцев для Java 1.6, если это все, что вы делаете. (Как долго это потребовалось нашему внутреннему [умному] парню, чтобы сделать это для DMS, начиная с поддержки таблицы символов для 1.4).
Не в Java и не легко интегрируется в IDE, но способен проводить массовый анализ и преобразование на Java-коде, это наш DMS Software Reengineering Toolkit с его Java Front End.
DMS - это универсальное компиляторное оборудование: синтаксический анализ, построение АСТ, оборудование таблиц символов, механизм анализа потока, с дополнительными бонусами преобразований источника в исходное состояние и универсальная отпечатка АСТ обратно к юридическому тексту, включая сохранение комментариев. Он предлагает набор API-интерфейсов, поддерживающих эти службы, и дополнительные инструменты для определения грамматик и зависимых от langauge анализаторов потока.
Передняя грань Java предоставляет важную информацию (используя эти API) для DMS, чтобы позволить ей обрабатывать Java: грамматику/парсер, построение полной таблицы символов для Java 1.4-1.6 (с задержкой 1.7 на мгновение), а также некоторый контроль и анализ потока данных (который будет расширяться со временем, потому что этот материал настолько полезен).
Используя сервисы, предоставляемые DMS и интерфейсом Java Front, можно разумно рассмотреть возможность создания произвольных Java-приложений anlaysis и инструментов преобразования. (Это делает инструмент "полным" инструментом метапрограммирования, поскольку он может проверять любую структуру языка или изменять любую языковую структуру, в отличие от метапрограммирования или отражения шаблона). Мы считаем, что это намного эффективнее, чем специальные инструменты, потому что вам не нужно создавать инфраструктуру, предоставляемая инфраструктура является надежной и обрабатывает случаи, когда у вас нет энергии для реализации, и она предназначена для поддержки таких задач. YMMV.
DMS/Java Front end были использованы для построения множества инструментов Java: охват тестирования, профилировщики, устранение мертвого кода, определение клона в масштабе, JavaDoc с гиперссылками исходного кода, быстрый синтаксический анализатор/генераторы XML и т.д.
Да, он активно поддерживается; претерпевает непрерывное совершенствование с первой версии в 1998 году.