1. こんな感じで使います。
$pythonparser.py sample.py
importparsercode ='''a = 1 + 1print(a)'''graph =parser.create_graph(code)graph.render("sample")
importastimport sysimportgraphvizdefcreate_graph(lines): graph =graphviz.Graph(format='png')root =ast.parse(lines) node_list = [root] _setup(graph, node_list)return graphdef_setup(graph, node_list):# node node = node_list[-1] node_identity =str(len(node_list)) node_name =type(node).__name__ graph.node(node_identity, node_name)# childrenfor childinast.iter_child_nodes(node): node_list.append(child) child_identity =str(len(node_list)) graph.edge(node_identity, child_identity) _setup(graph, node_list)if __name__ =='__main__': file_name = sys.argv[1]withopen(file_name)asfile: lines =file.read() graph = create_graph(lines) graph.render(file_name)