tfm-report/img/motivation-example-pdg.dot

66 lines
1.8 KiB
Plaintext

digraph g {
graph [splines = ortho];
// nodes g()
subgraph cluster_g {
enter_g [label=<entry<br/>g()>,shape=rect,style=filled];
a_in [label="a = a_in",style="dashed,filled"];
l14 [label="if (a == 0)",style=filled]
l15 [label="throw new Exception()",style=filled];
l17 [label="System.out.println(a)",style="filled,bold"];
gee [label="error exit",style="dashed"];
gne [label="normal exit",style="dashed"];
}
// nodes f()
subgraph cluster_f {
enter_f [label=<entry<br/>f()>,shape=rect,style=filled];
fee [label="error exit",style="dashed"]
x_in [label="x = x_in",style="dashed,filled"];
l3 [label="g(x)",style=filled];
l3_in [label="a_in = x",style="dashed,filled"];
nr3 [label="normal return",style="dashed"];
nr10 [label="normal return",style="dashed"];
l4 [label="catch (Exception e)"];
l5 [label="System.err.println(\"Error\")"];
l8 [label="System.out.println(\"g() was ok\")"];
l10 [label="g(x + 1)",style=filled];
l10_in [label="a_in = x + 1",style="dashed,filled"];
try [style=filled];
//{rank=same; l3_in nr3}
//{rank=same; l10_in nr10 fee}
//{rank=same; x_in try}
}
// control g()
enter_g -> a_in;
enter_g -> l14 -> l15 -> gee;
{l14 l15} -> l17;
l14 -> gne;
// control f()
enter_f -> {x_in l10};
enter_f -> try -> l3 -> {nr3; l4};
nr3 -> l8;
l4 -> l5;
l10 -> {nr10; fee};
l3 -> l3_in;
l10 -> l10_in;
{ // data
edge [color=red,constraint=false];
a_in -> l14 [constraint=true];
a_in -> l17;
x_in -> {l3_in l10_in};
}
{ // order
edge [style=invis];
//a_in -> gne -> gee;
//x_in -> try;
//l3_in -> nr3 -> l4;
//l10_in -> nr10 -> fee;
}
{
edge [constraint = false, style = dashed];
{l3 l10} -> enter_g [style = bold];
{l3_in l10_in} -> a_in;
//gee -> {fee l4};
//gne -> {nr10 nr3};
}
}