控制流图优势

时间:2013-08-31 16:41:31

标签: compiler-construction control-flow-graph

我正在研究个人项目的编译器,为此,我正在查看英国一所大学的一些论文。我偶然发现的一个问题如下:

Draw a CFG which contains a definition followed by a use of a variable x, but in 
which the use of x is not dominated by any definitions of x.

这怎么可能?如果使用不是由定义支配,那意味着使用x的块会超出范围x?我没有正确地看待它吗?

说我们有

1:int y = 2;

2:if(y> 0)

3:int x = 5;

4:否则x ++;

在这种情况下,x的使用不受定义支配,但x不在范围内,因此不能使用。我不明白......

1 个答案:

答案 0 :(得分:0)

请记住,x及其声明的定义是两个不同的东西,范围只关注声明。请考虑以下事项:

int x;
if (user_input_integer() == 0) {
    x = 0;
} else {
    x = 1;
}
x++;