新聞中心

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

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

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

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

        2. 語法分析

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

        3. 語義分析

        語義分析器根據(jù)語義規(guī)則對語法樹中的語法單元進行靜態(tài)語義檢查,如果類型檢查和轉(zhuǎn)換等,其目的在于保證語法正確的結(jié)構(gòu)在語義上也是合法的。

        4. 中間代碼生成

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

        5. 中間代碼優(yōu)化

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

        6. 目標代碼生成

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

        7 符號表管理

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

        8 出錯處理

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


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 浮梁县| 鄂州市| 兴海县| 磐安县| 余姚市| 姚安县| 普兰店市| 西和县| 申扎县| 朔州市| 辽阳县| 彭泽县| 济宁市| 淮滨县| 微山县| 安陆市| 海丰县| 栾川县| 桑植县| 平阴县| 敦化市| 漠河县| 彩票| 丹寨县| 茌平县| 临夏市| 长丰县| 黄陵县| 应城市| 贡山| 苍梧县| 阜新| 昌邑市| 德钦县| 乐东| 遂昌县| 永春县| 枝江市| 广东省| 浦北县| 娄底市|