「それActionScriptでやる必要あるの?」的なものをあえて実装したい身としては、やっぱりActionScript3でもスクリプトエンジン作りたいよね。で、やるからにはAS3だからこそ出来るモノを作りたい。
そうなると、実はもうやるべきことはほとんど決まってくる。それは、「言語仕様はECMAScript4で、ActionScriptByteCode(ABC)にコンパイルして、ネイティブ実行」。
ECMAScript4は、ご存知ActionScript3.0のベースとなってる言語仕様。
ActionScriptByteCode(ABC)ってのは、その名の通り、ActionScriptで使われてるバイトコード。AS3から採用。FlashやFlexでActionScriptをコンパイルすると、全てこのABCってヤツに変換されるわけです。フォーマットについては、Tamarin参照。つまり、ABCコンパイラを作っておけば、ASとの高い互換性を確保できると。
で、このABCをネイティブ実行。ASでそんなこと出来るの?って思うかもしれないけど、理論的には可能なはず。ABCをSWFで包んで、Loaderに読み込ませて、ApplicationDomainからClassをgetDefinitionすれば、めでたく本物のクラスが取り出せる(はず)。これを利用して、ABCを本物のAVM上で実行する。ただ、念のために自前のAVMも作っておいた方がいいかなぁ。
これが実現できると、まさに「ActionScript3.0上でActionScript3.0が動く」環境が整う。動的コンパイルとか、アスペクトなんかに応用できるんじゃないかなー。
と、妄想を垂れ流しつつ、いつやるかは分からないで終了。やるならSparkのプロジェクトとしてやります。
サイト内関連記事
この記事へのトラックバック
トラックバックはありません。
TrackBack URL:
http://www.be-interactive.org/trackback.php?id=201

いつもブログ楽しく読ませていただいております^^
> ActionScript3でもスクリプトエンジン
実は、ActionScript3 で動く ECMAScript4 というのを見たことがあります。
以下参照。
http://lxr.mozilla.org/mozi...
実際に動かしてないのでなんとも言えないですが、Parser のコードを読む限りは、ECMAScript をパースしてるように見えます。
まだ、AS3 始めたばかりですが、いろいろ情報交換していきましょう^^
よろしくお願いいたします m(_ _)m
で、それすげぇぇぇぇ!!
見た感じ、ECMAScript4をパースしてABCを吐くコードみたいですね。
これを使えば色々と手間が省けて凄そうです。
Tamarinのコードは1回全部見る必要があるなぁ。