[DLR] DLR における抽象構文木の解析について
現在、IronPython 2.0アルファ2を使って抽象構文木(AST)がどのように作成されるかを調べています。具体的には、以下のようなサンプルコードを使って、VSを使ってデータを収集しています。
def yo(yourname):
text = "Hello, "
return text + yourname
print yo("TechEd Yokohama")
このスクリプトを名前を付けて保存して、IronPythonConsoleプロジェクトのコマンドライン引数に指定して、ASTのデータを集めているのが以下の図です。
このastという変数にIronPythonの抽象構文木のデータが格納されています。これを更に調べていくとDLRの抽象構文木へマップしている状態も調べることができます。DLRのASTのデータを調べているのが以下の図です。
CodeBlockというデータ型に抽象構文木のデータが格納されています。こうして調べたASTを図にする作業を行っています。このASTの詳細説明は、TechEd Yokohamaの終了後にでも解説したいと考えています。現時点では、ソースコードを使うことで上記のようにASTを調べる方法もあるということをお知らせしておきます。
PS:DLRをC#などから利用する方法も調べています。その過程で見つけたのは、IronPython 2.0A2で提供される実行モジュールは、キーペアによる署名を持っていたことです。なので、ソースコードからビルドしたモジュールを使って色々と調べています。