第1章編譯程序_第1頁
第1章編譯程序_第2頁
第1章編譯程序_第3頁
第1章編譯程序_第4頁
第1章編譯程序_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、本章目標(biāo)本章目標(biāo)v 解釋翻譯程序和編譯程序的概念解釋翻譯程序和編譯程序的概念v 說明編譯程序的工作過程說明編譯程序的工作過程v 闡述編譯程序的邏輯結(jié)構(gòu),給出其總體框架圖闡述編譯程序的邏輯結(jié)構(gòu),給出其總體框架圖v 介紹編譯技術(shù)的相關(guān)應(yīng)用介紹編譯技術(shù)的相關(guān)應(yīng)用教學(xué)內(nèi)容教學(xué)內(nèi)容1.1 1.1 編程語言與翻譯系統(tǒng)編程語言與翻譯系統(tǒng)1.2 1.2 編譯程序的工作過程編譯程序的工作過程1.3 1.3 編譯程序的邏輯結(jié)構(gòu)編譯程序的邏輯結(jié)構(gòu)1.4 1.4 編譯技術(shù)應(yīng)用編譯技術(shù)應(yīng)用1.5 1.5 本章小結(jié)本章小結(jié)1.1 編程語言與翻譯系統(tǒng)編程語言與翻譯系統(tǒng)程序設(shè)計語言程序設(shè)計語言 1常用的高級語言常用的高級語言

2、 2編譯程序的概念編譯程序的概念 31、程序設(shè)計語言、程序設(shè)計語言(1)程序設(shè)計語言)程序設(shè)計語言 人與計算機(jī)聯(lián)系的工具,人正是通過程序設(shè)計語言指揮計算機(jī)按照人的意志進(jìn)行運(yùn)算和操作、顯示信息和輸出運(yùn)算結(jié)果的。(2)程序設(shè)計語言的發(fā)展)程序設(shè)計語言的發(fā)展【關(guān)鍵概念】程序程序設(shè)計語言的發(fā)展經(jīng)歷了】程序程序設(shè)計語言的發(fā)展經(jīng)歷了“低級語言低級語言高級語言高級語言甚高級語言甚高級語言” 這樣的這樣的3個階段。個階段。低級語言低級語言高級語言高級語言(第三代第三代)甚高級語言甚高級語言機(jī)器語言機(jī)器語言(第一代第一代)匯編語言匯編語言(第二代第二代)結(jié)構(gòu)化語言結(jié)構(gòu)化語言面向?qū)ο笳Z言面向?qū)ο笳Z言基礎(chǔ)語言基礎(chǔ)語

3、言第四代語言第四代語言2、常用的高級語言、常用的高級語言(1)基礎(chǔ)語言)基礎(chǔ)語言uFORTRANuCOBOLuBASIC(2)結(jié)構(gòu)化語言)結(jié)構(gòu)化語言uPascaluC語言uAda語言(3)面向?qū)ο笳Z言)面向?qū)ο笳Z言uC+語言uJava語言【關(guān)鍵概念】常用的高級語言可以分為基礎(chǔ)語言、結(jié)構(gòu)化語言和面向?qū)ο笳Z言】常用的高級語言可以分為基礎(chǔ)語言、結(jié)構(gòu)化語言和面向?qū)ο笳Z言3大類。大類。3、編譯程序的概念、編譯程序的概念(1)計算機(jī)執(zhí)行高級語言程序的步驟)計算機(jī)執(zhí)行高級語言程序的步驟用一個編譯程序把高級語言翻譯成機(jī)器語言程序運(yùn)行所得的機(jī)器語言程序求得計算結(jié)果(2)翻譯程序)翻譯程序指這樣的一個程序,它能夠

4、把某一種語言程序(稱為源語言程序)轉(zhuǎn)換成另一種語言程序(稱為目標(biāo)語言程序),而后者與前者在邏輯上是等價的。(3)編譯程序)編譯程序如果諸如FORTRAN 、 Pascal 、 C 、 Ada 、 Smalltalk或Java這樣的“”,而諸如匯編語言或機(jī)器語言之類的“”,這樣一個就稱為編譯程序。3、編譯程序的概念、編譯程序的概念(4)解釋程序)解釋程序 一個源語言的解釋程序是這樣的程序,它以該語言寫的源程序作為輸入,但不產(chǎn)生目標(biāo)程序,而是邊解釋邊執(zhí)行源程序本身?!娟P(guān)鍵概念】編譯程序?qū)嶋H上是一個源語言為高級語言】編譯程序?qū)嶋H上是一個源語言為高級語言,而目標(biāo)語言是低級語言的翻譯程而目標(biāo)語言是低級語

