uehaj's blog

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

Groovy 1.6.2が出てますのとAST変換のドキュメント

Groovy 1.6.2がリリースされてます。バグフィックスか。1.5.8もでてますがこれが1.5系の最終リリースなので1.6系に移行せよとのこと。

あと、AST変換のちゃんとしたドキュメントが出ている。

AST変換とはなにかというと、高レベルの見地から言えば、デザインパターン指向プログラミングを実現するもので、ImmutableとかSingletonとかを「手書き」で書かなくても,アノテーション指定すればそうなるというものです。

低レベルの見地からすると、Groovyコンパイラのフロントステージとバックエンドステージの間に介在して、前者が生成するAST(抽象構文木)を加工するフィルタ(visitor)をかまして、任意のセマンティクスを実現するもの。そのフィルタの起動フックがアノテーションになってる訳です。

大局的に言うと、言語の意味を、コンパイラソースコードを変更しなくてもかえられるという、広義のリフレクションみたいなもの。構文(Syntax)とロジック(Mop)の狭間の領域に対するリフレクションみたいなもの。コンパイル時メタプログラミングとも呼ばれる。javaassistとかでバイトコードを加工するのともにてるが、ASTレベルなので扱いやすい。

よろしければこちらもどうぞ。