版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、編譯原理課程信息n教學目的與要求:教學目的與要求: 編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分之一。本課程重點講述編譯程序的設(shè)計原理和常用實現(xiàn)技術(shù)。通過課程的學習和實驗的完成,應(yīng)該清楚的理解一個編譯程序是如何工作的;如果在以后遇到了任何一個程序設(shè)計語言,應(yīng)該知道如何實現(xiàn)這個語言的多數(shù)機制;應(yīng)具有一定的使用編譯構(gòu)造工具開發(fā)編譯程序的經(jīng)驗;會將所學的常用技術(shù)和算法應(yīng)用于類似的軟件的設(shè)計和實現(xiàn)中。 教材及主要參考書n教材:編譯原理(第2版),張素琴、呂映芝、蔣維杜、戴桂蘭,清華大學出版社 2004n參考書:Compilers: Principles, Technigues, and Tools Alfr
2、ed V.Aho, Ravi Sethi, Jeffrey D.Ullman, Addison-Wesley,1986. 影印版:人民郵電出版社,2001n參考書:程序設(shè)計語言 編譯原理(第3版),陳火旺、劉春林等,國防工業(yè)出版社 2000n等等教學內(nèi)容1 編譯程序概述 編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分之一.編譯程序一般由詞法分析程序,語法分析程序,語義分析程序,中間代碼生成程序,目標代碼生成程序,代碼優(yōu)化程序,符號表管理程序和錯誤處理程序等成分構(gòu)成。本章概要介紹編譯成分的主要功能以及編譯階段的邏輯關(guān)系。2 PL/0 編譯程序剖析 給出一個簡單的類Pascal語言,其編譯程序用高級語言(
3、C和Pascal)實現(xiàn)。通過剖析該高級語言程序以理解各編譯成分的功能及手工實現(xiàn)方法。教學內(nèi)容3 高級語言的認識 要學習和構(gòu)造編譯程序,理解和定義程序設(shè)計語言是必不可少的。每個程序設(shè)計語言都有一定的規(guī)則用以規(guī)定合適程序的語法結(jié)構(gòu),也需要有對一個程序的含義的描述。上下文無關(guān)文法給出程序設(shè)計語言的精確的,易于理解的語法說明。尚沒有公認的形式系統(tǒng)描述程序含義,但也有流行的描述語義規(guī)則的方法屬性文法。4 詞法分析程序的自動構(gòu)造 詞法分析程序是編譯程序的一個構(gòu)成部分,它的主要任務(wù)是掃描源程序,按構(gòu)詞規(guī)則識別單詞,并報告發(fā)現(xiàn)的詞法錯誤。正則表達式和有窮狀態(tài)自動機分別作為單詞的描述工具和識別機制,成為詞法分析
4、程序的自動構(gòu)造原理,學習Lex(Flex)工具的使用方法。教學內(nèi)容5 語法分析程序的構(gòu)造n自頂向下的語法分析??梢钥醋魇菫橐粋€輸入串尋找一個最左推導(dǎo)的過程,也等價于從根開始,按前序生成結(jié)點,為輸入串構(gòu)造分析樹的過程。討論一種有效的無回溯的自頂向下分析程序,這種分析程序稱為預(yù)測分析程序。介紹對于一個文法類:LL(1)文法, 如何自動的構(gòu)造預(yù)測分析程序。 n自底向上(自下而上)語法分析方法,也稱移進-歸約分析法。它的實現(xiàn)思想是對輸入符號串自左向右進行掃描,并將輸入符逐個移入一個后進先出棧中,邊移進邊分析,一旦棧頂符號串形成可歸約串,就用相應(yīng)非終結(jié)符代替可歸約串,這稱為一步歸約,重復(fù)這一過程,直到歸
5、約到棧中只剩文法的開始符號時,則為分析成功,并確認輸入串是文法的句子。本章介紹LR分析法,分析過程中歸約的是當前句型的句柄,稱為規(guī)范歸約。重點講解LR類(LR(0)、SLR(1)、LALR(1)、LR(1)文法的分析表的構(gòu)造原理。教學內(nèi)容6 語義分析和中間代碼生成 在詞法分析和語法分析之后,編譯程序下一個邏輯階段的任務(wù)是語義分析和生成中間代碼。引入屬性文法和語法制導(dǎo)的翻譯的概念,介紹中間代碼的形式,針對一些語法成分討論相應(yīng)語義處理工作的描述。7 符號表 介紹符號表的一般組織和使用方法,討論分程序結(jié)構(gòu)語言的名字作用域分析及符號表設(shè)計方案。教學內(nèi)容 8 運行時的存儲組織和管理 編譯的最終目標是生成
6、目標程序。在目標代碼生成前,編譯程序必須對目標程序運行時的數(shù)據(jù)空間進行組織和安排. 介紹目標程序運行時的數(shù)據(jù)空間的存儲分配策略,說明程序設(shè)計語言本身關(guān)于名稱的作用域和生存期的規(guī)則與存儲分配策略的關(guān)系,重點討論棧式動態(tài)存儲方案.教學內(nèi)容9 代碼優(yōu)化和目標代碼生成 代碼優(yōu)化是對代碼作一些等價變換,以使得最后生成的目標代碼更為高效。介紹優(yōu)化技術(shù),優(yōu)化分類以及優(yōu)化工作的基礎(chǔ)控制流和數(shù)據(jù)流分析問題。 編譯的最后一個邏輯階段是目標代碼生成。目標代碼生成程序的設(shè)計細節(jié)要考慮目標語言和操作系統(tǒng)的特點。討論目標代碼生成程序設(shè)計的一般問題,包括指令選擇,寄存器分配和計算順序選擇。第1章 概述1.1 什么是編譯程序
7、1.2 程序設(shè)計語言的實現(xiàn)1.3 處理源程序的軟件工具1.4 編譯技術(shù)的發(fā)展 1.1什么是編譯程序(compiler) 編譯程序是現(xiàn)代計算機系統(tǒng)的基本組成部分. 從功能上看,一個編譯程序就是一個語言翻譯程序,它把一種語言(稱作源語言)書寫的程序翻譯成另一種語言(稱作目標語言)的等價的程序. 什么是編譯程序什么是編譯程序功能術(shù)語術(shù)語編譯程序的源語言(源程序)編譯程序的目標語言(目標程序)編譯程序的實現(xiàn)語言S OI 高級語言書寫的程序 編譯程序低級語言程序S TI 什么是編譯程序n分類 軟件 系統(tǒng)軟件 語言處理系統(tǒng)操作系統(tǒng)編譯系統(tǒng)裸機分類n軟件:計算機系統(tǒng)中的程序及其文檔n系統(tǒng)軟件:居于計算機系統(tǒng)
8、中最靠近硬件的一層,其他軟件一般都通過系統(tǒng)軟件發(fā)揮作用。他和具體的應(yīng)用領(lǐng)域無關(guān),如編譯系統(tǒng)和操作系統(tǒng)等。n語言處理系統(tǒng):把軟件語言書寫的各種程序處理成可在計算機上執(zhí)行的程序。n軟件語言:用于書寫軟件的語言。它主要包括需求定義語言,功能性語言,設(shè)計性語言,程序設(shè)計語言以及文檔語言。什么是編譯程序n語言轉(zhuǎn)(變)換系統(tǒng)C+編譯器C+CJavaBytecodeJava編譯器術(shù)語n編譯程序(compiler)n編譯程序的源語言(源程序) (source language)(source program)n編譯程序的目標語言(目標程序) (object or target language)(object
9、 or target program) n編譯程序的實現(xiàn)語言(implementation language)n語言處理程序(language processor)n語言轉(zhuǎn)(變)換(language transformation)編譯邏輯過程n詞法分析n語法分析n語義分析n中間代碼生成n代碼優(yōu)化n目標代碼生成詞法分析第一步識別單詞 英文句子由單詞構(gòu)成 This line is a longer sentence.(字母組成的有集體含義的最小成分)n 句子開頭的單詞第一個字母要大寫n 空格是單詞分隔符n 句點是句子結(jié)尾 中文分詞?漢語編程?語言的發(fā)展?無雞鴨也可無魚肉也可惟青菜豆腐不可少不得學費
10、無雞鴨也可無魚肉也可惟青菜豆腐不可少不得學費 詞法分析從左至右掃描字符流的源程序、分解構(gòu)成源程序的字符串,識別出(拼)一個個的單詞(符號) 單詞符號是語言中具有獨立意義的最基本結(jié)構(gòu)。多數(shù)程序語言中,單詞符號一般包括 各類型的常數(shù)、保留字、標識符、運算符、界符等等。例如例如 double f = sqrt(-1);詞法分析double f = sqrt(-1); T D O U B L E ( “ d o u b l e ” )TIDENT (“f”)TOP (“=“)TIDENT (“sqrt”) TLPAREN (“(“) TOP (“-”)T I N T C O N S T A N T (
11、 “ 1 ” )TRPAREN (“)”)TSEP (“;”)詞法分析n詞法分析(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.n單詞-tokenn保留字-reserved wordn標識符 -identifier(user-defined na
12、me)例n程序文本If x = y then z := 1 else z := 2;經(jīng)詞法分析,變成一個個單詞nif, x, =, y, then, z, n:=, 1, else, z, :=, 2, ;n語言的單詞符號是由詞法規(guī)則所確定的。詞法規(guī)則規(guī)定了字母表中哪樣的字符串是一個單詞符號。詞法分析position := initial + rate * 60;單詞類型單詞類型單詞值單詞值 標識符1(id1) position 算符(賦值) := 標識符2(id2) initial 算符(加) + 標識符3(id3) rate 算符(乘) * 整數(shù) 60 分號 ;語法分析 Syntax An
13、alysis功能:層次分析.依據(jù)依據(jù)源程序的語法規(guī)則語法規(guī)則把源程序的單詞序列組成語法短語(表示成語法樹).n也稱為 “parsing”n使用 context-free grammarsn結(jié)構(gòu)上的合法性Structural validation(可生成語法樹或推導(dǎo)Creates parse tree or derivation)This line is a longer sentence分析程序成分 double f = sqrt(-1); “sqrt(-1)”的推導(dǎo)Expression FuncCall TIDENT TLPAREN Expression TRPAREN TIDENT TLP
14、AREN UnaryExpression TRPAREN TIDENT TLPAREN TOP Expression TRPAREN TIDENT TLPAREN TOP TINTCONSTANT TRPAREN規(guī)則規(guī)則Expression - UnaryExpressionExpression - FuncCallExpression - TINTCONSTANTUnaryExpression - TOP ExpressionFuncCall - TIDENT TLPAREN Expression TRPARENdouble f = sqrt(-1);的的Parsing ?n語言的語法規(guī)則規(guī)
15、定了如何從單詞符號形成更大的結(jié)構(gòu)(即語法單位) 語法分析n又例:position := initial + rate * 60 ;(Pascal)規(guī)則)規(guī)則 :=“:=” :=“+” :=“*” :=“(”“)” := := := 賦值語句標識符表達式表達式+表達式表達式標識符整數(shù)標識符:=表達式*id1:=id2+id3*N:=+N 60*id1 Positionid2 initialid3 rate語法分析n語法分析(syntax analysis or parsing)The purpose of syntax analysis is to determine the source pr
16、ograms phrase structure.This process is also called parsing.The source program is parsed to check whether it conforms to the source languages syntax,and to construct a suitable representation of its phrase structure.n語法樹(推導(dǎo)樹)(parse tree or derivation tree)語義分析n 句子的結(jié)構(gòu)理解了,撲捉它的“含義” 如:杰克說杰瑞把他的作業(yè)落在了家里。 “
17、他的”是誰的? 又:杰克說杰克把他的作業(yè)落在了家里。 幾個杰克?語義分析n杰克把她的作業(yè)落在了家里。(杰克是男生)“杰克”和“她的”不一致。 “杰克”和“他的”才匹配程序設(shè)計語言靠嚴格的約束規(guī)則解決二義。 int jack=3; int jack=4; cout = n) j = 2 * i + 3;return aj;t1 = 2 * it2 = t1 + 1j = t2t3 = j nif t3 goto L0t4 = 2 * it5 = t4 + 3j = t5L0: t6 = ajreturn t6中間代碼(intermediate code) Intermediate code is
18、 a intermediate representation of the source program . We want this representation ( intermediate representation) to be easy to generate, and easy to translate into the target program. The representation can have a variety of forms, a common one is called three-address code or 4- tuple code.不同層次的中間代
19、碼源語言源語言(高級語言)(高級語言)中間代碼中間代碼(高級)(高級)中間代碼中間代碼(中級)(中級)中間代碼中間代碼(低級)(低級)float a1020;aij+2;t1 = ai, j+2t1 = j + 2t2 = i * 20t3 = t1 + t2t4 = 4 * t3t5 = addr at6 = t5 + t4t7 = *t6r1 = fp - 4r2 = r1 + 2r3 = fp - 8r4 = r3 * 20r5 = r4 + r2r6 = 4 * r5 r7 = fp 216f1 = r7 + r6代碼優(yōu)化Code Optimization應(yīng)用一些技術(shù)對代碼進行變換以使
20、得編譯產(chǎn)生的目標代碼高效。nExample(中間代碼一級)t1 = 2 * it2 = t1 + 1j = t2t3 = j nif t3 goto L0t4 = 2 * it5 = t4 + 3j = t5L0: t6 = ajreturn t6t1 = 2 * ij = t1 + 1t3 = j nif t3 goto L0 j = t1 + 3L0: t6 = ajreturn t6代碼優(yōu)化id1:= id2 + id3 * 60(1)(inttoreal60-t1)(2)( * id3t1t2)(3)( +id2t2t3)(4)( :=t3-id1) 變換變換 (1) ( *id360
21、.0t1) ( 2)( + id2 t1id1)目標代碼生成(*,id360.0t1)(+,id2t1id1)movid3,R2mul#60.0,R2movid2,R1addR2,R1movR1,id1編譯程序的工作編譯程序的工作n分析(analysis)和綜合(synthesis) 源程序的分析 線性分析 層次分析 語義分析 目標程序的綜合n編譯階段的劃分編譯階段的劃分前端(front end)和后端(back end) 編譯的前端 與源語言有關(guān)但與目標機無關(guān)的那些部分組成 編譯的后端 與目標機有關(guān)的那些部分組成n遍(趟)遍(趟)從頭到尾掃描源程序(各種形式)一遍遍(pass)編譯程序結(jié)構(gòu)(
22、components)n詞法分析程序n語法分析程序n語義分析程序n中間代碼生成程序n代碼優(yōu)化程序n目標代碼生成程序n符號表管理程序n出錯處理程序出錯處理程序語法分析程序語義分析程序目標代碼生成程序詞法分析程序中間代碼生成程序代碼優(yōu)化程序表格管理程序符號表n記錄源程序中使用的名字n收集每個名字的各種屬性信息 類型、作用域、分配存儲信息 name: I kind:常量 value:35 name:object kind:變量 type:實 level:2 add: dx符號表管理(登錄,查找)symbol table management出錯處理(error handling )檢查錯誤、報告出錯
23、信息、排錯、恢復(fù)編譯工作(error reporting and error recovery)早期的出錯管理(復(fù)雜、低效)1.2程序設(shè)計語言的實現(xiàn)有些語言基本通過解釋程序 Java的Bytecode有些環(huán)境同時提供編譯程序和解釋系統(tǒng) Lisp 主要的途徑有兩個:通過編譯程序和解釋程序 編譯程序低級語言程序高級語言程序高級語言程序 解釋程序計算結(jié)果編譯程序和解釋系統(tǒng)如對源程序: b := 2 ; a := b+2 ; 編譯程序編譯程序 write a ; 解釋程序解釋程序 直接將4的值輸出(顯示)(直接對源程序中的語句進行分析,執(zhí)行其隱含的操作。)Int 2St bLd badd 2St a生
24、成代碼編譯程序和解釋程序編譯程序是一個語言處理程序,它把一個高級語言程序翻譯成某個機器的匯編或二進制代碼程序, 這個二進制代碼程序在機器上運行以生成結(jié)果.因此通過編譯程序使得我們可以先準備好一個在該機器上運行的程序,然后這個程序便會以機器的速度運行.但是在不把整個程序全部都翻譯結(jié)束之后,這個程序是不能開始運行,也不能產(chǎn)生任何結(jié)果的.編譯和運行是兩個獨立分開的階段.但在一個交互環(huán)境中,不需要將這兩個階段分隔開,編譯就不如解釋的方法更方便. 另一種語言處理程序,解釋程序,它不需要在運行前先把源程序翻譯成目標代碼,也可以讓我們實現(xiàn)在某臺機器上運行程序并生成結(jié)果.解釋程序解釋程序n是這樣一個程序,它接
25、受某個語言的程序并立即運行這個源程序.它的工作模式是一個個的獲取,分析并執(zhí)行源程序語句,一旦第一個語句分析結(jié)束,源程序便開始運行并且生成結(jié)果, 它特別適合程序員交互方式的工作情況,即希望在獲取下一個語句之前了解每個語句的執(zhí)行結(jié)果,允許執(zhí)行時修改程序.n著名的解釋程序有Basic語言解釋程序 ,Lisp語言解釋程序,UNIX命令語言解釋程序(shell),數(shù)據(jù)庫查詢語言SQL 解釋程序以及bytecode解釋程序.高級語言解釋系統(tǒng)(interpreter)n功能 讓計算機執(zhí)行高級語言(basic,lisp,prolog)n與編譯程序的不同 1)不生成目標代碼 2)能支持交互環(huán)境 (同增量式編譯系
26、統(tǒng)) 源 程 序 初始數(shù)據(jù) 解釋程序計算結(jié)果編譯程序和解釋程序的存儲組織也有很大不同n編譯程序處理時,在源語言程序被編譯階段編譯階段,存儲區(qū)中要為源程序(中間形式)和目標代碼開辟空間,要存放編譯用的各種各樣表格,比如符號表.在目標代碼運行目標代碼運行階段,存儲區(qū)中主要是目標代碼和數(shù)據(jù),編譯所用的任何信息都不再需要.n解釋程序一般是把源程序一個語句一個語句的進行語法分析,轉(zhuǎn)換為一種內(nèi)部表示形式,存放在源程序區(qū),比如BASIC解釋程序,將LET和GOTO這樣的關(guān)鍵字表示為一個字節(jié)的操作碼,標識符用其在符號表的入口位置表示.因為解釋程序解釋程序允許在執(zhí)行用戶程序時修改用戶程序,這就要求源程序源程序,
27、符號表等內(nèi)容始終存放符號表等內(nèi)容始終存放在存儲區(qū)中在存儲區(qū)中,并且存放格式要設(shè)計的易于使用和修改并且存放格式要設(shè)計的易于使用和修改. 編譯階段和運行階段存儲結(jié)構(gòu) 編譯時 運行時 名字表目標代碼緩沖區(qū)編譯用源程序中間表示各種表格目標代碼區(qū)數(shù)據(jù)區(qū)源程序緩沖區(qū)解釋系統(tǒng)存儲結(jié)構(gòu)解釋系統(tǒng)源程序臨時工作單元名字表標號表緩沖區(qū)(輸入輸出)棧區(qū)語言處理過程語言處理過程C程序# include # include # define MAX_LINES 75Enum booleans (FALSE,TRUE);Main (int argc,char *argv*) n預(yù)處理器編譯器匯編器裝配連接編輯骨架程序 源程
28、序 目標匯編程序 可重定位機器代碼 絕對機器碼可重定位目標文件庫語言處理過程語言處理過程1.3 處理源程序的軟件工具處理源程序的軟件工具 (編譯技術(shù)的應(yīng)用)n結(jié)構(gòu)化編緝器n程序分析工具 靜態(tài)分析 動態(tài)分析 度量工具 結(jié)構(gòu)度量 模塊接口復(fù)雜度 c分析工具(source insight) n廣泛的語言領(lǐng)域 數(shù)據(jù)庫系統(tǒng)查詢(SQL) 腳本語言 置標語言(SGML.HTML.XML)1.3處理源程序的軟件工具處理源程序的軟件工具1.語言的結(jié)構(gòu)化編輯器語言的結(jié)構(gòu)化編輯器2.語言程序的調(diào)試工具語言程序的調(diào)試工具3.程序格式化工具程序格式化工具4.語言程序測試工具語言程序測試工具5.程序理解工具程序理解工具
29、6.高級語言之間的轉(zhuǎn)換工具高級語言之間的轉(zhuǎn)換工具1.語言的結(jié)構(gòu)化編輯器語言的結(jié)構(gòu)化編輯器 用戶可使用該編輯器在語言的語法制導(dǎo)下編制出所需的源程序。結(jié)構(gòu)化編輯器不僅具有通常的正文編輯器的正文編輯和修改功能,而且還能像編譯程序那樣對源程序正文進行分析。因此,結(jié)構(gòu)化編輯器能夠執(zhí)行一些對編制程序有用的附加的任務(wù)。例如,它能夠檢查用戶的輸入是否正確,能夠自動地提供關(guān)鍵字,當用戶敲入if后,編輯器立即顯示then并將這兩個關(guān)鍵字之間必須出現(xiàn)的條件留給用戶輸入,并能檢查begin或左括號與end或右括號是否相匹配等等。由于結(jié)構(gòu)化編輯器具有上述功能,既可保證編出的源程序無語法錯誤,并有統(tǒng)一的可讀性好的程序格式
30、,這無疑將會提高程序的開發(fā)效率和質(zhì)量。 商用產(chǎn)品很多如Turbo-Edit,Editplus和Ultraedit等等.很多集成開發(fā)環(huán)境中里也都包含這種類似的工具,如Jbuilder中就有JAVA程序的結(jié)構(gòu)化編輯器.2.語言程序的調(diào)試工具語言程序的調(diào)試工具 調(diào)試是軟件開發(fā)過程中一個重要環(huán)節(jié),結(jié)構(gòu)化編輯器只能解決語法錯誤的問題,而對一個已通過編譯的程序來說,需進一步了解的是程序執(zhí)行的結(jié)果與編程人員的意圖是否一致,程序的執(zhí)行是否實現(xiàn)預(yù)計的算法和功能。這種對算法的錯誤或程序沒能反映算法的功能等錯誤就需用調(diào)試器來協(xié)助解決。n有一種調(diào)試器允許用戶使用源程序正文和它的符號來調(diào)試,即一行一行的跟蹤程序,查看變
31、量和數(shù)據(jù)結(jié)構(gòu)的變化以進行調(diào)試工作.當然,這些符號的信息必須由編譯程序提供.調(diào)試器的實現(xiàn)可以有很多途徑.n其中一種是寫一個解釋器,以交互的方式翻譯和執(zhí)行每一行,它必須維護其所有的運行時的資源以保證在程序執(zhí)行期間很容易的查詢不同變量的當前值.n如果不想通過解釋程序允許編譯了的代碼調(diào)試,編譯程序必須在目標代碼(匯編)生成時同時生成特定的調(diào)試信息,比如,關(guān)聯(lián)標識符和它表示的地址的信息,用于無歧義的引用一個聲明了多次的標識符的信息等等.調(diào)試功能愈強,實現(xiàn)愈復(fù)雜,它涉及源程序的語法分析和語義處理技術(shù)。3.程序格式化工具程序格式化工具程序格式化工具分析源程序并以使程序結(jié)構(gòu)變得清晰可讀的形式打印出來。例如,注
32、釋可以以一種專門的字形出現(xiàn),且語句的嵌套層次結(jié)構(gòu)可以用縮排方式(齒形結(jié)構(gòu))表示出來。4.語言程序測試工具語言程序測試工具 語言程序的測試工具有兩種:靜態(tài)分析器和動態(tài)測試器。 靜態(tài)分析器靜態(tài)分析器是在不運行程序的情況下對源程序進行靜態(tài)地分析,以發(fā)現(xiàn)程序中潛在的錯誤或異常.它對源程序進行語法分析并制定相應(yīng)表格,檢查變量定值與引用的關(guān)系。如某變量未被賦值就被引用,或定值后未被引用,或多余的源代碼等一些編譯程序的語法分析發(fā)現(xiàn)不了的錯誤。 動態(tài)測試工具動態(tài)測試工具也是首先對源程序進行分析,在分析基礎(chǔ)上將用于記錄和顯示程序執(zhí)行軌跡的語句或函數(shù)插入到源程序的適當位置,并用測試用例記錄和顯示程序運行時的實際路
33、徑,將運行結(jié)果與期望的結(jié)果進行比較分析,幫助編程人員查找問題。5.程序理解工具程序理解工具對程序進行分析,確定模塊間的調(diào)用關(guān)系,記錄程序數(shù)據(jù)的靜態(tài)屬性和結(jié)構(gòu)屬性,并畫出控制流程圖,幫助用戶理解程序。6. 高級語言之間的轉(zhuǎn)換工具高級語言之間的轉(zhuǎn)換工具 由于計算機硬件的不斷更新?lián)Q代,更新更好的程序設(shè)計語言的推出為提高計算機的使用效率提供了良好條件,然而一些已有的非常成熟的軟件如何在新機器新語言情況下使用呢?為了減少重新編制程序所耗費的人力和時間,就要解決如何把一種高級語言轉(zhuǎn)換成另一種高級語言,乃至匯編語言轉(zhuǎn)換成高級語言的問題。這種轉(zhuǎn)換工作要對被轉(zhuǎn)換的語言進行詞法和語法分析,只不過生成的目標語言是另
34、一種高級語言而已。這與實現(xiàn)一個完整的編譯程序相比工作量要少些。 比如:C,PASCAL,F(xiàn)ORTRAN到Ada的翻譯器 IBM 4700匯編到C的轉(zhuǎn)換器 COBOL 到Java 的編譯器 Human-orientedlanguageComputer-orientedlanguage計算模式,語言范式語言應(yīng)用領(lǐng)域編譯程序萬諾曼機體系結(jié)構(gòu)并行體系結(jié)構(gòu)嵌入系統(tǒng)1.4 編譯技術(shù)的發(fā)展S OI高級程序語言v不同的應(yīng)用側(cè)重:數(shù)值計算- Fortran 系統(tǒng)程序設(shè)計-C事務(wù)處理-obol VLSI設(shè)計-VHDL人工智能-rolog 其它-大型嵌入式實時處理-da 符號處理-nobolv語言范型:強制式語言-
35、C,Fortran,Pascal應(yīng)用式(函數(shù)式)語言-ML,Lisp基于規(guī)則(邏輯)的語言-Prolog,Yacc面向?qū)ο笳Z言-Ada,C+,Java強制式語言(Imperative Language)也稱過程式語言。 其特點是命令驅(qū)動,面向語句,一個強制式語言程序由一系列的語句組成,每個語句的執(zhí)行引起若干存儲單元中的值的改變,這種語言的語法形式通常具有如下形式; 語句1;語句2;語句3;語言執(zhí)行的解釋與萬諾曼機的體系結(jié)構(gòu)對應(yīng):改變機器狀態(tài)(內(nèi)存,各種寄存器和外存的內(nèi)容) 應(yīng)用式(函數(shù)式):應(yīng)用式語言(Applicative Language)更注重程序所表示的功能,而不是一個語句接一個語句地
36、執(zhí)行。程序的開發(fā)過程是從前面已有的函數(shù)出發(fā)構(gòu)造出更復(fù)雜的函數(shù),對初始數(shù)據(jù)集進行操作直至最終的函數(shù)可以用于從初始數(shù)據(jù)計算出最終的結(jié)果。程序執(zhí)行: 執(zhí)行一個個函數(shù)施用在數(shù)據(jù)上的變換最終得到的結(jié)果Example: 解決八皇后問題的一段Haskell98程序:queen 0 = queen (n+1) = x :y | y - queen n, x - 1.8, safe 1 x ysafe n x = Truesafe n x (z :y) = and x/=z, x/=z +n, x/=z -n, safe (n+1) x y-test = queen 8len = length test -92 right answer! 基于規(guī)則的語言( Rule-based Language)這類語言的語法形式
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給水課程設(shè)計流程
- 物理有課程設(shè)計
- 2024至2030年海綿吸水刷項目投資價值分析報告
- 2024至2030年橫置式混色機項目投資價值分析報告
- 2024年相架項目可行性研究報告
- 2025年醫(yī)用磁共振成像設(shè)備項目合作計劃書
- 空調(diào)課程設(shè)計小結(jié)
- 2025年納他霉素食品防腐劑項目發(fā)展計劃
- 2025上海市建筑安全員《C證》考試題庫
- 大班燈籠課程設(shè)計
- 【9歷期末】安徽省淮北市2023-2024學年九年級上學期期末歷史試題
- 2024年度物流園區(qū)運營承包合同范本3篇
- 期末綜合試卷(試題)2024-2025學年人教版數(shù)學五年級上冊(含答案)
- 投資控股合同
- 2024-2025學年上學期武漢小學語文六年級期末模擬試卷
- 2023-2024學年貴州省貴陽外國語實驗中學八年級(上)期末數(shù)學試卷(含答案)
- 2025版國家開放大學專本科《計算機應(yīng)用基礎(chǔ)》一平臺在線形考任務(wù) (形考作業(yè)一至三)試題及答案
- 古代漢語專題-003-國開機考復(fù)習資料
- 《爭做文明班級》課件
- 遼寧省大連市沙河口區(qū)2022-2023學年八年級上學期物理期末試卷(含答案)
- 【MOOC】信號與系統(tǒng)-西北工業(yè)大學 中國大學慕課MOOC答案
評論
0/150
提交評論