1""" 2Identifiers gathers all identifiers used in a node 3""" 4 5from pythran.passmanager import NodeAnalysis 6 7 8class Identifiers(NodeAnalysis): 9 """Gather all identifiers used throughout a node.""" 10 def __init__(self): 11 self.result = set() 12 super(Identifiers, self).__init__() 13 14 def visit_Name(self, node): 15 self.result.add(node.id) 16 17 def visit_FunctionDef(self, node): 18 self.result.add(node.name) 19 self.generic_visit(node) 20 21 def visit_ImportFrom(self, node): 22 self.generic_visit(node) 23 self.result.add(node.module) 24 25 def visit_alias(self, node): 26 self.result.add(node.name) 27 if node.asname: 28 self.result.add(node.asname) 29