def generatePathToId(a, id, globalId=None):
if not isinstance(a, ast.AST):
return None
if hasattr(a, "global_id") and a.global_id == id:
if globalId == None or (hasattr(a, "variableGlobalId") and a.variableGlobalId == globalId):
return []
for field in a._fields:
attr = getattr(a, field)
if type(attr) == list:
for i in range(len(attr)):
path = generatePathToId(attr[i], id, globalId)
if path != None:
path.append(i)
path.append((field, astNames[type(a)]))
return path
else:
path = generatePathToId(attr, id, globalId)
if path != None:
path.append((field, astNames[type(a)]))
return path
return None
评论列表
文章目录