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

Post date: May 2, 2015 11:22:46 AM

リフレクションとか使いたい人間にとって,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のコード.

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