<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 編譯原理 —— 編譯器各階段工作

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

——
作者: 時(shí)間:2007-04-18 來(lái)源: 收藏
1. 詞法分析

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

2. 語(yǔ)法分析

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

3. 語(yǔ)義分析

語(yǔ)義分析器根據語(yǔ)義規則對語(yǔ)法樹(shù)中的語(yǔ)法單元進(jìn)行靜態(tài)語(yǔ)義檢查,如果類(lèi)型檢查和轉換等,其目的在于保證語(yǔ)法正確的結構在語(yǔ)義上也是合法的。

4. 中間代碼生成

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

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

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

6. 目標代碼生成

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

7 符號表管理

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

8 出錯處理

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


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>