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