def add_line_info(root_node):
"""
Add lineno attribute for all nodes at and under root_node, recursively.
"""
class AddLineNumbers(BottomUpVisitor):
def __init__(self):
BottomUpVisitor.__init__(self, strict_line_order=True, make_unique=True)
def visit_one_node(self, node, lineno=None):
# print(node, lineno, getattr(node, 'lineno', None))
if not hasattr(node, 'lineno'):
node.lineno = lineno
else:
if node.lineno != lineno:
print(node, lineno, node.lineno)
print(astor.dump(root_node))
assert False
BottomUpVisitor.visit_one_node(self, node, lineno)
AddLineNumbers().visit(root_node)
评论列表
文章目录