新たなフィーチャーを実装するために Groovy の構文を拡張する、ということがよいアイデアに思えることもある (複数回の代入がいい例だ)。 だけど、ほとんどの場合文法規則にキーワードを追加することはできないし、新しい概念を表現するための構文を作ることもできない。 でも AST 変換を使えば文法規則を変えることなく革新的なアイデアに挑戦することができる。
Groovy コンパイラが Groovy スクリプトや Groovy クラスをコンパイルするとき、ソースコードはいくつかの過程を経てメモリ上に完全構文木 (Concrete Syntax Tree) を構築してそれを抽象構文木 (Abstract Syntax Tree) に変換する。 AST 変換はコンパイルプロセスによって AST がバイトコードに翻訳される前に開発者が介入できるようにするためのものだ。
AST 変換によって非常に柔軟で強力で実行時性能のペナルティの無いコンパイル時メタプログラミングが言語レベルで可能になった。