Domanda Come posso scaricare un albero di sintassi astratto generato da gcc in un file .dot?


Penso che il titolo della domanda sia auto esplicativo, voglio scaricare un albero di sintassi astratto generato da gcc in un file .dot (Quei file generati da Graphviz) perché poi voglio vederlo in un file .png o simile. C'è un modo per farlo?

Grazie in anticipo :)


10
2018-04-03 23:50


origine


risposte:


Ci sono due metodi, entrambi inclusi due passaggi

  1. Utilizzo del supporto VCG interno GCC

    1. Compila il tuo codice (ad esempio test.c) con i dump di vcg

      gcc -fdump-tree-vcg -g test.c

    2. Utilizzare qualsiasi strumento di terze parti per ottenere l'output di punti da vcg

      graph-easy test.c.006t.vcg --as_dot

  2. Compilare con dump raw e quindi pre-elaborarli con alcuni script per formare file di punti (come in questo utile articolo)

Entrambi i metodi hanno i loro lati positivi e negativi: in primo luogo è possibile ottenere solo un dump di AST prima della traduzione di gimple, ma è facile. Con il secondo si può convertire qualsiasi dump grezzo in formato punto, ma è necessario supportare gli script, cioè il sovraccarico.

Cosa preferire - è di tua scelta.


UPD: i tempi stanno cambiando. La nuovissima opzione per gcc 4.8.2 consente di generare immediatamente file di punti. Basta fornire:

gcc test.c -fdump-tree-all-graph

e otterrai un sacco di file già formattati per te:

test.c.008t.lower.dot
test.c.012t.cfg.dot
test.c.016t.ssa.dot
... etc ...

Assicurati di utilizzare nuove versioni di GCC con questa opzione.


18
2018-04-04 06:29