1-模型概述
3个跳转
向下 down
向上 up
平移 move
4个区:
func(…){
# 函起区 func_start
while{
# 循起区 while_start
func(…);
# 循结区 while_end
}
# 函结区 func_end
}
5个状态
起后 AFTER_BEGIN :[func_start, while_start]
下后 AFTER_DOWN : [func_start, while_start]
循后 AFTER_MOVE : [while_end, while_start]
上后 AFTER_UP : [while_end, func_end]
结前 BEFORE_END : [while_end, func_end]
简单校检
假设有n次跳转,那么:
- 有(n+2)个状态;
- 2*(n+2)个区操作;
- 所有操作对象都出现两次。
2-示例
序号 | 状态 | 操作区域 | 操作对象 |
---|---|---|---|
1 | BEGIN_AFTER | 0.func_start; 0.while_start; | 2 |
2 | DOWN_AFTER | 1.func_start; 1.while_start; | 4 |
3 | DOWN_AFTER | 2.func_start; 2.while_start; | 12 |
4 | UP_AFTER | 2.while_end; 2.func_end; | 12 |
5 | MOVE_AFTER | 1.while_end; 1.while_start; | 4&5 |
6 | UP_AFTER | 1.while_end; 1.func_end; | 5 |
7 | END_BEFOR | 0.while_end; 0.func_end; | 2 |