65 lines
No EOL
1.8 KiB
Text
65 lines
No EOL
1.8 KiB
Text
digraph g {
|
|
// 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};
|
|
}
|
|
} |