第1章編譯程序概論_第1頁
第1章編譯程序概論_第2頁
第1章編譯程序概論_第3頁
第1章編譯程序概論_第4頁
第1章編譯程序概論_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本章目標本章目標v 解釋翻譯程序和編譯程序的概念解釋翻譯程序和編譯程序的概念v 說明編譯程序的工作過程說明編譯程序的工作過程v 闡述編譯程序的邏輯結構,給出其總體框架圖闡述編譯程序的邏輯結構,給出其總體框架圖v 介紹編譯技術的相關應用介紹編譯技術的相關應用教學內容教學內容1.1 1.1 編程語言與翻譯系統編程語言與翻譯系統1.2 1.2 編譯程序的工作過程編譯程序的工作過程1.3 1.3 編譯程序的邏輯結構編譯程序的邏輯結構1.4 1.4 編譯技術應用編譯技術應用1.5 1.5 本章小結本章小結1.1 編程語言與翻譯系統編程語言與翻譯系統程序設計語言程序設計語言 1常用的高級語言常用的高級語言

2、 2編譯程序的概念編譯程序的概念 31、程序設計語言、程序設計語言(1)程序設計語言)程序設計語言 人與計算機聯系的工具,人正是通過程序設計語言指揮計算機按照人的意志進行運算和操作、顯示信息和輸出運算結果的。(2)程序設計語言的發展)程序設計語言的發展【關鍵概念】程序程序設計語言的發展經歷了】程序程序設計語言的發展經歷了“低級語言低級語言高級語言高級語言甚高級語言甚高級語言” 這樣的這樣的3個階段。個階段。低級語言低級語言高級語言高級語言(第三代第三代)甚高級語言甚高級語言機器語言機器語言(第一代第一代)匯編語言匯編語言(第二代第二代)結構化語言結構化語言面向對象語言面向對象語言基礎語言基礎語

3、言第四代語言第四代語言2、常用的高級語言、常用的高級語言(1)基礎語言)基礎語言uFORTRANuCOBOLuBASIC(2)結構化語言)結構化語言uPascaluC語言uAda語言(3)面向對象語言)面向對象語言uC+語言uJava語言【關鍵概念】常用的高級語言可以分為基礎語言、結構化語言和面向對象語言】常用的高級語言可以分為基礎語言、結構化語言和面向對象語言3大類。大類。3、編譯程序的概念、編譯程序的概念(1)計算機執行高級語言程序的步驟)計算機執行高級語言程序的步驟u用一個編譯程序把高級語言翻譯成機器語言程序u運行所得的機器語言程序求得計算結果(2)翻譯程序)翻譯程序指這樣的一個程序,它

4、能夠把某一種語言程序(稱為源語言程序)轉換成另一種語言程序(稱為目標語言程序),而后者與前者在邏輯上是等價的。(3)編譯程序)編譯程序如果諸如FORTRAN 、 Pascal 、 C 、 Ada 、 Smalltalk或Java這樣的“”,而諸如匯編語言或機器語言之類的“”,這樣一個就稱為編譯程序。3、編譯程序的概念、編譯程序的概念(4)解釋程序)解釋程序 一個源語言的解釋程序是這樣的程序,它以該語言寫的源程序作為輸入,但不產生目標程序,而是邊解釋邊執行源程序本身。【關鍵概念】編譯程序實際上是一個源語言為高級語言】編譯程序實際上是一個源語言為高級語言,而目標語言是低級語言的翻譯程而目標語言是低

5、級語言的翻譯程序。在計算機上執行高級語言編寫的程序通常有編譯和解釋兩種方式,它們的區別在于序。在計算機上執行高級語言編寫的程序通常有編譯和解釋兩種方式,它們的區別在于是是否生成目標代碼。否生成目標代碼。1.2 編譯程序的工作過程編譯程序的工作過程詞法分析詞法分析 1語法分析語法分析 2語義分析和中間代碼產生語義分析和中間代碼產生 3代碼優化代碼優化 4目標代碼生成目標代碼生成 51.2 編譯程序的工作過程編譯程序的工作過程(1)編譯程序的工作過程)編譯程序的工作過程指從輸入源程序開始到輸出目標程序為止的整個過程。(2)引例)引例英文翻譯為中文英文翻譯為中文 識別出句子中的一個個單詞; 分析句子

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論