<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          2. 語(yǔ)法分析

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

          3. 語(yǔ)義分析

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

          4. 中間代碼生成

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

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

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

          6. 目標(biāo)代碼生成

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

          7 符號(hào)表管理

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

          8 出錯(cuò)處理

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


          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();