5、言的翻譯程序。在計算機(jī)上執(zhí)行高級語言編寫的程序通常有編譯和解釋兩種方式,它們的區(qū)別在于序。在計算機(jī)上執(zhí)行高級語言編寫的程序通常有編譯和解釋兩種方式,它們的區(qū)別在于是是否生成目標(biāo)代碼。否生成目標(biāo)代碼。1.2 編譯程序的工作過程編譯程序的工作過程詞法分析詞法分析 1語法分析語法分析 2語義分析和中間代碼產(chǎn)生語義分析和中間代碼產(chǎn)生 3代碼優(yōu)化代碼優(yōu)化 4目標(biāo)代碼生成目標(biāo)代碼生成 51.2 編譯程序的工作過程編譯程序的工作過程(1)編譯程序的工作過程)編譯程序的工作過程指從輸入源程序開始到輸出目標(biāo)程序?yàn)橹沟恼麄€過程。(2)引例)引例英文翻譯為中文英文翻譯為中文識別出句子中的一個個單詞; 分析句子的語法

6、結(jié)構(gòu); 根據(jù)句子的含義進(jìn)行初步翻譯; 對譯文進(jìn)行修飾; 寫出最后的譯文。(3)編譯程序工作過程中所經(jīng)歷的階段)編譯程序工作過程中所經(jīng)歷的階段 編譯程序的工作過程一般也可以劃分為五個階段:詞法分析、語法分析、語義分析與中間代碼產(chǎn)生、優(yōu)化與目標(biāo)代碼生成。1、詞法分析、詞法分析(1)任務(wù))任務(wù)輸入源程序,對構(gòu)成源程序的字符串進(jìn)行掃描和分解,識別出一個個的單詞(亦稱單詞符號或簡稱符號),如基本字(begin, end, if ,for, while等),標(biāo)識符、常數(shù)、算符和界符(標(biāo)點(diǎn)符號、左右括號等等)。(2)舉例)舉例對于Pascal的循環(huán)語句for I:=1 to 100 do詞法分析的結(jié)果是識別

7、出如下的單詞符號: 基本字 for 標(biāo)識符 I 賦值號 := 整常數(shù) 1 基本字 to 整常數(shù) 100 基本字 do1、詞法分析、詞法分析(3)依循的規(guī)則)依循的規(guī)則在詞法分析階段的工作中所依循的是語言的詞法規(guī)則(或稱構(gòu)詞規(guī)則)。(4)描述工具)描述工具描述詞法規(guī)則的有效工具是正規(guī)式和有限自動機(jī)。2、語法分析、語法分析(1)任務(wù))任務(wù)在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則,把單詞符號串分解成各類語法單位(語法范疇),如“短語”、“子句”、“句子”(“語句”)、“程序段”和“程序”等。通過語法分析,確定整個輸入串是否構(gòu)成語法上正確的“程序”。(2)依循的規(guī)則)依循的規(guī)則語法分析所依循的是語言的語

8、法規(guī)則。(3)描述工具)描述工具語法規(guī)則通常用上下文無關(guān)文法描述。(4)舉例)舉例Z:=X+0 .618 * Y 代表一個“賦值語句”x + 0.618*Y 代表一個“算術(shù)表達(dá)式”3、語義分析和中間代碼產(chǎn)生、語義分析和中間代碼產(chǎn)生(1)任務(wù))任務(wù)對語法分析所識別出的各類語法范疇,分析其含義,并進(jìn)行初步翻譯(產(chǎn)生中間代碼)。這一階段通常包括兩個方面的工作:對每種語法范疇進(jìn)行靜態(tài)語義檢查,例如,變量是否定義、類型是否正確等等。進(jìn)行中間代碼的翻譯(2)依循的規(guī)則)依循的規(guī)則所依循的是語言的語義規(guī)則。(3)描述工具)描述工具通常使用屬性文法描述語義規(guī)則。4、代碼優(yōu)化、代碼優(yōu)化(1)任務(wù))任務(wù) 對前階段

