當編譯器讀入程序時,首先將程序看成是簡單的字符序列。詞法分析器將這些字符序列轉換為單詞,語法分析器從中進一步發現語法結構。由編譯器前端產生的結果可以是語法樹或者某種低級形式的中間代碼。但是即使這樣,它對程序做什么和怎么做仍然沒有多少提示。
編譯器把發現每個過程內控制流層次結構的任務留給了控制流分析,將確定與數據有關的全局信息的任務留給了數據流分析。
有兩種主要的控制流分析方法,他們都從確定構成過程的基本快並形成流圖開始。
第一種方法使用必經結點來發現循環,並簡單表示它找到的循環給優化使用。這種方法足以應付迭代數據流分析的需求。
第二種方法稱為區間分析,分析整個過程的結構,並將過程分解成,稱為區間的嵌套區域。區間的嵌套結構形成了控制樹,控制樹有助於數據流分析的結構化和提高其分析速度。最成熟的一種區間分析形式稱為結構分析,它的實質是對過程內所有控制結構進行分類。