当编译器读入程序时,首先将程序看成是简单的字符序列。词法分析器将这些字符序列转换为单词,语法分析器从中进一步发现语法结构。由编译器前端产生的结果可以是语法树或者某种低级形式的中间代码。但是即使这样,它对程序做什么和怎么做仍然没有多少提示。
编译器把发现每个过程内控制流层次结构的任务留给了控制流分析,将确定与数据有关的全局信息的任务留给了数据流分析。
有两种主要的控制流分析方法,他们都从确定构成过程的基本快并形成流图开始。
第一种方法使用必经结点来发现循环,并简单表示它找到的循环给优化使用。这种方法足以应付迭代数据流分析的需求。
第二种方法称为区间分析,分析整个过程的结构,并将过程分解成,称为区间的嵌套区域。区间的嵌套结构形成了控制树,控制树有助于数据流分析的结构化和提高其分析速度。最成熟的一种区间分析形式称为结构分析,它的实质是对过程内所有控制结构进行分类。