3.14.2 ASTオブジェクトの変換

作成するのに使用された入力に関わらずASTオブジェクトは、リストやタプルの木として表される解析木に変換されるか、実行可能なコードオブジェクトにコンパイルされます。解析木は、行番号付き、または行番号無しで取り出されます。

ast2list (ast[, line_info])
この関数は、astの呼出し元からASTオブジェクトを受けて、同等の解析木を表すリストを返します。結果のリスト表現は、リストの形で新しい解析木の検査や作成に使うことができます。この関数は、メモリがリスト表現を作成することができるかぎり失敗しません。もし解析木が検査のみに使われる場合は、メモリ消費やフラグメンテーションを減少するために、ast2tuple()を使うべきです。 リスト表現が必要な場合は、この関数はタプル表現を検索し、ネスト化されたリストに変換するより、明らかに早いです。

もしline_infoがtrueならば、tokenを表すリストの3番目の要素として全てのterminal tokensに、行番号情報が含まれます。〜ことに注意して下さい。 行番号 provided specifies the line on which the token ends. フラグがfalse、または省略されている場合は、この情報は省略されます。

ast2tuple (ast[, line_info])
この関数は、astの呼出し元からASTオブジェクトを受けて、同等の解析木を表すタプルを返します。リストの代わりにタプルを返す以外は、この関数はast2list()と同じです。

もしline_infoがtrueならば、行番号情報 will be included for all terminal tokens as tokenを表すリストの3番目の要素として.フラグがfalse、または省略されている場合は、この情報は省略されます。

compileast (ast[, filename = '<ast>'])
exec文の一部、または組み込み関数eval() の呼び出しとして使われるコードオブジェクトを作るために、バイトコンパイラは ASTオブジェクトを求めることがあります。この関数は、filenameパラメーターによって指定されたソースファイルを使い、astからパーサーまでの内部解析木にわたるコンパイラへのインターフェイスを提供します。filenameのデフォルト値は、ソースがASTオブジェクトであることを表します。

ASTオブジェクトをコンパイルすることは、コンパイルに関連した例外を引き起こします。例えば、del f(0)で解析木により発生するSyntaxErrorです。この文は、パイソンの文法上は問題はありませんが、言語構成では問題があります。このとき発生したSyntaxErrorは、通常パイソンバイトコンパイラによって引き起こされます。, which is why it can be raised at this point by the parser module. ほとんどのコンパイル失敗の原因は、解析木の検査によってprogrammatically診断できます。

guido@python.org