## 2 代入ノード

代入をあらわすのに使われる一群のノードが存在します。 ソースコードにおけるそれぞれの代入文は、抽象構文木 AST では 単一のノード `Assign` になっています。 `nodes` 属性は各代入の対象にたいするノードのリストです。 これが必要なのは、たとえば `a = b = 2` のように 代入が連鎖的に起こるためです。 このリスト中における各 `Node` は、 次のうちどれかのクラスになります: `AssAttr`、 `AssList`、 `AssName`、 または `AssTuple`。

代入対象の各ノードには代入されるオブジェクトの種類が記録されています。 `AssName` は `a = 1` などの単純な変数名、 `AssAttr` は `a.x = 1` などの属性に対する代入、 `AssList` および `AssTuple` はそれぞれ、 `a, b, c = a_tuple` などのようなリストとタプルの展開をあらわします。

代入対象ノードはまた、そのノードが代入で使われるのか、それとも del 文で使われるのかをあらわす属性 `flags` も持っています。 `AssName` は `del x` などのような del 文をあらわすのにも 使われます。

ある式がいくつかの属性への参照をふくんでいるときは、 代入あるいは del 文はただひとつだけの `AssAttr` ノードをもちます - 最終的な属性への参照としてです。それ以外の属性への参照は `AssAttr` インスタンスの `expr` 属性にある `Getattr` ノードによってあらわされます。