uehaj's blog

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

スプーンとAST変換

さっき書いたenumの記事で思い出したのでご紹介ですが、フランスのINRIAがやってる(やってた?)Spoonというプロジェクトがありまして、これはなにかというと、Javaコンパイラを拡張して、特定アノテーションの指定をきっかけとしてコンパイラのコード生成とかに介入し、デザインパターンの実現をはじめとして、さまざまに機能拡張できるというものです。

これはなかなかGroovyのAST変換に近しいものです。Java版のAST変換というべきか、時期的に言ったらSpoonの方が遥かに先ですから、SpoonをGroovy流にしたのがAST変換というべきか。

Spoonを使ったプログラミングの例についてはこちらにありますが、さっきのN-tonだとか、分散計算だとかが実現されてます。DelegateGroovyに同名のがありやすね。使い方はちょっとちがうみたいですが。

実用性が高そうなものとしてはVisitorというのもあって、Visitorパターンで必要なさまざまなハウスキーピングメソッドを生成してくれるらしいのですが、GroovyのAST変換でも欲しい気がします。