uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

AST変換について

GroovyのAST変換は良く知られていないかもしれませんし、何だそらいらねと思っている人も多いと思います。

AST変換についてつらつらと最近思っているのは、応用面から言うと、これは「Groovyなアノテーション」なのだなと。もちろん、アノテーションを介在しない「大域AST変換」というのもありJavaアノテーションの機能範囲には限定されないのですが、Javaアノテーションが目指そうとするところの先を含めて包括的に達成するものです。

Javaアノテーションの目的は、ソースコード上のマーカーを使ってJavaコードの動作や意味を変更したり追加したりするものですが、GroovyのAST変換は、コンパイレーションの前期処理を含む各フェイズに介在してそれを達成します。この際に扱うASTはバイトコードレベルではなく、ソースコードに近いレベルの構造であり、加工や生成が比較的(あくまで、比較的ですが)直感的です。

Groovyの場合はaptなども不要であり、Groovy実行系(含む実行時コンパイラ)単体で遥かに自由度の高いオペレーションを可能にします。

というような話を10/9のJJUG CCC 2009 FallのBOFで話す予定です。興味のある方はよってらっしゃいみてらっしゃますとありがたく。