編譯原理知識點(diǎn)匯集_第1頁
編譯原理知識點(diǎn)匯集_第2頁
編譯原理知識點(diǎn)匯集_第3頁
編譯原理知識點(diǎn)匯集_第4頁
編譯原理知識點(diǎn)匯集_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第1章:1、名詞:解釋器/解釋程序 interpreter;編譯器/編譯程序 compiler;翻譯器/翻譯程序 translator。三者的區(qū)別與聯(lián)系。虛擬機(jī)(如JAVA虛擬機(jī)JVM、Tiny語言虛擬機(jī))是哪種程序?(1)解釋器(也稱為解析程序)則是只在執(zhí)行程序時(shí),才一條一條的解釋成機(jī)器語言給計(jì)算機(jī)來執(zhí)行,所以運(yùn)行速度是不如編譯后的程序運(yùn)行的快的.(2)編譯器(也稱為編譯程序)是把源程序的每一條語句都編譯成機(jī)器語言,并保存成二進(jìn)制文件,這樣運(yùn)行時(shí)計(jì)算機(jī)可以直接以機(jī)器語言來運(yùn)行此程序,速度很快; (3)翻譯器(也稱為翻譯程序)是一種系統(tǒng)程序,它將計(jì)算機(jī)編程語言編寫的程序翻譯成另外一種

2、計(jì)算機(jī)語言的一般來說等價(jià)的程序,主要包括編譯程序和解釋程序,匯編程序也被認(rèn)為是翻譯程序。程序的最初形式稱為源程序或者源代碼,翻譯后的形式被稱為目標(biāo)程序或者目標(biāo)代碼。大多數(shù)翻譯程序是將高級語言編寫的程序翻譯為機(jī)器語言形式的可執(zhí)行程序。但是也有些翻譯程序?qū)⒃闯绦蚍g成其他高級語言或者字節(jié)碼等中間形式。(4)解釋器翻譯源程序時(shí)不生成獨(dú)立的目標(biāo)程序,而編譯器則將源程序翻譯成獨(dú)立的目標(biāo)程序。解釋器是另外種形式的語言處理器,它相當(dāng)于不生成上面的目標(biāo)程序,直接將輸入“放到”源程序中,然后經(jīng)過解釋器,就得到了輸出。通常情況下,編譯過程比解釋過程更快,但解釋器能夠有更好的錯(cuò)誤診斷,因?yàn)榻忉屍魇侵鹁溥M(jìn)行解釋的。編

3、.0譯器和解釋器可以結(jié)合起來進(jìn)行處理,Java語言處理器就是其中的代表,其過程是源程序經(jīng)過翻譯器處理后得到中間程序,也被稱作字節(jié)碼(bytecode),然后和輸入共同加入到虛擬機(jī)(virtual machine)的前端,得到輸出,其前一部分用到編譯器,后一部分用到解釋器,這樣做的好處是一個(gè)機(jī)器解釋的代碼可以應(yīng)用在另外的機(jī)器上,甚至可以延伸到網(wǎng)絡(luò)上。2、編譯過程圖示 P5 圖1-1第3章:1、Chomsky語言文法分類,程序語言的語法是哪一類,詞法是哪一類,其產(chǎn)生式有什么特點(diǎn)。(教材,但歸納得不好,參看課件)下面4種文法構(gòu)成的語言類成為喬姆斯基層次(Chomskyhierarchy)(1)0型文

4、法:(非限制的) (2)1型文法:(上下文無關(guān)文法) (3)2型文法:(上下文無關(guān)文法) (4)3型文法:(正則文法) 2、名詞:上下文無關(guān)文法的文法、語言、文法二義性、語言先天二義性、分析樹、最左推導(dǎo)、最右推導(dǎo)。(1)上下文無關(guān)文法:在計(jì)算機(jī)科學(xué)中,若一個(gè)形式文法 G = (N, , P, S) 的  產(chǎn)生式規(guī)則都取如下的形式:V -> w,則稱之為上下文無關(guān)的,其中 VN ,w(N)* 。上下文無關(guān)文法取名為“上下文無關(guān)”的原因就是因?yàn)樽址?V 總可以被字串 w 自由替換,而無需考慮字符 V 出現(xiàn)的上下文。一個(gè)形式語言是上下文無關(guān)的,如果它是由上下文無關(guān)

5、文法生成的條目上下文無關(guān)語言。(2)語言:或稱為記號的正規(guī)串集,上下文無關(guān)文法規(guī)則確定了為由規(guī)則定義的結(jié)構(gòu)的記號符號符合語法的串集(3)文法二義性:指可生成帶有兩個(gè)不同分析樹的串的文法稱為二義性文法。二義性問題不可判定:不存在一個(gè)算法,它能在有限步驟內(nèi),確切判定任給的一個(gè)文法是否為二義的;二義存在性證明是只要找到一個(gè)句子,該句子對應(yīng)兩個(gè)不同的語法樹,即證明該文法是二義的。解決二義性的基本方法:設(shè)置一個(gè)規(guī)則,該規(guī)則可在每個(gè)二義性的情況下指出哪一個(gè)分析樹(語法樹)是正確的;將文法改變成一個(gè)強(qiáng)制正確分析樹的構(gòu)造格式。(4)語言先天二義性:如果產(chǎn)生上下文無關(guān)語言的每一個(gè)文法都是二義的,則說此語言是先天

