JavaからIokeを使う
コマンド"ioke"から呼ばれるはずのioke.lang.Mainをベースに、とりあえずJavaからIokeを使うテスツ。
r.evaluateString("hogehoge");
で、IokeのRuntimeにメッセージを送る。ioke.lang.Runtimeには他にも、ファイルを受け付けるものがあったりStreamを受け付けるものがあったりするので、まぁ要するにJavaから普通に使える訳だ。
public class Main { public static void main(String[] args) throws Throwable { ioke.lang.Runtime r = new ioke.lang.Runtime(); r.init(); try { System.out.println(r.evaluateString("hoge = method(\"fuga\")")); System.out.println(r.evaluateString("hoge")); System.out.println(r.evaluateString("1 + 1")); System.out.println(r.evaluateString("[1,2,3,:fuga]")); } finally { r.tearDown(); } } }
#<DefaultMethod:C1FF9F> fuga 2 [1, 2, 3, fuga]
どこぞの講演*1で作者自身が言う通り、Iokeはクソ遅い。何が遅いって、まずランタイムの初期化に10秒くらいかかる。r.init()で、標準オブジェクトを一通り初期化してるのが原因か?