Расширяется ли ecl-компилятор eclipse? - PullRequest
1 голос
/ 11 февраля 2020

Я заинтересован в изменении синтаксиса java и некоторых неявных парадигм. Поскольку я разрабатываю с помощью eclipse, который предоставляет собственный компилятор, который также можно использовать автономно, мне стало интересно, нельзя ли расширить ecj для соблюдения дополнительных правил грамматики (и их правильной обработки). Все мои синтаксические изменения можно разрешить, удаляя элементы из AST и создавая некоторые новые, поэтому я предполагаю, что то, что я хочу сделать, возможно без погружения в байт-код.

По сути, то, что я хочу сделать, можно сделать путем «виртуального» изменения исходного кода перед фактической компиляцией. Однако я подозреваю, что это может испортить исходное сопоставление, что приведет к отладке ада.

О sidenote: Мне известен проект Lombok, который расширяет и изменяет компиляцию классов, однако lombok использует только аннотации, и не изменяет синтаксис, строго говоря. Поэтому то, что я хочу сделать, более инвазивно к языковым спецификациям.

1 Ответ

3 голосов
/ 15 февраля 2020

Поскольку объектные команды упоминаются в комментариях:

(1) Объектные команды сами расширяют JDT для своего собственного языка OT / J , который является расширением Java. Это делается в двойной стратегии:

  • Мы поддерживаем fork org.eclipse.jdt.core. Несмотря на то, что это довольно тяжелый процесс, он успешно демонстрирует, что архитектура JDT подходит для модификации.
  • Мы используем наши собственные концепции ролевых объектов для неинвазивной адаптации поведение других частей IDE (в частности, org.eclipse.jdt.ui) для отражения семантики OT / J

(2) У меня есть несколько (oldi sh) постов в блоге, которые продемонстрировать, как OT / J можно использовать для создания неинвазивных вариантов JDT, включая поддержку расширенного синтаксиса:

Отказ от ответственности: я являюсь автором OT / J и ведущим его реализация, а затем стал коммиттером в Eclipse JDT.

Для дальнейших вопросов есть форум .

...