




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理編譯原理山東科技大學(xué)信息學(xué)院張鵬張鵬v本課程主要內(nèi)容涉及:本課程主要內(nèi)容涉及:高級程序設(shè)計語言高級程序設(shè)計語言形式語言理論的基本概念形式語言理論的基本概念構(gòu)造編譯程序的基本概念、原理和技術(shù)構(gòu)造編譯程序的基本概念、原理和技術(shù)基于基于形式語言理論形式語言理論有關(guān)概念來討論有關(guān)概念來討論編譯實現(xiàn)問題編譯實現(xiàn)問題即:即: 編譯原理編譯原理=形式語言理論形式語言理論+ +編譯技術(shù)編譯技術(shù)1. 1. 主要內(nèi)容主要內(nèi)容2.2.編譯理論與其他課程關(guān)系編譯理論與其他課程關(guān)系編譯理論編譯理論自動機和形式語言離散數(shù)學(xué)數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng)信息的表示和組織信息的表示和組織 理論支持理論支持 控制對象控制對象高級語言
2、實施實施基礎(chǔ)基礎(chǔ)3.編譯程序在計算機系統(tǒng)中的地位v編譯系統(tǒng)是一種系統(tǒng)軟件。軟件:計算機系統(tǒng)中的程序及其文檔。系統(tǒng)軟件:居于計算機系統(tǒng)中最靠近硬件的一層,其他軟件一般都通過系統(tǒng)軟件發(fā)揮作用。和具體的應(yīng)用領(lǐng)域無關(guān),如編譯系統(tǒng)和操作系統(tǒng)等。語言處理系統(tǒng):把軟件語言書寫的各種源代碼處理成可在計算機上執(zhí)行的程序,如編譯系統(tǒng)。裸機操作系統(tǒng)語言處理系統(tǒng)應(yīng)用軟件層計算機系統(tǒng)計算機系統(tǒng)v用于編譯器編譯器的設(shè)計v一般的軟件設(shè)計:文本編輯器、自動排版、模式識文本編輯器、自動排版、模式識別、程序自動驗證、程序自動調(diào)試、別、程序自動驗證、程序自動調(diào)試、v程序格式化工具程序格式化工具:使程序呈現(xiàn)清晰的結(jié)構(gòu)(Source
3、insight, Editplus)v編譯原理在反病毒技術(shù)反病毒技術(shù)中的研究和應(yīng)用 v交叉編譯交叉編譯技術(shù):如嵌入式應(yīng)用嵌入式應(yīng)用v硬件描述語言硬件描述語言及其編譯技術(shù):如芯片設(shè)芯片設(shè)計v為計算機分析和理解自然語言提供參考為計算機分析和理解自然語言提供參考4.為什么要學(xué)習(xí)編譯原理?5.課程考核方法v閉卷考試,同時作業(yè)完成情況和上機實踐的結(jié)果占一定的比例。 v考試成績 = v 80%考試成績+考勤考勤和作業(yè) (20%)v(1)編譯原理(第二版),編譯原理(第二版),清華大學(xué)出版社,張素琴,呂映芝等編著,2005。v(2)陳火旺等,程序設(shè)計語言編譯原理程序設(shè)計語言編譯原理 (第3版),國防工業(yè)出版
4、社,2000v(3 3)陳意云、張昱,編譯原理編譯原理,高等教育出版社, 2003v(4 4)編譯原理及實踐)編譯原理及實踐 馮博琴譯 機械工業(yè)出版社 2000 年 3 月(lex and yacc 介紹,Tiny語言)6. 教材和參考書編譯原理的經(jīng)典書籍龍書,虎書,鯨書v龍書龍書(Dragon book)Alfred V.Aho, Ravi Sethi Jeffrey D .Ullman , Compilers:Principles, Techniques, and Tools, Addison-Wesly,1986 。v第二版已經(jīng)出版。v國內(nèi)教材的主要參考。英文第一版中文第一版紅龍書本科教
5、學(xué)版 英文第二版中文第二版紫龍書英文第三版?綠龍書vAlfred VAho 哥倫比亞大學(xué),美國科學(xué)與藝術(shù)學(xué)院及國家工程學(xué)院院士,曾獲得IEEE的馮諾伊曼獎。 Jeffrey D. Ullman 斯坦福大學(xué)的計算機科學(xué)教授。杰出教育家,出版了15本著作,發(fā)表了170篇技術(shù)論文 v鯨書鯨書(Whale book)Steven S.MuchnickSteven S.MuchnickAdvanced Compiler Design and Advanced Compiler Design and ImplementationImplementationv高級編譯器設(shè)計與實現(xiàn) 趙克佳譯 機械工業(yè)出版社
6、2005年7月 v本書涵蓋了現(xiàn)代微處理器編譯器的設(shè)計和實現(xiàn)方面的所有高級主題。v深入闡述優(yōu)化問題v虎書虎書(Tiger book)書名是:Modern Compiler Implementation Modern Compiler Implementation in Java/C+/ML, Second Editionin Java/C+/ML, Second Edition作者是:Andrew W.AppelAndrew W.Appel, with Jens Palsberg 現(xiàn)代編譯原理-C語言描述 趙克佳譯 人民郵電出版社 2006年4月 v書中專門提供了一個用C語言編寫的實習(xí)項目,包括
7、前端和后端設(shè)計,可以在一學(xué)期內(nèi)創(chuàng)建一個功能完整的編譯器。 1.1 程序設(shè)計語言概述 程序設(shè)計語言:程序設(shè)計語言:用來編寫計算機程序的語言。 JAVASCRIPT, ASP, PHP, PERL20其他面向特定應(yīng)用領(lǐng)域的語言1互連網(wǎng)應(yīng)用:HTML、XML2計算機輔助設(shè)計:MATLAB3集成電路設(shè)計:VHDL、Verilog4虛擬現(xiàn)實:VRML問題: 如何將形形色色的語言翻譯成可以在計算機上運行的0、1串低級語言低級語言v在1940年左右,電子數(shù)字計算機剛出現(xiàn),程序設(shè)計都是用機器語言(Machine Language) v機器語言機器語言:直接用計算機能夠識別的二進制代碼指令來編寫程序的語言。由二
8、進制的指令代碼組成。v1 + 3 1 + 3 表示為表示為 10000001 10000001 00000001 00000001 1000001110000011v屬性:最底層的語言,不需要翻譯就可以直接被計算機硬件識別。對應(yīng)不同的計算機硬件有不同的機器語言。v特點:執(zhí)行速度快,但編寫程序的難度大,修改、調(diào)試不方便,直觀性差,不易移植.v匯編語言匯編語言:又稱為符號語言。與機器語言一一對應(yīng),采用能幫助記憶的英文縮寫符號(指令助記符)來代替機器語言指令中的操作碼,用地址符號來代替地址碼。v用指令助記符及地址符號書寫的指令稱為匯編指令,用匯編指令編寫的程序稱為匯編語言源程序。v X+Y X+Y
9、表示為表示為 ADD X YADD X Yv機器不能直接識別匯編語言程序,必須把它翻譯為機器語言程序才能執(zhí)行。 匯編語言特點匯編語言特點v優(yōu)點:優(yōu)點:大大提高了編程的速度和準(zhǔn)確度,人們至今仍在使用,在編碼需要極快的速度和極高的簡潔程度時尤為如此。v缺點:缺點:編寫不容易,閱讀和理解困難;嚴(yán)格依賴于特定的機器,為一種計算機編寫的代碼在應(yīng)用于另一種計算機時必須完全重寫。低級語言特點低級語言特點( (缺點缺點) ): 低級語言是依賴于具體的計算機硬件的語言,使用起來既繁瑣又容易出錯,程序不便于閱讀和交流,實用性差。高級語言高級語言v高級語言高級語言:與具體的計算機硬件無關(guān),是面向:與具體的計算機硬件
10、無關(guān),是面向問題的程序設(shè)計語言,其表達方式接近于自然問題的程序設(shè)計語言,其表達方式接近于自然語言和數(shù)學(xué)語言,易于人們接受和掌握。語言和數(shù)學(xué)語言,易于人們接受和掌握。 v采用類似于采用類似于數(shù)學(xué)公式數(shù)學(xué)公式的書寫方式:的書寫方式:x x = 1 + 3 = 1 + 3v特點特點:獨立于具體的計算機硬件,程序的編制:獨立于具體的計算機硬件,程序的編制和調(diào)試方便,通用性和可移植性好。和調(diào)試方便,通用性和可移植性好。v在計算機執(zhí)行之前,需要通過編譯程序翻譯成在計算機執(zhí)行之前,需要通過編譯程序翻譯成目標(biāo)語言程序,或需要通過解釋程序邊解釋,目標(biāo)語言程序,或需要通過解釋程序邊解釋,邊執(zhí)行。邊執(zhí)行。v時間與空
11、間效率比較低。時間與空間效率比較低。 比較比較 機器語言機器語言匯編語言匯編語言高級語言高級語言硬件識別硬件識別是唯一可以識是唯一可以識別的語言別的語言不可識別不可識別不可識別不可識別是否可直是否可直接執(zhí)行接執(zhí)行 可直接執(zhí)行可直接執(zhí)行不可,需匯不可,需匯編、連接編、連接不可,需編譯不可,需編譯/ /解解釋、連接釋、連接 特點特點面向機器面向機器占用內(nèi)存少占用內(nèi)存少執(zhí)行速度快執(zhí)行速度快使用不方便使用不方便面向機器面向機器占用內(nèi)存少占用內(nèi)存少執(zhí)行速度快執(zhí)行速度快較為直觀較為直觀與機器語言與機器語言一一對應(yīng)一一對應(yīng)v面向問題面向問題/ /對象對象v占用內(nèi)存大占用內(nèi)存大v執(zhí)行速度相對慢執(zhí)行速度相對慢v
12、標(biāo)準(zhǔn)化程度高標(biāo)準(zhǔn)化程度高v便于程序交換,便于程序交換,使用方便使用方便 定位定位低級語言,極低級語言,極少使用少使用低級語言,低級語言,很少使用很少使用高級語言,種類多,高級語言,種類多,常用常用各級語言的比較各級語言的比較什么是編譯程序v編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分。編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分。編譯程序的功能:把高級語言程序翻譯成等編譯程序的功能:把高級語言程序翻譯成等價的低級語言程序。價的低級語言程序。v源程序源程序( (稱作源語言稱作源語言) ) v目標(biāo)程序目標(biāo)程序( (稱作目標(biāo)語言稱作目標(biāo)語言) )編譯程序高級語言源程序的執(zhí)行通常分兩個階段:源程序(高級語言)編譯
13、程序計算機目標(biāo)程序(機器語言)編譯階段編譯階段初始數(shù)據(jù)目標(biāo)程序計算機運行系統(tǒng)計算結(jié)果運行階段運行階段源程序源程序目標(biāo)程序目標(biāo)程序可執(zhí)行程序可執(zhí)行程序 編輯編輯 程序程序匯編或匯編或編譯程序編譯程序連接連接 程序程序用于編寫高用于編寫高級語言程序級語言程序把目標(biāo)程序以及所需的功能庫等轉(zhuǎn)換成一個可執(zhí)行的裝入程序。完成此功能的程序叫連接程序。編譯方式是將源程序整個地編譯方式是將源程序整個地翻譯成目標(biāo)程序的方式。完翻譯成目標(biāo)程序的方式。完成此功能的程序叫編譯程序。成此功能的程序叫編譯程序。解釋型的語言解釋型的語言-腳本語言腳本語言 1.腳本語言腳本語言(JavaScript,VBscript等等)介于
14、介于HTML和和C, C+, Java, C#等編程語言之間。等編程語言之間。 HTML是格式化和鏈結(jié)文本。是格式化和鏈結(jié)文本。 編程語言通常用于向機器發(fā)出一系列復(fù)雜的指編程語言通常用于向機器發(fā)出一系列復(fù)雜的指令。令。 2.腳本語言與編程語言也有很多相似地方,其腳本語言與編程語言也有很多相似地方,其函數(shù)與編程語言比較相象一些。但是編程語函數(shù)與編程語言比較相象一些。但是編程語言的語法和規(guī)則更為嚴(yán)格和復(fù)雜一些言的語法和規(guī)則更為嚴(yán)格和復(fù)雜一些. v3. 腳本語言一般都有相應(yīng)的腳本引擎(虛腳本語言一般都有相應(yīng)的腳本引擎(虛擬機)來解釋執(zhí)行。比如:擬機)來解釋執(zhí)行。比如:JAVASCRIPT, ASP,
15、 PHP,PERL要解釋器才能運行,都是要解釋器才能運行,都是腳本語言。腳本語言。v4.腳本語言是一種解釋性的語言腳本語言是一種解釋性的語言, 不象不象cc+等可以編譯獨立執(zhí)行的等可以編譯獨立執(zhí)行的exe 文件。文件。v5.腳本語言代碼一般都是以文本形式存在腳本語言代碼一般都是以文本形式存在,類似于一種命令的序列。類似于一種命令的序列。編譯和解釋程序的運行方式:功能功能工作結(jié)果工作結(jié)果實現(xiàn)技術(shù)上實現(xiàn)技術(shù)上編譯編譯程序程序源程序的一個轉(zhuǎn)換轉(zhuǎn)換系統(tǒng)源程序的目標(biāo)代碼目標(biāo)代碼把中間代碼轉(zhuǎn)換成目標(biāo)程序解釋解釋程序程序源程序的一個執(zhí)行執(zhí)行系統(tǒng)源程序的執(zhí)行結(jié)果執(zhí)行結(jié)果執(zhí)行中間代碼解釋程序和編譯程序的區(qū)別編譯
16、相當(dāng)于全文翻譯,全部翻譯完才執(zhí)行。解釋就相當(dāng)于同聲翻譯,邊翻譯邊執(zhí)行。 特點:v1編譯器:工作效率高,即時間快、空間省;交互性與動態(tài)特性差、可移植性差。大多數(shù)采用此種方法翻譯;v2解釋器:工作效率低,即時間慢、空間費;交互性與動態(tài)特性好、可移植性好。基本功能:二者相同;v所采用的技術(shù):從翻譯的角度來講,兩種方式所涉及的原理、方法、技術(shù)相似。注意:注意:v編譯結(jié)果不一定編譯成機器代碼,只需要編編譯結(jié)果不一定編譯成機器代碼,只需要編譯成機器可以運行的代碼,這里的機器也可譯成機器可以運行的代碼,這里的機器也可以是虛擬機。通常編譯的結(jié)果是以是虛擬機。通常編譯的結(jié)果是exeexe文件或文件或中間代碼文件
17、。中間代碼文件。vJavaJava可以看作是半編譯半解釋的語言,可以看作是半編譯半解釋的語言,通過通過把把javajava源代碼編譯成源代碼編譯成javajava虛擬機可以識別的虛擬機可以識別的字節(jié)碼;字節(jié)碼;再通過虛擬機解釋執(zhí)行,可以稱作再通過虛擬機解釋執(zhí)行,可以稱作是一種折中。是一種折中。vJavaJava虛擬機的初衷是因為虛擬機的初衷是因為跨平臺跨平臺而不是效率而不是效率的考慮。的考慮。 程序設(shè)計語言特點和發(fā)展程序設(shè)計語言特點和發(fā)展語言發(fā)展階段語言發(fā)展階段:1. 1.機器語言機器語言 0101碼碼 2.2.符號語言符號語言 匯編語言匯編語言3.3.高級語言高級語言 第一種高級語言-For
18、tranFortranFortran :19531953年年1212月,月, IBMIBM公司程序師約翰公司程序師約翰巴科斯巴科斯(J. (J. Backus1924Backus1924年年1212月月3 3日日20072007年年3 3月月1717日)日) :背景:背景:“程序設(shè)計相當(dāng)昂貴,租借機器要花去好幾百萬,程序設(shè)計相當(dāng)昂貴,租借機器要花去好幾百萬,而程序設(shè)計的費用卻只多不少。而程序設(shè)計的費用卻只多不少?!?” 1 9 5 41 9 5 4年年 ,第一個完全脫離機器硬件的高級語言,科學(xué),第一個完全脫離機器硬件的高級語言,科學(xué)計算語言的計算語言的,“,“公式翻譯語言公式翻譯語言”( FO
19、Rmula ( FORmula TRANslatorTRANslator), ,注重科學(xué)計算、注重執(zhí)行效率注重科學(xué)計算、注重執(zhí)行效率 . .19661966年,美國統(tǒng)一了它的標(biāo)準(zhǔn),稱為年,美國統(tǒng)一了它的標(biāo)準(zhǔn),稱為FORTRAN 66FORTRAN 66語言。語言。 4040多年過去,多年過去,F(xiàn)ORTRANFORTRAN仍然是科學(xué)計算選用的語言仍然是科學(xué)計算選用的語言之一之一(Fortran 77(Fortran 77,F(xiàn)ortran 90/95 )Fortran 90/95 )。巴科斯因此獲得了巴科斯因此獲得了19771977年度年度“圖靈獎圖靈獎”。20042004年年5 5月,月,F(xiàn)or
20、tran 2003Fortran 2003,F(xiàn)ortranFortran語言新標(biāo)準(zhǔn)語言新標(biāo)準(zhǔn) . .AlgolAlgol 60 60 ,1960 1960 年年, , 國際代數(shù)語言,首次引進了局部變量和國際代數(shù)語言,首次引進了局部變量和遞歸的概念。沒有被廣泛運用,但它演變?yōu)槠渌绦蛘Z遞歸的概念。沒有被廣泛運用,但它演變?yōu)槠渌绦蛘Z言的概念基礎(chǔ)言的概念基礎(chǔ) COBOLCOBOL語言語言 :面向商業(yè)的通用語言面向商業(yè)的通用語言(COmmon(COmmon Business Business Oriented Language) 1959Oriented Language) 1959年年5 5月,格
21、雷斯月,格雷斯. .霍波霍波(G.HopperG.Hopper)博士領(lǐng)導(dǎo)設(shè)計。)博士領(lǐng)導(dǎo)設(shè)計。正式發(fā)布于正式發(fā)布于19601960年年4 4月,稱為月,稱為Cobol-60Cobol-60, 最新最新COBOL 2002COBOL 2002。 僅有加、減、乘、除及乘方這五種簡單的算術(shù)運算,不僅有加、減、乘、除及乘方這五種簡單的算術(shù)運算,不適于適于科學(xué)計算科學(xué)計算。用在財會工作、統(tǒng)計報表、計劃編制、。用在財會工作、統(tǒng)計報表、計劃編制、情報檢索、人事管理等數(shù)據(jù)管理及商業(yè)數(shù)據(jù)處理領(lǐng)域。情報檢索、人事管理等數(shù)據(jù)管理及商業(yè)數(shù)據(jù)處理領(lǐng)域。 用用COBOLCOBOL寫作的軟件,要比其他語言多得多。只要寫作的
22、軟件,要比其他語言多得多。只要大型大型機機存在,存在,COBOLCOBOL就不會消失就不會消失 曾經(jīng)產(chǎn)生巨大影響曾經(jīng)產(chǎn)生巨大影響-“-“千年蟲千年蟲”(Y2KY2K)事件。)事件。 vBASICBASIC :1960年代中期,美國達特默斯學(xué)院(Dartmouth)約翰凱梅尼(J.Kemeny)和托馬斯卡茨(T.Kurtz)認(rèn)為,象FORTRAN那樣的語言都是為專業(yè)人員設(shè)計,希望能為無經(jīng)驗的人提供一種簡單的語言,非計算機專業(yè)的學(xué)會使用電腦。v 在簡化FORTRAN語言的基礎(chǔ)上,研制出一種“初學(xué)者通用符號指令代碼”(Beginners All purpose Symbolic Intruction
23、 Code),簡稱BASIC。v基本BASICBASIC 只有17條語句,12個函數(shù)和3個命令,由于BASIC語言易學(xué)易用,很快成為最流行的語言之一。v經(jīng)過不斷改進后, 它一直沿用至今,出現(xiàn)了象QBASIC、VB、VB.net等新一代BASIC版本。結(jié)構(gòu)化高級語言(結(jié)構(gòu)化高級語言(1 9 7 01 9 7 0 )PascalPascal:瑞士聯(lián)邦技術(shù)學(xué)院尼克勞斯瑞士聯(lián)邦技術(shù)學(xué)院尼克勞斯沃爾斯沃爾斯(N. (N. Wirth) Wirth) 教授教授發(fā)明了一種簡單明晰的語言-PASCAL語言。PASCAL語言語法嚴(yán)謹(jǐn),層次分明,程序易寫,可讀性好,是第一個結(jié)構(gòu)化的編程語言。用作教學(xué)語言,系統(tǒng)程序
24、設(shè)計語言等。 后繼語言Delphi。 Wirth Wirth 獲獲19841984年度年度“圖靈獎圖靈獎”。Pascal:法國著名的數(shù)學(xué)家、物理學(xué)家、 哲學(xué)家和散文家 C C 語言:語言:AT&TAT&T貝爾實驗室的鄧尼斯貝爾實驗室的鄧尼斯里奇里奇 (D.Ritchie(D.Ritchie) ) 和肯和肯湯姆森湯姆森(K. Thompson)(K. Thompson),(里奇最初的貢獻是開,(里奇最初的貢獻是開發(fā)了發(fā)了UnixUnix操作系統(tǒng))。操作系統(tǒng))。 19701970年,作為年,作為UnixUnix的一項的一項“副產(chǎn)品副產(chǎn)品”,完成了,完成了C C語語言的開發(fā)(原型言的
25、開發(fā)(原型ALGOL 60ALGOL 60 ),為了用它編寫),為了用它編寫UnixUnix。這種語言結(jié)合了匯編語言和高級語言的優(yōu)點,大受程這種語言結(jié)合了匯編語言和高級語言的優(yōu)點,大受程序設(shè)計師的青睞序設(shè)計師的青睞 。 里奇用里奇用C C語言重寫了語言重寫了UNIXUNIX,使得,使得UNIXUNIX成為第一個成為第一個用高級語言寫作的操作系統(tǒng)。正因為如此,用高級語言寫作的操作系統(tǒng)。正因為如此,UNIXUNIX才才大為流行,因為大為流行,因為C C語言代碼要比用機器碼易讀易懂,語言代碼要比用機器碼易讀易懂,更方便地移植到任何機器上去。更方便地移植到任何機器上去。 19831983年度的年度的“
26、圖靈獎圖靈獎” ” 面向?qū)ο蟾呒壵Z言面向?qū)ο蟾呒壵Z言 SIMULA 67SIMULA 67: 20: 20世紀(jì)世紀(jì)6060年代開發(fā)的年代開發(fā)的SimulaSimula 67 67,它是面向?qū)ο笳Z言的鼻祖。它將它是面向?qū)ο笳Z言的鼻祖。它將AlgolAlgol 60 60中中的塊結(jié)構(gòu)向前推進了一大步,提出了對象的的塊結(jié)構(gòu)向前推進了一大步,提出了對象的概念。概念。 Smalltalk-80: Smalltalk-80: 是最有影響的面向?qū)ο蟮恼Z言是最有影響的面向?qū)ο蟮恼Z言之一。它豐富了面向?qū)ο蟮母拍睢T撜Z言并之一。它豐富了面向?qū)ο蟮母拍?。該語言并入了入了SimulaSimula語言的許多面向?qū)ο蟮奶?/p>
27、征,包語言的許多面向?qū)ο蟮奶卣?,包括類和繼承等。括類和繼承等。 v C+ C+v比加尼比加尼斯楚士舒普斯楚士舒普 (Bjarne StroustrupBjarne Stroustrup) AT&T、貝爾實驗室和ACM成員。 v 1979年,B. S開始開發(fā)一種語言,當(dāng)時稱為“C with Class”, 19831983年正式取名為年正式取名為C+C+,在經(jīng)歷了不斷修訂后,于在經(jīng)歷了不斷修訂后,于19941994年制定了年制定了ANSI ANSI C+C+標(biāo)準(zhǔn)的草案;標(biāo)準(zhǔn)的草案;v 1998年,ANSI/ISO C+標(biāo)準(zhǔn)建立,同年, B. S推出了其經(jīng)典著作The C+ Program
28、ming Language的第三版。Python1. 1.PythonPython是一種面向?qū)ο蟮慕忉屝缘挠嬎銠C程序設(shè)是一種面向?qū)ο蟮慕忉屝缘挠嬎銠C程序設(shè)計語言,也是一種功能強大而完善的通用型語言;計語言,也是一種功能強大而完善的通用型語言;2.2.已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定;已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定;3.3.具有腳本語言中最豐富和強大的類庫,足以支持具有腳本語言中最豐富和強大的類庫,足以支持絕大多數(shù)日常應(yīng)用;絕大多數(shù)日常應(yīng)用;4.4.具有非常簡捷而清晰的語法特點,適合完成各種具有非常簡捷而清晰的語法特點,適合完成各種高層任務(wù),幾乎可以在所有的操作系統(tǒng)中運行。高層任務(wù),幾
29、乎可以在所有的操作系統(tǒng)中運行。vPythonPython的創(chuàng)始人為的創(chuàng)始人為Guido van RossumGuido van Rossum。19891989年圣誕節(jié)期間,在阿姆斯特丹,年圣誕節(jié)期間,在阿姆斯特丹,GuidoGuido為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,做為腳本解釋程序,做為 ABC ABC 語言的一種繼承。語言的一種繼承。之所以選中之所以選中 PythonPython(大蟒蛇的意思)作為(大蟒蛇的意思)作為程序的名字,是因為他是一個程序的名字,是因為他是一個Monty Monty PythonPython的飛行馬戲團的愛好
30、者。的飛行馬戲團的愛好者。v現(xiàn)在現(xiàn)在googlegoogle工作,工作, PythonPython是是googlegoogle的開發(fā)語言之一的開發(fā)語言之一 (C C,JavaJava)Python 優(yōu)點優(yōu)點vPythonPython是免費的是免費的vPythonPython是可移植的是可移植的 vPythonPython的強大功能的強大功能 vPythonPython的可擴展性:的可擴展性:PythonPython和和C C可以一起工可以一起工作。它可以嵌入到作。它可以嵌入到C C或者或者C+C+的應(yīng)用程序當(dāng)中的應(yīng)用程序當(dāng)中v PythonPython的簡單性:語言的核心很小,語義和的簡單性:
31、語言的核心很小,語義和樣式非常簡單。樣式非常簡單。 vJAVAv詹姆斯高斯林(James Gosling)等人于1990年代初開發(fā)。v最初被命名為Oak,用于解決諸如電視機、電話、鬧鐘、烤面包機等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預(yù)期的高,Sun放棄了該項計劃。v就在Oak幾近失敗之時,隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計算機網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,在1995年5月以“Java”的名稱正式發(fā)布了。 JavaJava伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,逐伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,逐漸成為重要的網(wǎng)絡(luò)編程語言。漸成為重要的網(wǎng)絡(luò)編程語言。 軟件的發(fā)展2020世
32、紀(jì)世紀(jì)7070年代:因受益于結(jié)構(gòu)化程序設(shè)年代:因受益于結(jié)構(gòu)化程序設(shè)計,美國導(dǎo)彈預(yù)警系統(tǒng)達計,美國導(dǎo)彈預(yù)警系統(tǒng)達385385萬句。萬句。2020世紀(jì)世紀(jì)8080年代:借助軟件工程的方法美年代:借助軟件工程的方法美國航天飛機監(jiān)控系統(tǒng)達國航天飛機監(jiān)控系統(tǒng)達40004000萬句。萬句。 2020世紀(jì)世紀(jì)9090年代:可視化和面向?qū)ο蟮木幠甏嚎梢暬兔嫦驅(qū)ο蟮木幊陶Z言,以其迅捷的編譯速度、強大的程語言,以其迅捷的編譯速度、強大的功能和易學(xué)靈活的特點功能和易學(xué)靈活的特點 。Windows 98有有1800萬行代碼;萬行代碼;Windows XP為為3500萬行;萬行;Windows Vista的代碼行數(shù)
33、達到了的代碼行數(shù)達到了5000萬行。萬行。 v2 2 高級語言的參數(shù)傳遞高級語言的參數(shù)傳遞v 過程(或函數(shù))的定義和調(diào)用是程序設(shè)計語過程(或函數(shù))的定義和調(diào)用是程序設(shè)計語言的主要特征之一,也是模塊化程序設(shè)計的主要言的主要特征之一,也是模塊化程序設(shè)計的主要手段和節(jié)省程序代碼、擴充語言能力的主要途徑。手段和節(jié)省程序代碼、擴充語言能力的主要途徑。v 過程(或函數(shù))在定義之后就可以在程序的過程(或函數(shù))在定義之后就可以在程序的其它地方調(diào)用它。調(diào)用與被調(diào)用者之間的信息交其它地方調(diào)用它。調(diào)用與被調(diào)用者之間的信息交流可以通過全局量或由參數(shù)傳遞來實現(xiàn)。流可以通過全局量或由參數(shù)傳遞來實現(xiàn)。v參數(shù):參數(shù):v形式參
34、數(shù)(定義)形式參數(shù)(定義)v實在參數(shù)(調(diào)用)實在參數(shù)(調(diào)用)程序設(shè)計語言中參數(shù)傳遞的實現(xiàn) #include “stdio.h#include “stdio.h”int max(int x, intint max(int x, int y) /x y) /x和和y y稱為形式參數(shù),簡稱形參。稱為形式參數(shù),簡稱形參。 int int z; z; if (xy) z=x; if (xy) z=x; else z=y; else z=y; return(z return(z); ); void main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,
35、&a,&b scanf(“%d%d”,&a,&b); ); c=max(a,b c=max(a,b); /); /其中的其中的a a和和b b稱為實在參數(shù)稱為實在參數(shù) printf(“max=%dn”,cprintf(“max=%dn”,c); ); v2 2 參數(shù)傳遞參數(shù)傳遞v參數(shù)傳遞分類參數(shù)傳遞分類(1) (1) 傳地址傳地址 (2)(2)傳值傳值 (3) (3) 傳名字傳名字 (4)(4)傳結(jié)果傳結(jié)果 除以上四種參數(shù)傳遞方法之外,還有其他參數(shù)傳除以上四種參數(shù)傳遞方法之外,還有其他參數(shù)傳遞的方式。遞的方式。 (1)(1)傳地址傳地址 把實在參數(shù)的地址傳遞給相
36、應(yīng)的形式參數(shù)。把實在參數(shù)的地址傳遞給相應(yīng)的形式參數(shù)。 過程(或函數(shù))的每個形式參數(shù)都對應(yīng)一個相應(yīng)過程(或函數(shù))的每個形式參數(shù)都對應(yīng)一個相應(yīng)的內(nèi)存空間,稱為形式單元。形式單元用來存放的內(nèi)存空間,稱為形式單元。形式單元用來存放相應(yīng)的實在參數(shù)的地址。當(dāng)調(diào)用一個過程(或函相應(yīng)的實在參數(shù)的地址。當(dāng)調(diào)用一個過程(或函數(shù))時,調(diào)用段首先把數(shù))時,調(diào)用段首先把實在參數(shù)的地址實在參數(shù)的地址傳遞到一傳遞到一個個臨時設(shè)置的工作單元臨時設(shè)置的工作單元中。中。 當(dāng)程序轉(zhuǎn)入被調(diào)用段之后,被調(diào)用段再把臨時當(dāng)程序轉(zhuǎn)入被調(diào)用段之后,被調(diào)用段再把臨時設(shè)置的工作單元中的實參地址取進自己相應(yīng)的設(shè)置的工作單元中的實參地址取進自己相應(yīng)的
37、形形式單元式單元中,中,過程(或函數(shù))體對形式參數(shù)的任何過程(或函數(shù))體對形式參數(shù)的任何引用或賦值都被處理成為引用或賦值都被處理成為對形式單元的間接訪問對形式單元的間接訪問,形參的值發(fā)生變化,等價于與之對應(yīng)實參發(fā)生變形參的值發(fā)生變化,等價于與之對應(yīng)實參發(fā)生變化。化。 在調(diào)用語句執(zhí)行過程中完成下列操作:在調(diào)用語句執(zhí)行過程中完成下列操作: 把實參把實參x x和和y y的地址分別傳遞到已準(zhǔn)備好(由的地址分別傳遞到已準(zhǔn)備好(由編譯分配)的兩個單元(編譯分配)的兩個單元(t1 t1和和t2t2)中;)中; s:=t1 s:=t1 且且 r:= t2r:= t2,使形參得到對應(yīng)實參的地,使形參得到對應(yīng)實參
38、的地址;址; 將將s s所指向的單元的內(nèi)容(所指向的單元的內(nèi)容(x x)與)與r r所指向的單所指向的單元的內(nèi)容(元的內(nèi)容(y y)相加,完成表達式)相加,完成表達式s+rs+r的計算;的計算; 將表達式將表達式s+rs+r的運算結(jié)果送到的運算結(jié)果送到s s所指的內(nèi)存單所指的內(nèi)存單元(元(x x)中;)中; 返回主程序。返回主程序。 (2) (2)傳值傳值 把實在參數(shù)的值計算出來傳遞給相應(yīng)的形把實在參數(shù)的值計算出來傳遞給相應(yīng)的形式參數(shù)。式參數(shù)。 v 最簡單的參數(shù)傳遞方式,工作過程:最簡單的參數(shù)傳遞方式,工作過程:v調(diào)用段()調(diào)用段()把實在參數(shù)的值計算出來把實在參數(shù)的值計算出來, ,被調(diào)用被調(diào)
39、用段(函數(shù))段(函數(shù))能能取取到。到。v 被調(diào)用段被調(diào)用段(函數(shù))(函數(shù))開始工作時,首先把這些開始工作時,首先把這些值抄進自己的形式單元,然后跟使用值抄進自己的形式單元,然后跟使用局部量局部量一樣使用這些形式單元。一樣使用這些形式單元。v在上面關(guān)于傳地址的例子中,如果把過程add的首部說明改為:vprocedure add( s: integer; r: integer);program example(outputprogram example(output); ); var varx,y:integerx,y:integer; ;procedure add(s: integer; var
40、procedure add(s: integer; var r: integer); r: integer); begin begins:=s+rs:=s+r; ; end; end; begin beginx:=0;x:=0;y:=2;y:=2;add(xadd(x, y);, y);writeln(xwriteln(x=,x)=,x) end. end. 傳值方式參數(shù)傳遞傳值方式參數(shù)傳遞 , ,被調(diào)用段無法改變實參的值被調(diào)用段無法改變實參的值 . .(3) (3) 傳名字傳名字vALGOL語言使用,傳名字參數(shù)的意義:v過程調(diào)用相當(dāng)于把被調(diào)用段的過程體抄到調(diào)用出現(xiàn)的地方,但把其中任一出現(xiàn)的形
41、參都替換成相應(yīng)的實參(文字替換)。v替換時發(fā)現(xiàn)過程體中的局部名和實參中的名字不能重名 。例如,下面的ALGOL過程:procedure swap(M,N);integer M,N;begininteger L; L:=M; M:=N; N:=L;end;過程調(diào)用swap(K(I),K(J)采用傳名方式進行參數(shù)傳遞,相當(dāng)于執(zhí)行了下面的語句: L:= K(I);K(I):= K(J); K(J):=L; (4) (4)傳結(jié)果傳結(jié)果 每個形參(函數(shù)頭)對應(yīng)有每個形參(函數(shù)頭)對應(yīng)有兩個兩個單元單元,第一個存放,第一個存放實參的地址實參的地址,第二個存,第二個存放放實參的值實參的值。 過程體中對形參的
42、任何引用都是對它的過程體中對形參的任何引用都是對它的第第二個單元的直接訪問二個單元的直接訪問。返回前把第二個單。返回前把第二個單元的內(nèi)容放到第一個單元所指的實參單元元的內(nèi)容放到第一個單元所指的實參單元中。中。1.2 編譯過程概述v編譯器內(nèi)部包括了許多步驟稱為編譯器內(nèi)部包括了許多步驟稱為階段階段,它們執(zhí)行不同的它們執(zhí)行不同的邏輯操作邏輯操作。v將這些階段設(shè)想為編譯器中一個個單獨將這些階段設(shè)想為編譯器中一個個單獨的片斷是很有用的,盡管在應(yīng)用中它們的片斷是很有用的,盡管在應(yīng)用中它們是經(jīng)常組合在一起的,但它們的代碼是是經(jīng)常組合在一起的,但它們的代碼是單獨來編寫的。單獨來編寫的。 將編譯過程劃分成將編譯
43、過程劃分成詞法分析、語法分析、詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化和目語義分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼標(biāo)代碼生成六個階段。生成六個階段。 事實上某些階段可以組合在一起。事實上某些階段可以組合在一起。 另外還有兩個重要的工作:另外還有兩個重要的工作:表格管理和錯表格管理和錯誤處理誤處理,它們與編譯各個階段都有聯(lián)系。,它們與編譯各個階段都有聯(lián)系。詞法分析詞法分析語法分析語法分析語義分析語義分析目標(biāo)代碼生成目標(biāo)代碼生成中間代碼生成中間代碼生成代碼優(yōu)化代碼優(yōu)化目標(biāo)程序目標(biāo)程序源程序源程序出出 錯錯 處處 理理表表 格格 管管 理理英譯與編譯的比較1. 1.識別出句子中的單字識
44、別出句子中的單字- -詞法分析詞法分析2.2.分析句子的語法結(jié)構(gòu)分析句子的語法結(jié)構(gòu)- -語法分析語法分析3.3.初步翻譯句子的含意初步翻譯句子的含意- -語義分析和中間代碼語義分析和中間代碼生成生成4.4.譯文修飾譯文修飾- -優(yōu)化優(yōu)化5.5.寫出最后譯文寫出最后譯文- -目標(biāo)代碼生成目標(biāo)代碼生成1 1 詞法分析詞法分析 詞法分析階段是編譯過程的第一個階段。詞法分析階段是編譯過程的第一個階段。 單詞單詞是指邏輯上緊密相連的一組字符,這些字符是指邏輯上緊密相連的一組字符,這些字符具有集體含義具有集體含義. .v比如比如標(biāo)識符標(biāo)識符是由字母字符開頭,后跟字母、數(shù)字字是由字母字符開頭,后跟字母、數(shù)字
45、字符的字符序列組成的一種單詞符的字符序列組成的一種單詞; ;v保留字保留字(也稱關(guān)鍵詞或基本字)是一種單詞(也稱關(guān)鍵詞或基本字)是一種單詞; ;v此外還有此外還有算符、常數(shù)和界符算符、常數(shù)和界符(標(biāo)點符號、左右括號(標(biāo)點符號、左右括號等)等等。等)等等。 輸入:源程序輸入:源程序輸出:標(biāo)準(zhǔn)單詞輸出:標(biāo)準(zhǔn)單詞任務(wù):從左到右一個字符一個字符的讀入源程任務(wù):從左到右一個字符一個字符的讀入源程序,對構(gòu)成源程序的字符串進行掃描和分解,序,對構(gòu)成源程序的字符串進行掃描和分解,從而識別出一個個單詞(也稱單詞符號)。從而識別出一個個單詞(也稱單詞符號)。方法:狀態(tài)圖;方法:狀態(tài)圖;DFADFA;NFANFA
46、詞法分析程序詞法分析程序示例示例FOR K := 1 TO 100FOR K := 1 TO 100 M := I + 10 M := I + 10 * * K K N := J + 10 N := J + 10 * * K KNEXT KNEXT KTOTONEXTNEXTFORFOR K KN NM MI IJ JK KK KK K:=:=100100:=:=:=:=1 110101010+ +* * *+ +保留字保留字標(biāo)識符標(biāo)識符分界符分界符運算符運算符常數(shù)常數(shù)C源程序片斷: int a; a = a + 2;詞法分析后可能返回:單詞類型單詞類型 單詞值單詞值保留字 int標(biāo)識符(變量
47、名) a界符 ;標(biāo)識符(變量名) a算符(賦值) =標(biāo)識符(變量名) a 算符(加) +整數(shù) 2界符 ;有關(guān)術(shù)語v詞法分析(lexical analysis or scanning) -The stream of characters making up a source program is read from left to right and grouped into tokens, which are sequences of characters that have a collective meaning.v單詞-tokenv保留字-reserved wordv標(biāo)識符 -ident
48、ifier(user-defined name)2 2 語法分析語法分析 在編譯程序的實際實現(xiàn)中語法分析和語義處在編譯程序的實際實現(xiàn)中語法分析和語義處理常常是組合在一起的。稱為語法制導(dǎo)翻譯。理常常是組合在一起的。稱為語法制導(dǎo)翻譯。 輸入:標(biāo)準(zhǔn)單詞輸入:標(biāo)準(zhǔn)單詞輸出:各類語法短語輸出:各類語法短語任務(wù):在詞法分析的基礎(chǔ)上將單詞序列任務(wù):在詞法分析的基礎(chǔ)上將單詞序列分解成分解成各各類語法單位,如類語法單位,如“表達式表達式”、 “ “語句語句”、“程程序序”等等。等等。 方法:遞歸子程序法、方法:遞歸子程序法、LRLR分析法、優(yōu)先分析法。分析法、優(yōu)先分析法。v語法分析所依據(jù)的是語言的語法規(guī)則語言的
49、語法規(guī)則,即描述程序結(jié)構(gòu)的規(guī)則。通過語法分析確定源程序是否構(gòu)成一個語法上正確語法上正確的程序。v程序的結(jié)構(gòu)通常是用遞歸規(guī)則遞歸規(guī)則表示的,例如我們可以用下面的規(guī)則來定義表達式表達式:v(1)任何標(biāo)識符是表達式;v(2)任何常數(shù)(整常數(shù)、實常數(shù))是表達式;v(3)若e1和e2都是表達式,那么,e1+e2 ,e1*e2 ,(e1)也都是表達式。 語法分析規(guī)則規(guī)則 := “:=”“:=” := “+” := “*” := “(”“)” := := := 賦值語句標(biāo)識符表達式表達式+表達式表達式標(biāo)識符整數(shù)標(biāo)識符:=表達式*賦值語句的樹形結(jié)構(gòu)語句id1:= id2 + id3* 10的語法樹v類似地,語
50、句也可以遞歸定義,如:(1)標(biāo)識符 := 表達式 是語句(2)while 表達式 do 語句 (3)if(表達式then 語句 else 語句 都是語句。示例示例TOTONEXTNEXTFORFORK KN NM MI IJ JK KK KK K:=:=100100:=:=:=:=1 110101010+ +* * *+ +變量、常數(shù)及其運算結(jié)果均是表達式變量、常數(shù)及其運算結(jié)果均是表達式表達式表達式表達式表達式表達式表達式表達式表達式表達式表達式表達式表達式賦值句的形式為賦值句的形式為“變量:表達式變量:表達式”賦值句賦值句賦值句賦值句多個賦值句可構(gòu)成語句塊多個賦值句可構(gòu)成語句塊語句塊語句塊表
51、達式可作為循環(huán)的初值和終值表達式可作為循環(huán)的初值和終值初值初值終值終值簡單數(shù)值變量可作為循環(huán)的控制變量簡單數(shù)值變量可作為循環(huán)的控制變量控制變量控制變量控制變量控制變量此時可以看出上述結(jié)果符合循環(huán)語句此時可以看出上述結(jié)果符合循環(huán)語句的語法定義,故語法分析成功完成的語法定義,故語法分析成功完成術(shù)語術(shù)語v語法分析語法分析( (syntax analysissyntax analysis or or parsing parsing)( )(剖析剖析, ,分解)分解) The purpose of syntax analysis is to determine the The purpose of sy
52、ntax analysis is to determine the source programs phrase structure. This process is source programs phrase structure. This process is also called also called parsingparsing. . The source program is parsed to check whether it The source program is parsed to check whether it conforms to the source lan
53、guages syntax, and to conforms to the source languages syntax, and to construct a suitable representation of its phrase construct a suitable representation of its phrase structure.structure.語法樹語法樹( (推導(dǎo)樹推導(dǎo)樹)( )(parse treeparse tree or or derivation treederivation tree) )3 3 語義分析語義分析語義審查語義審查( (靜態(tài)語義靜態(tài)語
54、義) )v按照語法樹的層次關(guān)系和先后次序,逐個語句按照語法樹的層次關(guān)系和先后次序,逐個語句地進行語義處理。地進行語義處理。v主要任務(wù):主要任務(wù): 進行類型審查,審查每個算符是否進行類型審查,審查每個算符是否符合語言規(guī)范,不符合時應(yīng)報告錯誤。符合語言規(guī)范,不符合時應(yīng)報告錯誤。類型匹配類型匹配類型轉(zhuǎn)換類型轉(zhuǎn)換例:Program p(); Var rate:real; procedure initial; position := initial + rate * 60 /* error */ /* error */ /* warning */;v語義分析是在語法分析程序確定出語法單位后,審語義分析是
55、在語法分析程序確定出語法單位后,審查有無查有無語義錯誤語義錯誤,并為代碼生成階段收集類型信息。,并為代碼生成階段收集類型信息。v例如進行例如進行類型檢查類型檢查,檢查每個算符是否具有語言規(guī),檢查每個算符是否具有語言規(guī)范允許的運算對象,當(dāng)不符合語言規(guī)范時,編譯程范允許的運算對象,當(dāng)不符合語言規(guī)范時,編譯程序應(yīng)報告錯誤。序應(yīng)報告錯誤。v再如,有的編譯程序不允許實數(shù)作為數(shù)組下標(biāo)。再如,有的編譯程序不允許實數(shù)作為數(shù)組下標(biāo)。v又如,某語言規(guī)定可進行強制類型轉(zhuǎn)換,當(dāng)二目運又如,某語言規(guī)定可進行強制類型轉(zhuǎn)換,當(dāng)二目運算施于一整型數(shù)和一實型數(shù)時,編譯程序應(yīng)該將整算施于一整型數(shù)和一實型數(shù)時,編譯程序應(yīng)該將整型數(shù)
56、轉(zhuǎn)換成實型數(shù)而不能認(rèn)為源程序發(fā)生類型錯誤。型數(shù)轉(zhuǎn)換成實型數(shù)而不能認(rèn)為源程序發(fā)生類型錯誤。例: Program p(); Var rate:real; Var initial :real; Var position :real ; position := initial + rate * 60 60為整數(shù),其余量為實數(shù)。語義分析插入語義處理結(jié)點的語法樹60:=+*Id1 positionId2 initialId3 rateinttoreal術(shù)語v語義分析(semantic analysis) The parsed program is further analyzed to determine
57、 whether it conforms to the source languages contextual constraints: scope rules, type rulese.g. To relate each applied occurrence of an identifier in the source program to the corresponding declaration. 4 4 中間代碼生成中間代碼生成 中間語言或稱中間代碼,是一種結(jié)構(gòu)簡單、中間語言或稱中間代碼,是一種結(jié)構(gòu)簡單、含義明確的記號系統(tǒng)。是編譯程序使用的內(nèi)含義明確的記號系統(tǒng)。是編譯程序使用的內(nèi)部表示
58、形式。部表示形式。輸入:句子輸入:句子輸出:中間代碼序列輸出:中間代碼序列任務(wù):將各類語法單位,如任務(wù):將各類語法單位,如“表達式表達式”、 “ “語語句句”、“程序程序”等翻譯為中間代碼序列。等翻譯為中間代碼序列。 中間代碼的形式:常見的有四元式、三元式和中間代碼的形式:常見的有四元式、三元式和逆波蘭式等逆波蘭式等 方法:語義子程序;方法:語義子程序;DAGDAG圖,語法制導(dǎo)翻譯圖,語法制導(dǎo)翻譯v四元式的形式為:四元式的形式為:v(算符,運算對象(算符,運算對象1 1,運算對象,運算對象2 2,結(jié)果);,結(jié)果);v對于源程序?qū)τ谠闯绦騭um:= first + count sum:= fir
59、st + count * * 10 10可以生成如下可以生成如下所示的四元式:所示的四元式:(1 1) (inttoreal(inttoreal , 10 , , 10 , , t1), t1)(2 2) ( ( * * , id3 , t1 , t2 ) , id3 , t1 , t2 ) (3 3) ( + , id2 , t2 , t3 )( + , id2 , t2 , t3 )(4 4) ( := , t3 , ( := , t3 , , id1 ) , id1 )vid1id1、id2id2、id3id3分別表示分別表示sumsum、firstfirst、countcount的機器
60、內(nèi)的機器內(nèi)部表示;部表示;vt1 t1、t2t2、t3t3是臨時生成的名字,表示中間運算結(jié)果。是臨時生成的名字,表示中間運算結(jié)果。t1 t1,t2t2,t3t3是是臨時變量臨時變量id2id2id1id1id3id3中間代碼生成(intermediate code generation) This is where the intermediate representation of the source program is created. We want this representation to be easy to generate, and easy to translate into the target program. Th
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提高英語水平的試題及答案
- 家具行業(yè)的風(fēng)險管理策略分析試題及答案
- 大學(xué)化學(xué)2025年教學(xué)指導(dǎo)試題及答案
- 新能源汽車的用戶需求與技術(shù)滿足度研究試題及答案
- 小學(xué)教師反思與提升的試題及答案
- 農(nóng)業(yè)電商信用體系建設(shè)試題及答案
- 提高時間管理能力的商務(wù)英語試題及答案
- 家具行業(yè)趨勢與消費者行為試題及答案
- 傳統(tǒng)元素與現(xiàn)代設(shè)計融合的研究試題及答案
- 山東理科數(shù)學(xué)試題及答案
- 股東出資協(xié)議書(公司未成立之前注冊股期股回購)
- 21 青蛙賣泥塘(一等獎創(chuàng)新教案)
- 上海市高中學(xué)業(yè)水平考試之物理實驗操作考試(完整版)
- 機動車維修竣工出廠合格證樣式
- GB/T 36447-2018多媒體教學(xué)環(huán)境設(shè)計要求
- GB/T 14832-2008標(biāo)準(zhǔn)彈性體材料與液壓液體的相容性試驗
- 內(nèi)鏡下逆行闌尾炎治療術(shù)
- SJG 82-2020 政府投資學(xué)校建筑室內(nèi)裝修材料空氣污染控制標(biāo)準(zhǔn)-高清現(xiàn)行
- 《脂蛋白(a)與心血管疾病風(fēng)險關(guān)系及臨床管理的專家科學(xué)建議》(2021)要點匯總
- 2004年武漢房地產(chǎn)市場情況分析報告(共23頁)
- 腫瘤化學(xué)治療
評論
0/150
提交評論