ProcessingからJavaのコードを生成する

2015/05/02 4:22 に gutugutu3030 が投稿   [ 2015/07/14 1:59 に更新しました ]
リフレクションとか使いたい人間にとって,ProcessingのコードはうざったいくらいJavaのコードから遠い.
colorなんて型Javaにはないし,
int(1.5)とかでキャスト出来るのも意味がわからない.
じゃあリフレクションとかJavaCompilerに投げれるようにJavaのコードに変換する必要がある.
それを自分で書くのも癪なので,Processingのコードから引っ張ってくる.(途中まで書いてしまったんだけど.)

必要なjarファイルは2つ.「pde.jar」と「antlr.jar」.
どちらもダウンロードしてきたProcessingのlibファイルに転がってるのを拝借する.(codeフォルダにコピー)
ソースは次みたいな感じ.
import antlr.*;
import processing.mode.java.preproc.*;
import java.io.*;
String javaStr=null;
PdePreprocessor preproc=new PdePreprocessor("Test",2);
String p5code="void setup(){size(640,480);} void draw(){background(0,0,255);}";
Writer stream=new StringWriter();
try {
  preproc.write(stream, p5code);
  javaStr=stream.toString();
}
catch(Exception e) {
  e.printStackTrace();
}
finally {
  try {
    stream.close();
  }
  catch(Exception e) {
    e.printStackTrace();
  }
}
println(javaStr);

気になる記述は2つ.
まず,5行目.
 PdePreprocessor preproc=new PdePreprocessor("Test",2);
String p5code="void setup(){size(640,480);} void draw(){background(0,0,255);}";

"Test"は出力するクラスの名前.
2というのはインデントの大きさ.これだと空白2つ分.
"void setup(){size(640,480);} void draw(){background(0,0,255);}"は変換したいprocessingのコード.

こんなに簡単に引っ張ってこれるとは思ってなかった.

Comments