时间:2011-05-16 13:18:21

标签: python abstract-syntax-tree

这个问题是我的python工作的结果。

我有一个节点,我希望得到它的孩子。

._field属性给出节点的所有子节点的名称。然而,取决于语法节点,它对于不同节点是不同的。

例如,如果节点类型为BinOp ..那么node._field将产生('left','op','right')

因此,为了访问节点的子节点,我必须使用node.left,node.op和node.right

但我想为任何一般节点做这件事。

给定任何节点如果我使用node._field它将给我一个tupple。我如何使用这个tupple来获得孩子。节点可以是任何通用节点。所以我不知道之前的元组是什么样的。

代码形式的例子真的很棒! 谢谢!

1 个答案:

答案 0 :(得分:2)

要迭代任意节点的子节点,请使用ast.iter_child_nodes()。要迭代字段,请使用ast.iter_fields()