Мой скрипт groovy, показанный ниже, загружается / компилируется во время выполнения.Во время выполнения я использую преобразования AST, чтобы подключиться к циклам в коде.Например, я хочу сделать это
@SpecialForLoop
for(int i in [1,2,3,4])
{
Fn1();
Fn2();
}
должно быть изменено на это
for (int i in [1,2,3,4])
{
loopingOnce(); // Custom code I will insert when handling AST
Fn1();
Fn2();
loopOnceDone(); // Custom code I will insert
}
Я попытался установить аннотацию, как показано, но компилятор жалуется, что это недопустимое местоположение дляаннотации (ElementType говорит, что это может быть только для переменных, локальных переменных, методов, конструкторов и параметров методов).Если бы я хотел сделать это, должен ли я подключиться к этапу компиляции раньше, чем семантический анализ?Это вообще возможно?
Если установить аннотацию в этом месте невозможно, есть ли преобразование AST для переименования ключевого слова for в special_for?
special_for(int i in [1,2,3,4,5])
{
// Do something with i
}
Есть ли способ сделать это в Groovy?