Groovy

Groovy スクリプトで複素数データを扱う その3

次のようなスクリプトではうまくいくでしょうか。 // test4.groovy class test4 { public static void main (String [] args) { def z1 = 2 + i def z2 = 1 + 5 * i println z1 * z2 } } 前回用意した mygroovy.bat で動かしてみましょう。 C:\work>mygroovy…

Groovy スクリプトで複素数データを扱う その2

前回の test2.groovy をもう一度見てみます。 // test2.groovy // Number クラスに複素数オブジェクト用の演算を追加する。 // 加算 Number.metaClass.plus = {Complex b -> new Complex (delegate + b.r, b.i) } // 乗算 Number.metaClass.multiply = {Comp…

Groovy スクリプトで複素数データを扱う

Groovy で扱える既存の数値データBigDecimal、BigInteger、Byte、Double、Float、Integer、Long、および Shortに加え、複素数も Groovy の計算式の構文の中で扱えるよう拡張してみます。Groovy では様々なデータの上で使用可能な演算子のオーバーローディン…

.gy ファイルの関連付け

Grails って何ですか。Groovy はもはや WSH なみに私のデスクトップ上で大活躍してくれるスクリプト言語なので大好きだけど Grails にはまだ興味がわかないです。それはさておき、以前に .groovy ファイルの関連付けについて書きました。.groovy ファイルの…

Groovy AST の勉強 その4

前回のお題を実現する ASTTransformation を実装してみる。visit メソッドの内容は次の通り。メインクラスの ClassNode を取得し、(A)(B)(C)の変更を行う。 public void visit(ASTNode[] astNodes, SourceUnit sourceUnit) { def ast = sourceUnit.getAST() …

Groovy AST の勉強 その3

AST変換のネタを考えてみた。こんな題材: クラス定義をせずに記述したスクリプトにおいて print/println 文の出力内容をテキストエリアなどの GUI 部品に表示する。ただし、もとのスクリプトには、GUI 部品の記述は一切なしで。 これ、意外と使えると思うん…

Groovy AST の勉強 その2

今回のお題: ・入力となるソースコードをコンパイルする。 ・メインクラスの ClassNode を取得する。 ・取得した ClassNode のツリー構造を画像データにレンダリングする。次のようなステップで処理を行う。 (1) groovy スクリプトのファイルを読み出してコ…

.groovy ファイルの関連付け

.groovy ファイルを GroovyConsole に関連付けておくと、ダブルクリック一発でオープンできて何かと便利。Windows7 と Windows8.1 で確認した方法を記録しておく。(1)環境変数を適切に設定しておく。 環境変数 設定値 JAVA_HOME JREまたはJDKのトップディレ…

Groovy AST の勉強

Groovy の AST (Abstract Syntax Tree) の勉強をはじめた。学生時代にプログラミングの意味論 *1 や型理論 *2 を勉強していたので、「抽象構文」とか「具象構文」というキーワードが気分にささったものと思う。とりあえず Groovy サイトの次のページを読み始…

Groovy のパフォーマンス

Groovyのパフォーマンスを条件を変えて比較してみたのでメモしておきます。 ここでは次の7つの条件下での処理時間を比較してみます。 (1) Groovy スクリプト。なるべく Groovy らしい記述とする。(2) (1)をコンパイルしたクラス(3) (1)を静的コンパイルした…