編譯原理期末總結(jié)
編譯原理期末總結(jié)第一章編譯概述
程序的翻譯:源程序:用匯編語言或高級語言編寫的程序。
目標(biāo)程序:用目標(biāo)語言所表示的程序。(目標(biāo)語言:可以是介于源語言和機器語言
之間的中間語言,可以是某種機器的機器語言,也可以是某機器的匯編語言)
翻譯程序:將源程序轉(zhuǎn)換為目標(biāo)程序的程序稱為翻譯程序。它是指各種語言的翻譯
器,包括匯編程序和編譯程序,是匯編程序、編譯程序以及各種變換程序的總稱。
匯編程序:若源程序用匯編語言書寫,經(jīng)過翻譯程序得到用機器語言表示的程序,這是
的翻譯程序就稱之為匯編程序。
編譯程序:若源程序是用高級語言書寫,經(jīng)加工后得到目標(biāo)程序,上述翻譯過程稱為“編
譯”。
編譯過程:詞法分析(程序)、語法分析(程序)、語義分析及生成中間代碼、代碼優(yōu)化、
目標(biāo)代碼生成(生成目標(biāo)程序)。符號表管理錯誤處理每個階段都要有
第二章形式語言的基本知識
符號串:由字母表中的符號組成的任何有窮序列。符號串的連接運算,符號串的冪運算符號串集合的運算:若集合A中的一切元素都是某字母表上的符號串,則稱A為該字母表上的符號串集合。符號串集合的乘積,符號串集合的冪運算,符號串集合的閉包運算
文法和語義的定義:文法是對語言結(jié)構(gòu)的定義與描述。
規(guī)范推導(dǎo):最右推導(dǎo),對于一個推導(dǎo)序列中的每一直接推導(dǎo),被替換的總是當(dāng)前符號串中的最右非終結(jié)符號。
規(guī)范歸約:規(guī)范推導(dǎo)的逆過程,最左歸約。規(guī)范歸約遞歸文法:含有遞歸規(guī)則的文法。文法的BNF,EBNF表示
文法的二義性:若一個文法的某句子存在兩個不同的最右(最左)推導(dǎo),則該文法是二義性的,否則是無二義性的。
第三章詞法分析
詞法分析程序的任務(wù):編譯第一階段的工作,它讀入字符流的源程序,按照詞法規(guī)則識別單詞,再由語法分析程序接下去處理。
詞法分析程序的手工實現(xiàn):單詞的文法----狀態(tài)圖---流程圖---偽碼詞法分析程序的自動構(gòu)造:正規(guī)式:正規(guī)集的描述機制有窮自動機(NFADFA):正規(guī)集的識別機制LEX的實現(xiàn)原理和源程序的基本組成
第四章語法分析
第五章語義分析和中間代碼生成
語義分析的任務(wù):根據(jù)語義規(guī)則對識別出的各種語法成分分析其含義,進行初步翻譯,生成相應(yīng)的中間代碼或直接生成目標(biāo)代碼。1.確定數(shù)據(jù)類型;2.語義檢查:動態(tài)語義檢查(在運行時刻進行),靜態(tài)語義檢查(在編譯完成時);3.識別含義,進行真正的翻譯。
屬性文法:附加了一組屬性和運算(語義)規(guī)則的文法。語法制導(dǎo)翻譯的過程:將語義規(guī)則與語法規(guī)則相結(jié)合,在語法分析的過程中通過執(zhí)行語義動作,計算語義屬性值,從而完成預(yù)定的翻譯工作。
自低向上(語法制導(dǎo)定義):在產(chǎn)生式規(guī)約的同時調(diào)用相應(yīng)的語義子程序自頂向下(翻譯方案):將語義子程序嵌入到每個遞歸過程中中間代碼的目的:便于優(yōu)化便于移植
中間代碼的幾種形式:后綴式四元式三元式間接三元式
第六章符號表管理和錯誤處理
表:編譯程序在其工作過程中使用最多的數(shù)據(jù)結(jié)構(gòu)是表,在這些表中,符號表最為重要,它的生存周期最長,使用最頻繁。
作用:1.收集符號的各種信息;2.語義檢查的依據(jù);3.目標(biāo)代碼生成階段地址分配的依據(jù)
內(nèi)容:名字欄+信息欄
符號表的總體組織:多張一張前兩種折中符號表項的組織:線性組織排序組織散列組織明確錯誤處理的兩種方法:錯誤校正和局部化處理
第七章運行時的存儲組織與分配
靜態(tài)存儲分配:在編譯階段由編譯程序?qū)崿F(xiàn)對存儲空間的管理,為源程序中的變量分配存儲單元。在編譯時能夠確定變量在運行時的數(shù)據(jù)空間大小,運行時不改變。
動態(tài)存儲分配:在目標(biāo)程序運行階段由目標(biāo)程序?qū)崿F(xiàn)對存儲空間的組織與管理,為源程序中的變量分配存儲單元。在目標(biāo)程序運行時進行分配,編譯時為運行階段升級好存儲組織形式,即每個數(shù)據(jù)項安排好它在數(shù)據(jù)區(qū)中的相對位置。
活動記錄:連接數(shù)據(jù)單元(聯(lián)系單元):靜態(tài)鏈,動態(tài)鏈,返回地址;+局部數(shù)據(jù)區(qū)PL0存儲分配策略:程序存儲器code,數(shù)據(jù)存儲器s,程序地址存儲器p,地址寄存器t,指令寄存器i,基本地址寄存器b。
三個聯(lián)系單元:
SL靜態(tài)鏈,指向定義該過程的直接外層過程的活動記錄的基地址,以確保變量的正確存取
DL動態(tài)鏈,指向調(diào)用該過程前正在運行的那個過程的活動記錄的基地址,以確保能返回到調(diào)用過程段。
RA返回地址,保存該被調(diào)過程返回后的地址,即當(dāng)時程序的地址寄存器p的值,也就是調(diào)用過程指令的下一條指令的地址,用來確保返回到正確的指令地址。
第八章代碼優(yōu)化
代碼優(yōu)化的目的:提高目標(biāo)代碼運行效率時間效率(減少運行時間)空間效率(減少內(nèi)容容量)
代碼優(yōu)化的分類:局部優(yōu)化(在基本塊內(nèi)進行優(yōu)化)循環(huán)優(yōu)化(對循環(huán)語句所生成的中間代碼進行優(yōu)化)全局優(yōu)化(跨越多個基本塊的全局范圍內(nèi)的優(yōu)化,復(fù)雜)基本塊優(yōu)化方法:合并常量,刪除公共子表達式,刪除無用賦值循環(huán)優(yōu)化方法:代碼外提,強度削弱,刪除歸納變量
第九章目標(biāo)代碼生成
實現(xiàn)一個代碼生成器應(yīng)考慮2個問題如何使生成的目標(biāo)代碼盡可能的短如何充分利用計算機的寄存器,減少目標(biāo)代碼中訪問內(nèi)存的次數(shù)明確目標(biāo)代碼的三種不同形式的優(yōu)缺點可立即執(zhí)行的機器語言代碼待裝配的機器語言代碼,又稱相對目標(biāo)代碼匯編語言代碼
擴展閱讀:編譯原理大總結(jié)
《編譯原理》期末復(fù)習(xí)指導(dǎo)
本課程是計算機專業(yè)的重要專業(yè)課之一,主要介紹程序設(shè)計語言編譯構(gòu)造的基本原理和基本實現(xiàn)方法。本課程主要講授形式語言、有限狀態(tài)自動機和詞法分
析、自頂而下和自底而上的語法分析、中間代碼生成、存儲器的動態(tài)分配與管理、符號表的組織與管理、代碼生成、出錯恢復(fù)等內(nèi)容。通過本課程學(xué)習(xí),使學(xué)生對編譯的基本概念、原理和方法有完整的和清楚的理解,并能正確地、熟練地運用。
一、通過本課程的學(xué)習(xí),應(yīng)使學(xué)生達到以下基本要求:
1、正確理解什么是編譯程序;了解編譯程序工作的基本過程及其各階段的基本任務(wù);熟悉編譯程序總框;了解編譯程序的生成過程和構(gòu)造工具。
2、理解程序語言詞法、語法和語義等概念;熟悉高級程序語言一般結(jié)構(gòu)和主要共同特征。正確理解上下文無關(guān)文法基本概念,包括:文法的定義、編寫、句型、句子、語言、語法樹、二義性等;理解三種參數(shù)傳遞方式:傳值、傳地址、傳名的含義。
3、理解詞法分析器功能及形式;熟練掌握詞法分析器設(shè)計的原理,掌握運用狀態(tài)轉(zhuǎn)換圖進行詞法分析器設(shè)計。
4、正確理解自頂而下分析的基本思想;熟練掌握遞歸下降分析基本方法:消除左遞歸,消除回溯,構(gòu)造遞歸下降子程序;掌握預(yù)測分析程序的基本原理和預(yù)測分析表構(gòu)造;理解LL(1)方法的定義。
5、正確理解自下而上語法分析的基本思想,以及歸約、短語、句柄、分析樹等概念;掌握算符優(yōu)先分析基本方法:算符優(yōu)先表和和算符優(yōu)先函數(shù)構(gòu)造技術(shù)。6、正確理解語法制導(dǎo)翻譯基本原理;掌握基于屬性文法的處理方法,了解自上而下分析制導(dǎo)翻譯基本思想和實現(xiàn)方法。
7、熟悉常見的幾種中間語言:四元式、三元式、逆波蘭表示;掌握各種語句到四元式的翻譯方法,包括:簡單算術(shù)表達式,布爾表達式,控制語句,數(shù)組引用,過程調(diào)用等。8、理解符號表的作用及符號表組織和使用方法,了解名字的作用范圍,了解符號表中一般應(yīng)包含的內(nèi)容。
9、正確理解目標(biāo)程序運行進存儲空間的使用和組織管理方式;理解靜態(tài)分配和動態(tài)存儲分配基本思想;掌握FORTRAN存儲分配的處理方式;掌握棧式動態(tài)分配中活動記錄的作用、組織、內(nèi)容及使用;了解嵌套過程語言程序運行時整個運行棧的內(nèi)容的組織。
10、正確理解代碼優(yōu)化的定義和各種可能的優(yōu)化概念;掌握用DAG表示進行局部優(yōu)化的方法。
11、正確理解代碼生成過程的基本問題,理解待用信息、寄存器描述和地址描述等概念;掌握簡單代碼生成算法、寄存器分配策略。二、文字教材
文字教材是教學(xué)媒體的核心,是傳遞教學(xué)信息及學(xué)生進行自主學(xué)習(xí)的基本依據(jù),是整個教學(xué)媒體體系的基礎(chǔ)。包括主教材、學(xué)習(xí)指導(dǎo)書和參考資料匯編、教學(xué)大綱、課程教學(xué)設(shè)計方案、復(fù)習(xí)提要等。1、《編譯原理》徐國定編著,高等教育出版社。參考資料:
1、《程序設(shè)計語言編譯原理(第3版)》陳火旺、劉春林等編著,國防工業(yè)出版社。
2、《程序設(shè)計語言與編譯》龔天富、侯文永編,電子工業(yè)出版社。3、《編譯原理習(xí)題與解析》伍春香編著,清華大學(xué)出版社。4、《編譯原理》呂映芝張素琴蔣維杜,清華大學(xué)版社。
三、教學(xué)內(nèi)容和教學(xué)要求第一章概論
主要內(nèi)容:編譯程序,編譯過程概述,編譯程序的結(jié)構(gòu),編譯程序與程序設(shè)計環(huán)境,編譯程序生成,學(xué)習(xí)構(gòu)造編譯程序。
重點:編譯程序工作的基本過程及其各階段的基本任務(wù),編譯程序總框。第二章形式語言基礎(chǔ)主要內(nèi)容:程序語言定義,初等數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu),高級高級語言的一般特性,程序結(jié)構(gòu),語句與控制結(jié)構(gòu),上下文無關(guān)文法,語法分析樹與二義性。重點:上下文無關(guān)文法,程序語言定義參數(shù)傳遞。第三章有限狀態(tài)自動機和詞法分析
主要內(nèi)容:詞法分析器任務(wù),詞法分析器設(shè)計,正規(guī)表達式與有限自動機,詞法分析器自動生成。
重點:詞法分析器的任務(wù)與設(shè)計,狀態(tài)轉(zhuǎn)換圖。第四章自頂向下句法分析
主要內(nèi)容:語法分析器的功能,自上而下語法分析(遞歸下降分析法,預(yù)測分析程序),LL(1)分析法,遞歸下降分析程序構(gòu)造,預(yù)測分析程序,自上而下分析的錯誤診察,語義錯誤診察。
重點:遞歸下降子程序,預(yù)測分析表構(gòu)造,LL(1)文法。第五章自底向上句法分析
主要內(nèi)容:自下而上語法分析(算符優(yōu)先分析法),算符優(yōu)先分析,LR分析器,LR(0)項目集族和LR(0)分析表的構(gòu)造,SLR分析表的構(gòu)造,規(guī)范LR分析表的構(gòu)造,出錯處理概述,詞法分析階段的錯誤診察,語法分析(自下而上)階段的錯誤診察,語法分析器自動產(chǎn)生工具YACC。重點:歸約,算符優(yōu)先表構(gòu)造,LR分析法。第六章中間代碼生成和符號表
主要內(nèi)容:中間語言,說明語句,賦值語句的翻譯,布爾表達式的翻譯,控制語句的翻譯,過程調(diào)用的處理各種常見中間語言形式,各種語句到四元式的翻譯。符號表的組織與作用,整理與查找,名字的作用范圍,符號表的內(nèi)容。重點:三種中間語言:四元式、三元式、逆波蘭表示;算術(shù)表達式的翻譯,布爾表達式的翻譯,控制語句的翻譯。符號表的作用與內(nèi)容。第七章運行時刻存儲和環(huán)境管理
主要內(nèi)容:目標(biāo)程序運行時的活動,運行時存儲器的劃分,靜態(tài)存儲管理,簡單的棧式存儲分配的實現(xiàn),嵌套過程語言的棧式實現(xiàn),堆式動態(tài)存儲分配。重點:靜態(tài)分配策略和動態(tài)分配策略基本思想,嵌套過程語言棧式分配,活動記錄、運行時棧的組織。第八章代碼生成
主要內(nèi)容:目標(biāo)機器模型,一個簡單代碼生成器,寄存器分配,DAG目標(biāo)代碼,窺孔優(yōu)化。
重點:簡單代碼生成器,寄存器分配策略。第九章出錯恢復(fù)
主要內(nèi)容:詞法分析的出錯恢復(fù),LR和LL句法分析的出錯恢復(fù)重點:錯誤的恢復(fù)方法。
四、考核方式說明
該課程的考核由形成性考核和期末課程考核兩部分組成。其中形成性考核成績由平時作業(yè)和上機實驗兩部分成績組成,各占總成績的10%,期末課程考核占總成績的80%。
平時作業(yè)考核:要求學(xué)生認(rèn)真完成平時作業(yè),各辦學(xué)點應(yīng)組織作業(yè)的批改和成績的核定。平時作業(yè)的成績評定標(biāo)準(zhǔn)和要求按省電大有關(guān)文件執(zhí)行。上機實驗考核:學(xué)員必須完成規(guī)定的上機實驗,并撰寫實驗報告,由輔導(dǎo)實驗的老師批改并評定成績,學(xué)員實驗成績評定單必須加蓋承擔(dān)實驗單位的公章方能生效。
課程結(jié)業(yè)考核:該課程的結(jié)業(yè)考核在期末進行,采用筆試、閉卷,由省電大統(tǒng)一組織命題,試卷采用百分制,卷面成績按80%的比例折算計入總成績。四、考試題型
試題類型包括:選擇題,判斷題,填空題,簡答題,應(yīng)用題。模擬試題
一、單項選擇題
1.把匯編語言程序翻譯成機器可執(zhí)行的目標(biāo)程序的工作是由______完成的。A.編譯器B.解釋器C.匯編器D.預(yù)處理器2.編譯過程中,語法分析器的任務(wù)是______。1)分析單詞是怎樣構(gòu)成的
2)分析單詞串是如何構(gòu)成語句和說明的3)分析語句和說明是如何構(gòu)成程序的4)分析程序的結(jié)構(gòu)
A.2和3B.3和4C.2,3和4D.1,2,3和4
3.高級語言編譯程序常用的語法分析方法中,遞歸下降分析法屬于______分析方法。
A.自左至右B.自頂向下C.自底向上D.自右向左4.算符優(yōu)先文法是指_______的文法。
1)沒有形如U->…VW…的規(guī)則(U,V,W∈Vn)
2)終結(jié)符號集Vt中任意兩個符號對之間至多有一種優(yōu)先關(guān)系成立。3)沒有相同的規(guī)則右部。4)沒有形如U->ε的規(guī)則
A.1,2B.1,2,3C.1,2,3,4D.1,2,45.動態(tài)存儲分配時,可以采用的分配方法是1)以過程為單位的棧式動態(tài)存儲分配2)堆存儲分配3)最佳分配方法
A.1B.2C.1,2D.1,2,3
二、填空題
1.編譯方式和解釋方式的根本區(qū)別在于__________________。
2.LL(1)分析法中,第一個L的含義是_________________,第二個L的含義是___________________,“1”的含義是____________________。
3.過程調(diào)用時,參數(shù)的傳遞方法通常有__________、__________、__________和傳名。
4.一個上下文無關(guān)文法所含四個組成部分是____________集、______________集、_____________集和______________集。
三、判斷題
1.算符優(yōu)先關(guān)系表不一定存在對應(yīng)的優(yōu)先函數(shù)。…………()2.每個文法都能改寫為LL(1)文法!ǎ3.符號表由詞法分析程序建立,由語法分析程序使用……()4.上下文無關(guān)文法規(guī)則的左部一定是非終結(jié)符號…………()5.LL(1)文法有可能是二義性的!ǎ
四、簡述題
1.簡述詞法分析階段的任務(wù)。
2.什么是語法制導(dǎo)翻譯?
3.什么是素短語?
4.什么是靜態(tài)存儲分配?
5.畫圖說明編譯程序的組成結(jié)構(gòu)。
五、綜合應(yīng)用題1.設(shè)文法G(S):S→(L)|aS|aL→L,S|S
(1)消除左遞歸和回溯;
(2)計算每個非終結(jié)符的FIRST和FOLLOW;(3)構(gòu)造預(yù)測分析表。
2.已知文法G(E)E→T|E+TT→F|T*FF→(E)|i
(1)給出句型(T*F+i)的最右推導(dǎo)及畫出語法樹;(2)給出句型(T*F+i)的短語、素短語。參考答案
一、單項選擇題題號1答案C二、填空題
1.是否生成目標(biāo)代碼
2.從左向右進行分析,每次進行最左推導(dǎo),向輸入串中查看一個輸入符號3.傳值,傳地址,傳結(jié)果(順序可互換)
2C3B4D5C4.終結(jié)符、非終結(jié)符、開始符號、產(chǎn)生式(順序可互換)
三、判斷題1.√2.×3.×4.√5.×
四、名詞解釋
1、答:詞法分析的基本任務(wù)是從左向右掃描每行源程序的符號,識別出單詞及其屬性,把單詞換成統(tǒng)一的內(nèi)部表示送給語法分析程序。同時還要完成在語法分析之前需要做的工作,如刪除注解、空格、換行符等非必要信息,把標(biāo)識符登錄到符號表及某些預(yù)加工處理等。
2、答:語法制導(dǎo)翻譯就是在進行語法分析的同時,完成語義的分析,即在語法分析的過程中,根據(jù)語言的語義定義隨時翻譯已識別的那部分語法成分的全部含義。
答:有以下特征的短語稱為素短語:1)它首先是一個短語。2)它至少含一個終結(jié)符號。3)除自身外,不再包含其它素短語。
3、答:如果在編譯時就能確定一個程序在運行時所需要的存儲空間的大小,則在編譯時就能夠安排好目標(biāo)程序運行時的全部數(shù)據(jù)空間,并確定每個數(shù)據(jù)項的存儲單元地址,而這些數(shù)據(jù)項的存儲地址在運行時始終不變,這就是靜態(tài)存儲分配。4、答:表格管理詞法分析語法分析語義分析中間代碼生成代碼優(yōu)化目標(biāo)代碼生成錯誤處理
五、綜合應(yīng)用題1.解:(1)
S→(L)|aS’S’→S|εL→SL’L’→SL’|ε(2)
FIRST)S)={(,a}FOLLOW(S)={#,,,)}FIRST(S’)={,a,ε}FOLLOW(S’)={#,,,)}FIRST(L)={(,a}FOLLOW(L)={)}FIRST(L’)={,,ε}FOLLOW(L’〕={)}(3)SS’La,()#S→aS’S→(L)S’→SS’→εS’→SS’→εS’→εL→SL’L→SL’L’L’→εL’→ε2.答:(1)最右推導(dǎo):
E→T→F→(E)→(E+T)→(E+F)→(E+i)→(T+i)→(T*F+i)語法樹:ETF(E)E+TTFT*Fi
(2)短語:(T*F+i),T*F+i,T*F,素短語:T*F,i
i
友情提示:本文中關(guān)于《編譯原理期末總結(jié)》給出的范例僅供您參考拓展思維使用,編譯原理期末總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。