5

所以我正在研究一种语言,主要是出于好奇,我想看看我是否可以可视化文件的抽象语法树。环顾四周后,我发现了 graphviz dot,将我的 AST prettyprinter 转换为能够输出为这种格式:

digraph G {
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf
    init -> make_string;
    main -> printf;
    execute -> compare;
}

但我的问题是,当我跑步时

dot -Tpng dotf.gv -o graph.png

在输入文件上,我最终得到一个宽度为 8000 像素的文件,这不切实际。见这里

我不知道是否可以修复,但如果有人可以,我将不胜感激。

4

1 回答 1

2

首先要做的是将图形的方向从默认的从下到上排名设置为从左到右,方法是插入:

rankdir=LR;

...在 .dot 文件中。这应该使图形从左到右定向,从而使其对于像这种可能具有许多具有长节点标签的节点的情况更加紧凑。

在使用 clang 为文件创建调用图时,还有一些其他想法可以减少此类图的宽度。

于 2013-05-27T21:16:54.463 回答