Я не знаю, будет ли сотрудничать Java-компилятор COTS с вами, пытаясь расширить его синтаксис. И я не думаю, что это восстановит исходный код, но тогда вам может быть все равно, если вы хотите скомпилировать программы только после расширения ваших макросов.
Если вы хотите расширить грамматику, вы, как минимум, должны получить генератор синтаксического анализатора, грамматику для Java и начать взламывать. ANTLR подойдет, и я считаю, что у него есть доступная грамматика Java. Вам нужно будет создать симпатичный принтер для регенерации макро-разрешенного кода для передачи в компилятор; Я не думаю, что ANTLR предлагает это с полки.
С практической точки зрения, я подозреваю, что вам понадобится информация таблицы символов, которую гигиенические макросы могут проверять и корректировать по мере расширения. В этом случае вы можете получить компилятор Java с открытым исходным кодом ( Jikes ) и взломать его. Возможно, такие компиляторы с открытым исходным кодом не соответствуют последним стандартам Java.
Если вам нужно что-то достаточно свежее, то есть анализирующий Java, позволяющий вам взломать грамматику и обладающий полной поддержкой таблиц символов, вы можете рассмотреть наш инструментарий реинжиниринга программного обеспечения DMS и его Java Передний конец . DMS обеспечивает синтаксический анализ, построение дерева, построение таблицы символов, процедурный доступ / модификацию AST, красивую печать для регенерации источника и преобразования источника в источник для того, какую грамматику вы определяете для DMS (включая ваши гигиенические макросы, если вы добавляете их синтаксис в грамматика Java).