SWFの勉強会に行かなかった

スケジュール管理できてないので、行かないでしまった。
うーむ。
忘れっぽいので、よく忘れるので、もう仕方ないっす。U-Streamはあるようなので、そのへん見て楽しみまっす。

ここんところ、疲れてる忘れてるでほとんど勉強会に行けてないなぁ。
誰も誘ってくれんし。ハァ

というのは置いておいて、俺が考えていたネタを書いときます。
asを構文解析して、javascriptにトランスレートしようって話で、演算子順位法で構文解析して(Beautiful ないつものやつです)パターンマッチして、
flash lite 1.1の命令をCreateJSに対応させるJSFLを作って、タイムラインとボタンとライブラリをトラバースしてパターンマッチで置き換えるっていうプログラムを作ったのでした。

		"on(press){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; },
		"on(press,release){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; },
		"on(release){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; },
		"substring(@,@,@)": function(a,b,c) { return "(("+p(a)+").substring("+p(b)+","+p(c)+"))";},
		"substring(@,@)": function(a,b,c) { return "(("+p(a)+").substring("+p(b)+"))";},

パターンマッチの箇所はこんなかんじで、気合入れてないのでというか、時間の合間でやってるので、こんなかんじです。
いつもは@をClean bookのZ式を参考に、式を連結させる演算子として使ってたのですが、@をパターンマッチ用の識別用にして、@@が式の連結であるようにしてあります。
nest関数で括弧内のネストをうまく管理して、pが再帰呼び出しされる変換関数です。
3項演算子はそれっぽく対応したつもりだったんだけど、うまく動いてなかったのでデバッグが必要とかです。

そこそこ動いてるので、仕事としてやらせてもらえるとかあれば、よろしくお願いします。

いちお、更新履歴と、TODOです。

//
// AS to JS
// history:
// ●ボタンのメソッドは親に書く
// ●ボタン内のプロパティにはparentを付ける。
// ●getURLをwindow.locationに
// ●名のないボタンに名前を付けましょう
//  ●名前一覧を作成する
//   ●名前一覧の次の番号の名前から付ける。
// ●callに対応
// ●chrに対応
// ●ordに対応
// ●substring
// ●fscommandはとりあえず無視
// TODO:
// ○優先順位を変更
// ○3項演算子対応
// ○テキスト変数監視モードを付けるとよくて、付けるのは、Textオブジェクトの_draw, mesure等にいれるとよい。.textを.getText()に書き換えて内部でチェックするといいと思う。
// getTextというメソッドを作って、getText() { return parent[this.name.substring(0,this.name.length-1)]; }を入れればよさそう。
// ○getProperty
// ○setProperty
// ○座標などのプロパティは変換する
// ○テキストに_をつけた名前を付ける
// ○fscommandに対応
// ○fscommand2に対応