Playground コンパイラー
PlaygroundはKLab株式会社のゲームエンジンです。**C#**でスクリプトを書いて、Androidでも、iOSでもリリースが出来ます。
原点
エンジンはC++で書いてますし、APIはC#ですから、元々Monoを使うつもりでした。Androidが出来ましたがiOSはダメになりましたので、オリジナルC#からC++までのコンパイラーを作るに決めました。
コンパイラー
コンパイラーはC++,LexとYaccで開発されました。コンピレーションは三つ部分があります:字句解析 (じくかいせき、Lexical Analysis)、構文解析(こうぶんかいせき、Syntactic Analysis)とコード生成(コードせいせい、Code Generation)
字句解析
先ずC#のコードはLexとYaccのパーサーで読まれた。プログラムの言葉は皆トークンになります。結果は構文木です。
例:
構文解析
前の構文木で様々解析して、プログラムの意味を理解します。例えば、あるブロックで、a
は24
です。
コード生成
構文解析が終わったら、コード生成が出来ます。目的はC++で同じ意味のプログラムを作る。C++にありません物は沢山ありますから、トリックを良く使います。例えば、無名関数毎で、新しいクラスを作ります。
ランタイム
コンパイラーだけは十分ではない。C#はCLR(Common Language Runtime)という.NETのバーチャルマシンで実行されています。もちろん、C++はCLRの機能がありませんから、C++用のランタイムを開発しました。そのランタイムはStringなど、CLRの基本的なクラスを持ってますし、カスタムなガベージコレクターもあります。