編譯原理第一章ppt_第1頁
編譯原理第一章ppt_第2頁
編譯原理第一章ppt_第3頁
編譯原理第一章ppt_第4頁
編譯原理第一章ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

程序設(shè)計(jì)語言編譯原理第一章引論1.1什么叫編譯程序程序設(shè)計(jì)語言的分類低級語言:機(jī)器語言、匯編語言高級語言:fortran、basic、pascal、c、c++

、java等等高級語言需要翻譯成低級機(jī)器語言才可執(zhí)行。二.

翻譯與編譯程序

將高級語言編寫的程序(源程序)通過一個翻譯程序的加工,可轉(zhuǎn)變成為邏輯上等價的低級語言程序(目標(biāo)程序),這個翻譯程序即稱為“編譯程序”?;拘g(shù)語1.源程序(Sourceprogram)2.目標(biāo)程序(Objectcode)3.翻譯程序(Translator)4.解釋程序(Interpreter)5.匯編程序(Assembler)6.編譯程序(Compiler)7.編譯系統(tǒng)(Compilersystem)相關(guān)概念診斷編譯程序優(yōu)化編譯程序宿主機(jī)、目標(biāo)機(jī)交叉編譯程序可變目標(biāo)編譯程序1.2編譯過程概述自然語言文章翻譯的一般步驟:1.識別單詞2.分析句子結(jié)構(gòu)3.初步翻譯4.文字修飾5.形成最后譯文編譯程序的一般步驟:1.詞法分析2.語法分析3.語義分析及中間代碼生成4.優(yōu)化5.目標(biāo)代碼生成對構(gòu)成源程序的字符串進(jìn)行掃描和分解,從左到右一個字符一個字符的讀入源程序,識別出一個個單詞(也稱單詞符號或簡稱符號)LexicalanalyzerCharacterstreamTokenstreamErrormessages一、詞法分析(LexicalAnalysis):例如某源程序片段如下:

var

sum,first,count:real;

begin

sum:=first+count*10;

end.詞法分析階段通過對該程序片段的掃描、分解,將會把組成這段程序的字符識別為如下單詞序列:1.保留字var2.標(biāo)識符sum

3.逗號,4.標(biāo)識符first

5.逗號,6.標(biāo)識符count

7.冒號:8.保留字real

9.分號;10.保留字begin

11.標(biāo)識符sum12.賦值號:=

13.標(biāo)識符first14.加號+

15.標(biāo)識符count16.乘號*

17.整數(shù)1018.分號;

19.保留字end20.界符.

在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞序列分解成各類語法單位(語法成分、短語),如“表達(dá)式”、“語句”、“程序”等等。二.語法分析(SyntaxAnalysis):syntaxanalyzertokenstreamAbstractSyntaxErrormessages賦值語句表達(dá)式:=標(biāo)識符id1(sum)表達(dá)式表達(dá)式+id2(first)表達(dá)式表達(dá)式*標(biāo)識符id3(count)整型數(shù)10例如賦值語句sum:=first+count*10

通過語法分析可用以下語法樹(Parsetree

)表示出來:三.語義分析(SyntacticAnalysis)及中間代碼生成(Generationofintermediatecode):

語義分析及中間代碼生成是在語法分析的基礎(chǔ)上,對各類語法單位分析其含義,審查有無語義錯誤,并為代碼生成收集相關(guān)信息,同時進(jìn)行初步翻譯(產(chǎn)生中間代碼)。(1)語法分析和語義分析以密切合作的方式工作。(2)語義分析的重要工作之一是進(jìn)行語義檢查,并為代碼生成收集相關(guān)信息(變量是否說明、類型是否合法、變量是否已賦值等)。(3)中間代碼生成是將源程序變成某種中間語言形式,它是一種結(jié)構(gòu)簡單、含義明確的記號系統(tǒng)。例如“四元式”即為一種中間代碼,其形式為:

(算符,運(yùn)算對象1,運(yùn)算對象2,結(jié)果)賦值語句:Z:=(X+0.48)*Y/W可以生成如下所示的四元式:(+,X,0.48,t1)

(*,t1,Y,t2)

(/,t2,W,t3)

(:=,t3,—,Z)四.代碼優(yōu)化(Optimizationofcode):

為了使生成的目標(biāo)代碼更為高效(更省時間和空間),可以對已產(chǎn)生的中間代碼進(jìn)行優(yōu)化改造,這就是代碼優(yōu)化。代碼優(yōu)化的工作可以在編譯的不同階段進(jìn)行,其中對中間代碼的優(yōu)化尤其重要。

(+,X,0.48,t1)

(*,t1,Y,t2)

(/,t2,W,t3)

(:=,t3,—,Z)(+,X,0.48,t1)

(*,t1,Y,t2)

(/,t2,W,Z)另見書中P3-4例題(循環(huán)優(yōu)化)五.代碼生成(Generationofcode):目標(biāo)代碼生成階段的任務(wù)就是把中間代碼變換成特定機(jī)器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。這部分工作非常復(fù)雜,與硬件系統(tǒng)關(guān)系密切,要產(chǎn)生高效的目標(biāo)代碼是不容易的。例:上述中間代碼可生成如下的匯編代碼:

(+,X,0.48,t1)

(*,t1,Y,t2)

(/,t2,W,Z)MOVFX,R1

ADDF0.48,R1

MOVFY,R2

MULFR1,R2MOVFW,R2DIVFR1,R2

MOVR1,Z1.3編譯程序的結(jié)構(gòu)一.編譯程序總框目標(biāo)代碼生成器詞法分析器(掃描器)語法分析器(分析器)語義分析及中間代碼生成器優(yōu)化器表格與表格管理錯誤檢測源程序單詞符號語法單位中間代碼中間代碼目標(biāo)代碼1.詞法分析器(掃描器)2.語法分析器(分析器)3.語義分析及中間代碼生成器4.優(yōu)化器5.目標(biāo)代碼生成器

6.表格與表格管理7.錯誤檢測6.表格與表格管理:編譯程序在其工作過程中使用最多的數(shù)據(jù)結(jié)構(gòu)形式就是表格。各種各樣的表格中記錄著源程序的各種信息,以便需要時可以隨時查詢使用。最重要的表格是符號表,其主要用途為:

收集記錄各類符號的屬性信息:當(dāng)分析到標(biāo)識符的說明部分時,在符號表中記錄相關(guān)屬性;當(dāng)分析到標(biāo)識符的使用部分時,在符號表中查證相關(guān)屬性;

語法分析時合法性檢查的依據(jù):同一個標(biāo)識符可能在程序的不同地方出現(xiàn),語法分析需要檢查標(biāo)識符在上下文中的一致性和合法性,而符號表正是進(jìn)行這種檢查的依據(jù);

作為目標(biāo)代碼生成階段地址分配的依據(jù):每個變量在目標(biāo)代碼生成時都需要確定其對應(yīng)的存儲地址,編譯程序在完成了對變量的地址分配后,將其存于符號表中,其后可以通過符號表獲取每個變量對應(yīng)的存儲地址。

7.錯誤檢測(DetectionofErrors):

溫馨提示

  • 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

提交評論