« TJS2 for Java | メイン | 吉里吉里2 for Java/Android の公開について考える »

2011年11月06日

Android:: TJS2 が少し動くように

    

Array クラス以外の組み込みクラスはまだ実装できていないが、それ以外は一通り実装は出来た。
結果はおかしいが、TJS2 スクリプトを読んで、実行することは出来るところまで来た。
吐かれるバイトコードを比較しつつデバッグしていく。
バイトコードの逆アセンブラは実装したので、比較的確認しやすい。
一通り動くようになったので、いろいろとやりやすくなった。

C++ から Java にしたこで、コピーと参照周りでバグがありそう。
既に1個発見して直したけど。
後は構文解析器周りは一から書いているので、まだまだバグがありそう。

ほぼ同じ動作をするはずだけど、支障のない範囲内で完全に同じではない実装になっている。
Java の組み込みソートの都合上 Array のソートは常に安定ソートになっていたり、メモリ管理は Java 任せなので、finalize の呼び出しタイミングが異なったりするはず。
後は、結果が異なるようなら修正するつもりのものとして、String.sprintf が Java の String.format で実装されていることから書式指定が異なるかもしれない。
ここは後で見直して致命的に違うようであれば実装し直す。
それと、オリジナルの正規表現は boost のものになっているが、Java 版は組み込みの正規表現で実装する予定。
構文解析器は、完全に別実装だけど、ここはオリジナルと同じように動作するようにする。
ただ、エラーメッセージは少し親切に出力できるようになる。

後から追加するクラスは、普通に Java で書いたものを手間なくバインドできるようにする。
TJS2 から Java の任意のクラスを生成して使うことも出来るけど、そうする意味はあまりないので、明示的に追加する形にしようと考えている。

思ったよりも実装に時間がかかっているが、ソースコード量を見たら仕方ないか。



投稿者 Takenori : 2011年11月06日 15:02




comments powered by Disqus
Total : Today : Yesterday : なかのひと