# 3 Python 抽象構文

`compiler.ast` モジュールは Python の抽象構文木 AST を定義します。 AST では各ノードがそれぞれの構文要素をあらわします。 木の根は `Module` オブジェクトです。

抽象構文木 AST は、パーズされた Python ソースコードに対する 高水準のインターフェイスを提供します。Python インタプリタにおける `parser` モジュールと コンパイラは C で書かれおり、具体的な構文木を使っています。 具体的な構文木は Python のパーザ中で使われている構文と密接に関連しています。 ひとつの要素に単一のノードを割り当てる代わりに、ここでは Python の 優先順位に従って、何層にもわたるネストしたノードがしばしば使われています。

抽象構文木 AST は、`compiler.transformer` (変換器) モジュールに よって生成されます。transformer は組み込みの Python パーザに依存しており、 これを使って具体的な構文木をまず生成します。つぎにそこから抽象構文木 AST を 生成します。

`transformer` モジュールは、実験的な Python-to-C コンパイラ用に Greg Stein と Bill Tutt によって作られました。 現行のバージョンではいくつもの修正と改良がなされていますが、 抽象構文木 AST と transformer の基本的な構造は Stein と Tutt によるものです。