編譯原理復(fù)習(xí)清華呂映芝.ppt

編譯原理復(fù)習(xí)清華呂映芝.ppt

ID:52135800

大?。?65.00 KB

頁數(shù):102頁

時間:2020-04-01

編譯原理復(fù)習(xí)清華呂映芝.ppt_第1頁
編譯原理復(fù)習(xí)清華呂映芝.ppt_第2頁
編譯原理復(fù)習(xí)清華呂映芝.ppt_第3頁
編譯原理復(fù)習(xí)清華呂映芝.ppt_第4頁
編譯原理復(fù)習(xí)清華呂映芝.ppt_第5頁
資源描述:

《編譯原理復(fù)習(xí)清華呂映芝.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、編譯原理清華大學(xué)計算機科學(xué)與技術(shù)系呂映芝2003.9.9第1章編譯程序概論1.1什么是編譯程序1.2翻譯和解釋1.3編譯過程和編譯程序的結(jié)構(gòu)*1.4編譯程序的實現(xiàn)途徑1.5編譯技術(shù)在其它軟件中的應(yīng)用有關(guān)學(xué)習(xí)問題參考書1.1什么是編譯程序語言和翻譯:語言是人類交流思想和信息的工具。從自然語言來說,世界上存在著許多種語言,各國之間要交流信息,就要有各種語言之間的翻譯。編譯程序:編譯程序就是一個語言的翻譯程序,是把一種語言(稱源語言)書寫的程序翻譯成另一種等價功能語言(稱目標語言)的程序。換句話說,編譯是指把一種用源語言表示的算法轉(zhuǎn)換到另一種等價

2、的用目標語言表示的算法。1.1什么是編譯程序編譯程序的必要性:計算機是當(dāng)代科學(xué)發(fā)展的重要工具,已滲入到各行各業(yè)乃至家庭生活中。所以如何讓他為人類工作服務(wù),就必須建立人與計算機之間的信息交流。但計算機只認識由“0”和“1”構(gòu)成的機器語言,并不認識C、C++、Java、Pascal等高級程序設(shè)計語言。每臺計算機都有自己獨特的指令系統(tǒng),即機器語言,最早的程序就是用8進制和16進制碼的機器語言書寫的。1.1什么是編譯程序用機器語言書寫程序,不僅不易學(xué),而且可調(diào)試性、可讀性、可維護性和結(jié)構(gòu)性都很差,開發(fā)時間也很長。因此,編譯程序最初的定義是把一種高級

3、程序設(shè)計語言的源程序(面向人的)翻譯成另一種等價的低級程序設(shè)計語言(面向硬件的)即機器語言或匯編語言。所以,編譯程序是人用某種語言書寫的某個翻譯程序。1.1什么是編譯程序編譯程序的功能編譯程序高級程序設(shè)計語言(源語言)機器語言(目標語言)S:源語言(程序)O:目標語言(程序)I:實現(xiàn)語言SOI用T型圖表示1.1什么是編譯程序隨著計算機及其應(yīng)用的發(fā)展,出現(xiàn)了各種應(yīng)用更方便的高級語言,如:FORTRAN、PL/1、ALGOL60、COBOL、PASCAL、Ada、LISP、C、C++、JAVA等。早期開發(fā)的軟件需轉(zhuǎn)換,因此,編譯程序不僅是高級語

4、言翻譯成機器語言,廣泛地講:編譯程序高級語言?低級語言高級語言?高級語言高級語言?中間語言中間語言?低級語言1.1什么是編譯程序例:高級語言?高級語言FORTRANPASCALCJAVAPL/1C++COBOLCAdaJAVA1.1什么是編譯程序逆向工程低級語言?高級語言例:IBM/4700(匯編語言)?C交叉編譯在一個機器上對某種高級語言進行編譯,產(chǎn)生的目標語言是另一個機器的匯編語言或機器語言。例:在WAX機上編譯Ada語言,產(chǎn)生PC機的匯編語言,這樣的目標語言只能在PC機上運行,如嵌入式系統(tǒng)對交叉編譯的應(yīng)用。當(dāng)功能相同時,不同語言之間的

5、區(qū)別,只是語言的詞法、語法和語義規(guī)則形式不同。運行環(huán)境也可能不同。例:計算園面積C程序:functioncircle();{intr;floats;scanf(“%d”,&r);s=3.1416*r*r;printf(“%d”,s);}Pascal程序:procedurecircle;varr:integer;s:real;beginread(r);s:=3.1416*r*r;write(s);end;1.2翻譯和解釋翻譯:按源程序的實際輸入順序,處理程序語句,得到可執(zhí)行的目標程序。解釋:按源語言的定義邊解釋邊執(zhí)行。解釋執(zhí)行是按照被解釋

6、的源程序的邏輯流程進行處理的,不產(chǎn)生目標程序。解釋程序源程序輸入輸出解釋解釋執(zhí)行優(yōu)點:交互方便,節(jié)省空間。缺點:效率低。因?qū)υ闯绦虻难h(huán)語句部分要反復(fù)解釋執(zhí)行。共同點:都需進行詞法、語法、語義分析。可比喻為:翻譯(編譯)---筆譯(產(chǎn)生目標程序)解釋---口譯(不產(chǎn)生目標程序)1.3編譯過程和編譯程序結(jié)構(gòu)編譯過程編譯程序結(jié)構(gòu)編譯的趟(遍)(pass)編譯過程詞法分析語法分析語義分析中間代碼生成代碼優(yōu)化目標代碼生成詞法分析讀字符流的源程序、識別單詞例:position:=initial+rate*60;(轉(zhuǎn)換為內(nèi)部表示,拼標識符、數(shù)和復(fù)合單詞

7、等)單詞類型單詞值標識符(1)position算符(賦值號):=(復(fù)合單詞)詞法分析單詞類型單詞值標識符(2)initial算符(加號)+標識符(3)rate算符(乘號)*整數(shù)60界符(分號);語法分析功能:層次分析,把源程序的單詞組成語法短語(表示成語法樹或其它內(nèi)部碼)?,F(xiàn)用“巴科斯-瑙爾范式”(EBNF)描述。例:<賦值語句>::=<標識符>:=<表達式><表達式>::=<表達式>+<表達式><表達式>::=<表達式>*<表達式><表達式>::=“(”<表達式>“)”<表達式>::=<標識符><表達式>::=<常數(shù)>語法分析(語法樹):

8、=+60*positioninitialrate語義分析語義審查靜態(tài)語義檢查上下文相關(guān)性如:類型匹配和類型轉(zhuǎn)換例:Programp();varrate:real;procedur

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。