• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 編譯原理 —— 編譯器各階段工作

    編譯原理 —— 編譯器各階段工作

    ——
    作者: 時間:2007-04-18 來源: 收藏
    1. 詞法分析

    詞法分析器根據詞法規則識別出源程序中的各個記號(token),每個記號代表一類單詞(lexeme)。源程序中常見的記號可以歸為幾大類:關鍵字、標識符、字面量和特殊符號。詞法分析器的輸入是源程序,輸出是識別的記號流。詞法分析器的任務是把源文件的字符流轉換成記號流。本質上它查看連續的字符然后把它們識別為“單詞”。

    2. 語法分析

    語法分析器根據語法規則識別出記號流中的結構(短語、句子),并構造一棵能夠正確反映該結構的語法樹。

    3. 語義分析

    語義分析器根據語義規則對語法樹中的語法單元進行靜態語義檢查,如果類型檢查和轉換等,其目的在于保證語法正確的結構在語義上也是合法的。

    4. 中間代碼生成

    中間代碼生成器根據語義分析器的輸出生成中間代碼。中間代碼可以有若干種形式,它們的共同特征是與具體機器無關。最常用的一種中間代碼是三地址碼,它的一種實現方式是四元式。三地址碼的優點是便于閱讀、便于優化。

    5. 中間代碼優化

    優化是的一個重要組成部分,由于將源程序翻譯成中間代碼的工作是機械的、按固定模式進行的,因此,生成的中間代碼往往在時間和空間上有很大浪費。當需要生成高效目標代碼時,就必須進行優化。

    6. 目標代碼生成

    目標代碼生成是的最后一個階段。在生成目標代碼時要考慮以下幾個問題:計算機的系統結構、指令系統、寄存器的分配以及內存的組織等。編譯器生成的目標程序代碼可以有多種形式:匯編語言、可重定位二進制代碼、內存形式。

    7 符號表管理

    符號表的作用是記錄源程序中符號的必要信息,并加以合理組織,從而在編譯器的各個階段能對它們進行快速、準確的查找和操作。符號表中的某些內容甚至要保留到程序的運行階段。

    8 出錯處理

    用戶編寫的源程序中往往會有一些錯誤,可分為靜態錯誤和動態錯誤兩類。所謂動態錯誤,是指源程序中的邏輯錯誤,它們發生在程序運行的時候,也被稱作動態語義錯誤,如變量取值為零時作為除數,數組元素引用時下標出界等。靜態錯誤又可分為語法錯誤和靜態語義錯誤。語法錯誤是指有關語言結構上的錯誤,如單詞拼寫錯、表達式中缺少操作數、begin和end不匹配等。靜態語義錯誤是指分析源程序時可以發現的語言意義上的錯誤,如加法的兩個操作數中一個是整型變量名,而另一個是數組名等。


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 张北县| 同江市| 富宁县| 敦化市| 社旗县| 郯城县| 杭锦旗| 丰城市| 五寨县| 开封市| 麻江县| 吴桥县| 金秀| 汾西县| 松原市| 临夏县| 冕宁县| 新竹县| 安新县| 丰县| 南靖县| 石渠县| 清水县| 石渠县| 拜城县| 禹州市| 永泰县| 荆门市| 乐亭县| 卢龙县| 靖远县| 桦川县| 六盘水市| 洛阳市| 囊谦县| 庄河市| 宣恩县| 息烽县| 文昌市| 英德市| 南康市|