绘制控制流图

时间:2012-10-29 13:35:28

标签: java user-interface compiler-construction nodes edges

我的任务是制作控制流程图。首先,我设法将我的代码分成基本块。例如,这个程序在这里:

1 begin

2   int x, y, power;

3   float z;

4   input (x, y);

5   if (y<0)

6     power=-y;

7   else

8     power=y;

9   z=1;

10   while (power!=0){

11     z=z*x;

12   power=power-1;

13   }

14   if (y<0)

15     z=1/z;

16   output(z);

17 end

将变为以下基本块:

第1块

Line  2   int x, y, power;
Line  3   float z;
Line  4   input (x, y);
Line  5   if (y<0)

第2块

Line  6     power=-y;

第3块

Line  8     power=y;

第4块

Line  9   z=1;

第5块

Line 10   while (power!=0){

第6块

Line 11     z=z*x;
Line 12   power=power-1;

第7块

Line 14   if (y<0)

第8块

Line 15     z=1/z;

第9块

Line 16   output(z);

我通过扫描文件,并使用Pattern和Matcher根据if,while和etc语句拆分程序来完成此操作。基本块是ArrayList,所有这些块都保存在ArrayList&gt;中。

接下来,我保留了一个HashMap,其中哪些基本块相互连接。例如,块1将连接到块2和块3,因为它是一个if语句(如果这是单向,否则去另一个)。该HashMap具有&gt;用于块编号,以及它所连接的块编号列表。

所以,我有基本的块,以及这些基本块之间的连接列表。我现在的问题是我不确定如何以图形形式显示它。之前,我使用paint()方法并绘制圆和线来表示一个简单的控制图,其中每个块只有一个连接到下一个块。但是,当有多个连接时,我不知道如何执行此操作。有没有简单的方法呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

为了绘制图表,我通常使用dot,这很简单。