Трансформации AST — It's a kind of magic
А давайте я вам расскажу про полезный magic. Одна из самых главных плюшек в Груви, это, конечно метапрограммирование. Оно бывает двух типов — во время компиляции и во время исполнения. Метапрограммирование во время исполнения это примерно «ах, вы вызвали метод, которого не существует? Не страшно, мы сейчас чего-нить придумаем, на основе того, что вы имели ввиду, когда вызывали этот метод». Примеров такого масса — практически любая библиотека Груви основана на таких штуках, будь то билдеры, сларперы, Грейлзы, Рэтпак, Грейдл, и все остальное. Но, сейчас не об этом (если хотите об этом, смотрите пункт 1 наглого пиара в конце поста). Сейчас мы поговорим о метапрограммировании во время компиляции, а именно о том, как просто написав одно в коде, получить другое (ну, или дополнительное) в байткоде.Читать про полезный magic!