[DLR] DLR における抽象構文木の解析について


現在、IronPython 2.0アルファ2を使って抽象構文木(AST)がどのように作成されるかを調べています。具体的には、以下のようなサンプルコードを使って、VSを使ってデータを収集しています。

def yo(yourname):
text = "Hello, "
return text + yourname

print yo("TechEd Yokohama")



このスクリプトを名前を付けて保存して、IronPythonConsoleプロジェクトのコマンドライン引数に指定して、ASTのデータを集めているのが以下の図です。
Python AST


このastという変数にIronPythonの抽象構文木のデータが格納されています。これを更に調べていくとDLRの抽象構文木へマップしている状態も調べることができます。DLRのASTのデータを調べているのが以下の図です。
DLR AST 



CodeBlockというデータ型に抽象構文木のデータが格納されています。こうして調べたASTを図にする作業を行っています。このASTの詳細説明は、TechEd Yokohamaの終了後にでも解説したいと考えています。現時点では、ソースコードを使うことで上記のようにASTを調べる方法もあるということをお知らせしておきます。


PS:DLRをC#などから利用する方法も調べています。その過程で見つけたのは、IronPython 2.0A2で提供される実行モジュールは、キーペアによる署名を持っていたことです。なので、ソースコードからビルドしたモジュールを使って色々と調べています。

Comments (2)

  1. 荒井さんの blog を読んでいると,行かないつもりだった TechEd 2007 に行きたくなってくる今日この頃. DLR における抽象構文木の解析について Orcas を入れなくても .NET AST で遊べるのはおもしろいですね.テスト用の AST の作成ですが,私は F# を利用したものをちょこ

  2. DLRにおける抽象構文木(AST)の解析について というエントリに対して、 興味深いトラックバック をNyaRuRuさんからいただきました。NyaRuRuさんのエントリでは、独自の言語プロバイダを実装してDLRのASTを調べるというものです

Skip to main content