in reference/src/main/python/similar.py [0:0]
def prune_ast(ast, leaf_features):
global leaf_idx
if isinstance(ast, list):
no_leaf = True
ret = []
for elem in ast:
(flag, tmp) = prune_ast(elem, leaf_features)
ret.append(tmp)
no_leaf = no_leaf and flag
if no_leaf:
return (True, None)
else:
return (False, ret)
elif isinstance(ast, dict):
if "leaf" in ast and ast["leaf"]:
leaf_idx += 1
if leaf_features[leaf_idx - 1] is None:
return (True, copy_leaf_dummy(ast))
else:
return (False, ast)
else:
return (True, ast)
else:
return (True, ast)