9、產(chǎn)生的中間代碼進(jìn)行加工變換,以期在最后階段能產(chǎn)生出更為高效(省時間和空間)的目標(biāo)代碼。優(yōu)化的主要方法有:提取公共子表達(dá)式、循環(huán)優(yōu)化、刪除無用代碼等等。有時,為了便于“并行運(yùn)算”,還可以對代碼進(jìn)行并行化處理。(2)依循的規(guī)則)依循的規(guī)則優(yōu)化所依循的原則是程序的等價變換規(guī)則。5、目標(biāo)代碼生成、目標(biāo)代碼生成(1)任務(wù))任務(wù)把中間代碼(或經(jīng)過優(yōu)化處理之后)變換成特定機(jī)器上的低級語言代碼。這個階段實(shí)現(xiàn)最后的翻譯,它的工作有賴于硬件系統(tǒng)結(jié)構(gòu)和機(jī)器指令含義。(2)工作依賴)工作依賴硬件系統(tǒng)結(jié)構(gòu)和機(jī)器指令含義。1.3 編譯程序的邏輯結(jié)構(gòu)編譯程序的邏輯結(jié)構(gòu)編譯程序的總體框架編譯程序的總體框架 1編譯程序的表格管

10、理編譯程序的表格管理 2編譯程序中的錯誤及出錯處理編譯程序中的錯誤及出錯處理 3編譯程序的分遍處理編譯程序的分遍處理 4編譯前端與后端編譯前端與后端 51、編譯程序的總體框架、編譯程序的總體框架(1)編譯程序的總體框架圖)編譯程序的總體框架圖2、編譯程序的表格管理、編譯程序的表格管理(1)表格)表格 編譯程序在工作過程中需要保持一系列的表格,以登記源程序的各類信息和編譯各階段的進(jìn)展?fàn)顩r。合理地設(shè)計和使用表格是編譯程序構(gòu)造的一個重要問題。(2)符號表)符號表 在編譯程序使用的表格中,最重要的是符號表。它用來登記源程序中出現(xiàn)的每個名字以及名字的各種屬性。例如,一個名字是常量名、變量名,還是過程名等

11、等;如果是變量名,它的類型是什么、所占內(nèi)存是多大、地址是什么等等。通常,編譯程序在處理名字的定義性出現(xiàn)時,要把名字的各種屬性填人到符號表中;當(dāng)處理到名字的使用性出現(xiàn)時,要對名字的屬性進(jìn)行查證。3、編譯程序中的錯誤及出錯處理、編譯程序中的錯誤及出錯處理(1)源程序中的錯誤)源程序中的錯誤 源程序中的錯誤通常分為語法錯誤語法錯誤和語義錯誤語義錯誤兩大類。(2)語法錯誤)語法錯誤 語法錯誤是指源程序中不符合語法(或詞法)規(guī)則的錯誤,它們可在詞法分析或語法分析時檢測出來。例如,詞法分析階段能夠檢測出“非法字符”之類的錯誤;語法分析階段能夠檢測出諸如“括號不匹配”、“缺少;”之類的錯誤。(3)語義錯誤)

12、語義錯誤 語義錯誤是指源程序中不符合語義規(guī)則的錯誤,這些錯誤一般在語義分析時檢測出來,有的語義錯誤要在運(yùn)行時才能檢測出來。語義錯誤通常包括:說明錯誤、作用域錯誤、類型不一致錯誤等等。4、編譯程序的分遍處理、編譯程序的分遍處理(1)遍)遍 所謂“遍”就是對源程序或源程序的中間結(jié)果從頭到尾掃描一次,并作有關(guān)的加工處理,生成新的中間結(jié)果或目標(biāo)程序。(2)分遍處理的優(yōu)缺點(diǎn))分遍處理的優(yōu)缺點(diǎn)v 優(yōu)點(diǎn):使整個編譯程序邏輯結(jié)構(gòu)清晰一些,減少對主存容量的要求v 缺點(diǎn):增加一些重復(fù)性工作(3)如何分遍)如何分遍 一個編譯程序究竟應(yīng)分成幾遍,如何劃分,是與源語言、設(shè)計要求、硬件設(shè)備等諸因素有關(guān)的,因此難于統(tǒng)一劃定。5、編譯前端與后端、編譯前端與后端(1)編譯前端)編譯前端 編譯前端主要由與源語言有關(guān)但與目標(biāo)機(jī)無關(guān)的那些部分組成。這些部分通常包括詞法分析、語法分析、語義分析與中間代碼產(chǎn)生,有的代碼優(yōu)化工作也可包括在前端。(2)編譯后端)編譯后端 編譯后端包括編譯程序中與目標(biāo)機(jī)有關(guān)的那些部分,如與目標(biāo)機(jī)有關(guān)的代碼優(yōu)化和目標(biāo)代碼生成等。通常,后端不依賴于源語言而僅僅依賴于中間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論