6、二義的。(5)分析樹(語法樹)(6)最左推導(dǎo):是指它的每一步中最左的非終結(jié)符都要被替換的推導(dǎo)。(7)最右推導(dǎo):是指它的每一步中最右的非終結(jié)符都要被替換的推導(dǎo)。第4章:1、遞歸下降語法分析程序構(gòu)造過程;對給定的一個(gè)上下文無關(guān)文法:(1)改寫成EBNF;(4.1.2的兩個(gè)例子,注意對有左公因子和直接左遞歸的產(chǎn)生式如何改寫)(2)根據(jù)EBNF直接編寫函數(shù)。重復(fù)類型:使用while循環(huán)編程如改寫成EBNF的例子:EàEA|B改為EàBA編程:E() B(); while(token) /token是A的起始終結(jié)符 A(); 選擇類型:使用if語句 如改寫為EBNF的例子:E

7、4;A|AB 改為EàAB,中括號代表0或1次可選 編程:E() A(); if(token) /token是B能導(dǎo)出的起始終結(jié)符 B(); 第6章:語義分析1、程序語言中的語義分析一般包括哪些內(nèi)容? 答:變量定義和類型檢查。其中變量定義中需要檢查變量是否符合先定義后使用和變量的語義檢查;在類型檢查中:包括賦值語句、表達(dá)式、數(shù)組下標(biāo)越界檢查、函數(shù)調(diào)用(參數(shù)傳遞)的檢查等。2、名詞:屬性文法(上下文無關(guān)文法中增加文法符號的語義屬性,以及語義規(guī)則);靜態(tài)屬性;動(dòng)態(tài)屬性;繼承屬性;合成屬性 (1)屬性文法:是在上下文無關(guān)文法的基礎(chǔ)上為每個(gè)文法符號(終結(jié)符或非終結(jié)符)配備若干個(gè)相關(guān)的“值“(

8、成為屬性)。這些屬性代表與文法符號相關(guān)的信息,例如它的類型、值、代碼序列、符號表內(nèi)容等。屬性和變量一樣,可以進(jìn)行計(jì)算和傳遞。(2)繼承屬性、合成屬性: 合成屬性用于“自下而上“傳遞信息。在語法樹中,一個(gè)結(jié)點(diǎn)的合成屬性的值由其子結(jié)點(diǎn)的屬性值確定。通常使用自底向上的方法在每個(gè)結(jié)點(diǎn)處使用語義最終計(jì)算合成屬性的值。繼承屬性用于“自上而下”傳遞信息。在語法樹中,一個(gè)結(jié)點(diǎn)的繼承屬性由此結(jié)點(diǎn)的父結(jié)點(diǎn)和或兄弟結(jié)點(diǎn)的某些屬性確定。用繼承屬性來表示程序語言結(jié)構(gòu)中的上下文依賴關(guān)系很方便。 (3)靜態(tài)屬性、動(dòng)態(tài)屬性: 屬性的計(jì)算及將計(jì)算機(jī)與正在討論的語言結(jié)構(gòu)聯(lián)系的過程稱作屬性的聯(lián)編。在執(zhí)行之前聯(lián)編的屬性稱作靜態(tài)的;而

9、只在執(zhí)行期間聯(lián)編的屬性是動(dòng)態(tài)的。第7章:1、運(yùn)行環(huán)境分類:完全靜態(tài)環(huán)境、基于棧的、完全動(dòng)態(tài)環(huán)境。 (1)完全靜態(tài)環(huán)境:是最簡單的運(yùn)行時(shí)環(huán)境類型,它的所有數(shù)據(jù)都是靜態(tài)的,且執(zhí)行程序期間在存儲(chǔ)器中保持固定。這樣的環(huán)境可用來實(shí)現(xiàn)沒有指針或動(dòng)態(tài)分配,且過程不可遞歸調(diào)用的語言。在這樣的環(huán)境中,保留每個(gè)活動(dòng)記錄的簿記信息開銷相對較小,而且也不需要再活動(dòng)記錄中保存有關(guān)環(huán)境的額外信息(而不是返回地址) (2)基于棧的運(yùn)行環(huán)境:必須以一個(gè)基于棧的風(fēng)格來分配活動(dòng)的記錄,即當(dāng)進(jìn)行一個(gè)新的過程調(diào)用(活動(dòng)記錄壓入)時(shí),每個(gè)新的活動(dòng)記錄都分配在棧的頂部,而當(dāng)調(diào)用退出時(shí)則再次解除分配(活動(dòng)記錄彈出)。活動(dòng)記錄的棧,也叫運(yùn)行時(shí)?;蛘{(diào)用棧就隨著程序執(zhí)行時(shí)發(fā)生的調(diào)用鏈生長或縮小。每個(gè)過程每次在調(diào)用棧上可以有若干個(gè)不同的活動(dòng)記錄,每個(gè)都代表一個(gè)不同的調(diào)用。這樣的環(huán)境要求的簿記和變量訪問的技術(shù)比完全靜態(tài)環(huán)境要求復(fù)雜。特別地,活動(dòng)記錄中必須

溫馨提示

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

評論

0/150

提交評論