我有一个模块,可以自动输出(以点格式)用某种汇编语言(我的编译器的 IR)编写的函数。节点是使用“记录”形状打印的基本块。问题在于边缘采用了奇怪的路线,例如:
digraph {
node [shape = record];
n0[label="{<name> entry | <body> store i, 0\nstore sum, 0\ngoto test | {<target> target}}"];
n1[label="{<name> test | <body> t2 = load i\nif t4, body, done | {<true> true | <false> false}}"]
n2[label="{<name> body | <body> t5 = load sum\ngoto test | {<target> target}}"];
n3[color=firebrick3, label="{<name> done | <body> t9 = load sum\nret t9}}"];
n0:target:s -> n1:name:n
n1:true:s -> n2:name:n
n1:false:s -> n3:name:n
n2:target:s -> n1:name:n
}
还有一张图片:
我该怎么做才能将“目标”到“测试”的边缘放置在左侧?
最简单的非大师方法是强制将任性链接附加到“西”侧。
n2:target:w -> n1:name:w
对于本例来说,这可能没问题。一种更通用的方法,但需要更多的思考和编码,但如果您愿意,则允许边缘附加到 :s 和 :n ,是添加一个大小为零的不可见节点(颜色=白色,或者可能有可见性属性)并使用两条边从 n2 到 n1。仅其中一个上有箭头。不可见节点必须位于 n1 或 n2 的左侧。唉,我的 graphvis-fu 还不够强大,无法创建一个工作示例;也许其他人可以创建一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)