tfm-report/img/multiplypdg.dot
2019-12-09 02:28:35 +00:00

32 lines
No EOL
1.1 KiB
Text

digraph g {
"main()" [shape=box, rank=min]
"main()" -> "multiply(2, 3)" -> {"x_in = 2" "y_in = 3"};
"multiply()" [shape=box, rank=min];
"multiply()" ->
// Rank adjustment
{ rank = same; "x = x_in" "y = y_in" }
{ rank = same; "int result = 0"; "while (x > 0)"; "System.out.println(result)"; "return result"; }
{ rank = same; "result += y"; "x--"; }
// Control flow
"multiply()" -> "int result = 0" [style=bold];
"multiply()" -> "while (x > 0)" [style=bold];
"multiply()" -> "System.out.println(result)" [style=bold];
"multiply()" -> "return result" [style=bold];
"while (x > 0)" -> "result += y" [style=bold];
"while (x > 0)" -> "x--" [style=bold];
// Data flow
{ edge [color = red]
{"int result = 0" "result += y"} -> {"result += y" "System.out.println(result)" "return result"};
{"x--" "x = x_in"} -> {"x--" "while (x > 0)"};
"y = y_in" -> "result += y";
}
// Order adjustment
{ edge [style = invis];
"int result = 0" -> "while (x > 0)";
"while (x > 0)" -> "System.out.println(result)";
"System.out.println(result)" -> "return result";
"result += y" -> "x--";
"x = x_in" -> "int result = 0";
}
}