2016-09-27 4 views
3

Je voudrais vider le graphe de flux de contrôle d'un code python donné, similaire à l'option donnée par l'option du compilateur gcc: -fdump-tree-cfg pour le code c.Comment récupérer un graphique de flux de contrôle pour le code python?

J'ai réussi à obtenir les AST (Abstract Syntax Trees) d'un code python, mais il semble assez complexe et fastidieux d'obtenir le graphe de flux de contrôle à partir de la phase AST.

Existe-t-il un moyen plus simple de récupérer directement le diagramme de flux de contrôle d'un code python? Aucune suggestion?

oh par la façon dont j'utilise python3.5

Merci à tous!

P.S Je ne sais vraiment pas quel genre d'interprète j'utilise sous le capot, autant que je sais que c'est CPython (pas sûr), je ne pense pas que ce soit PyPy (Rpython). Toute suggestion comment puis-je le vérifier?

Répondre

2

Voir mes SO answer on how to build a control flow graph, using an AST.

La question originale posée à propos des CFG pour Java, mais l'approche est en fait assez générique, et la même approche fonctionnerait pour produire un CFG pour Python.

Je n'aurais pas appelé cela "assez complexe"; l'idée de base est assez simple.

+0

merci, Je vais plonger dans les sons ANTLR intéressants – JammingThebBits

+0

ANTLR n'est pas l'astuce; il construit juste un AST. Ma réponse vous indique comment utiliser l'AST produit par un parseur pour produire un CFG. –

+0

Downvoter: Voulez-vous expliquer pourquoi cette réponse n'est pas une bonne réponse? –