3.14.1 ASTオブジェクトの作成

ASTオブジェクトはソースコード、または解析木から作成されます。ソースからASTオブジェクトを作成する時は、'eval''exec'形式を作るのに違う関数が使われます。

expr (string)
関数expr()stringパラメーターを、"compile(string, 'eval')"への入力として解析します。解析が成功すると、ASTオブジェクトが、内部解析木の表現を保持するのに作られます。さもなければ、適当な例外が発生します。

suite (string)
関数suite()stringパラメーターを、"compile(string, 'exec')"への入力として解析します。解析が成功すると、ASTオブジェクトが、内部解析木の表現を保持するのに作られます。さもなければ、適当な例外が発生します。

sequence2ast (sequence)
この関数は、シーケンスとして表された解析木を受けとり、可能ならば内部表現を作成します。解析木がパイソン文法に従っていて、パイソンのhostバージョンにおいて、全てのノードが正しいノードタイプであることが確認できれば、ASTオブジェクトを内部表現から作成し、呼出し元に返します。内部表現を作るのに問題があったり、解析木が有効でない場合は、例外ParserErrorが発生します。このようにして作られたASTオブジェクトは、正しくコンパイルされると仮定すべきではありません。コンパイルによって発生した通常の例外は、ASTオブジェクトがcompileast()を通った時は、まだ初期化しているかもしれません。これは、(例外MemoryErrorのような)構文とは関係のない問題を表しているかもしれませんが、バイトコンパイラによってチェックされるが、パイソンパーサを逃れるdel f(0)の解析結果のような構成物が原因です。

terminal tokensを表すシーケンスは、(1, 'name')という2つの要素を持つリスト、または(1, 'name', 56)という3つの要素を持つリストとして表されます。3番目の要素がある場合は、それは正しい行番号です。行番号は may be specified for any subset of the terminal symbols in the input tree.

tuple2ast (sequence)

これはsequence2ast()と同じ関数です。このentry pointは、backward compatibilityを維持します。

guido@python.org