Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< ■ |anond:20181231110904 >

2019-01-01

Graphviz を使ってPython抽象構文木を生成する。



1. こんな感じで使います


1.1.スクリプトとして使用する。

$pythonparser.py sample.py


1.2.モジュールとして使用する。

importparsercode ='''a  = 1 + 1print(a)'''graph =parser.create_graph(code)graph.render("sample")


2.ソースコードparser.py はこんな感じです。

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)

Permalink |記事への反応(0) | 02:12

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp