これまで明示的には書いてこなかったのだけど、asparserの目的はひとえにSiONをC#コードに変換できないか、試すというところにある。
今日、asparserがまたひとつ目標としていたステップをクリアして、とりあえずsionのソース中で使用されているflashクラスを把握するところまではできた。やはり多少flash.display.*に依存するところはあっても、ほとんどはUI非依存の部分で出来ているようだ。
ただ、1000件近くあった型名解決と、1750件近くあった型メンバー名解決の次のステップとして、メンバー・変数レベルのシンボル解決が4500件ほどあって、これを解決できればほぼdllがビルド出来るのだけど、さすがに大仕事すぎて困っている。これはすぐには実現出来なそうだ。
もっとも、dllをビルド出来るようになっても、それは実行可能なコードが出来るということは全く意味しない。まともに動作することは期待していない。もし動作するコードを作るのであれば、さらに環境(たとえばオーディオをサポートするsilverlightや、portaudioのバインディング)に合わせてコードを変換する必要があるだろう。dllが出来上がれば、CLI/ILレベルでコードを読んだり書いたりできるので、flashのASTをまともに解決してC#コードの生成前後にinjectさせるようなコンパイラを作るよりは楽なのではないかと思っている。
ここまでは何とか進めてこられたのだけど、ここに来て開発機が死亡するというトラブルが起こって困っている。とりあえず全然使っていなかったmacbookを使っているのだけど、もともとまともなテキストエディタが無くて(TextWranglerで妥協している)開発に向いていない環境なのに加え、改行コードの問題でsionのソースに当てているパッチがきちんと当たらなくなって、さらなる変更を作成できなくなったりなどもしている。
開発環境まわりが変わると、開発がかなり止まってしまう傾向があって、個人的にはダメージが大きい。
実は今年も5月の上旬にWindows7にアップデートした関係で、いろんなことをほぼ最初からやり直すことになり、それまで開発していたものや予定していたものがいろいろ飛んでしまった。同じことは昨年の9月にも起こった(マシンを変えた)。ここのログを見ると勢いが落ちているのが目に見える。
手元のmacbookの問題はもう一つあって、Intel系マシンのくせにまともにLinuxが動作しない。まあそれでもバッテリーを認識しないノートPCよりはマシなのだけど、バッテリー容量を把握できず常に最大輝度で動作するというのは割と困る話だ。それよりも、そろそろLinux/C#/androidの開発環境が出てくるというのに、それが使えないというのでは、たいへん忸怩たるものがある。
それより、このasparserでやりたいことが一段落したら、いろいろ仕切りなおして先に進みたいと思っていたことがあるのに、それが先送りになるのが少なからず苦しいものがある。艱難の時なのかもしれない。