Для оценки Java вам необходим весь семантический анализ, который сопровождает его («какова область действия этого идентификатора? Какого типа он имеет?»), А также интерпретатор.
Чтобы получить этот семантический анализ, вам нужно больше, чем просто AST: вам нужно полное разрешение имен (создание таблицы символов) и разрешение типов (определение типов выражений и проверка правильности выражений в контексте, в котором они находятся). ,
а также поиск по классу (к какому фактическому методу относится foo ?)
При этом вы можете рассмотреть вопрос о создании интерпретатора, обходя деревья в порядке выполнения. Вам также нужно будет создать менеджер хранилища; вам может не потребоваться полный сборщик мусора, но вам что-то понадобится. Вам также понадобится переводчик
для файлов .class, если вы действительно хотите что-то запустить, а это значит, что вам нужен парсер
(и разрешение имени / типа для файлов классов тоже).
Я не знаю, есть ли в Eclipse все это (по крайней мере, часть менеджера хранилища, которую вы можете получить бесплатно :). Я бы как-то ожидал этого, учитывая, что его оригинальный дизайн должен был поддерживать разработку Java, но за эти годы я был сильно разочарован множеством инструментов.
DMS Software Reengineering Toolkit - это тоже программа анализа / преобразования, которая работает со многими языками. Он имеет полный внешний интерфейс Java , включая синтаксический анализ, построение AST, построение таблицы символов и разрешение имен, разрешение типов, создание графиков вызовов (необходимых для разрешения вызовов виртуальных функций), а также средство чтения файлов .class для загрузки с разрешением имени. Так что это было бы хорошим основанием для создания переводчика.
DMS также может создавать произвольные AST, а затем генерировать из них исходный код, так что он прекрасно справится и с окончанием генерации кода.
[Причина существования DMS - это «сильно разочарованная» часть].