《編譯原理復(fù)習(xí)》由會員分享,可在線閱讀,更多相關(guān)《編譯原理復(fù)習(xí)(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,編譯原理總復(fù)習(xí),Click to edit Master title style,Click to edit Master te
2、xt styles,Second level,Third level,Fourth level,Fifth level,*,編譯原理,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,編譯原理總復(fù)習(xí),Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fif
3、th level,*,編譯原理,期末總復(fù)習(xí),考試題型,一單項選擇,(2,10=20,),二簡答題,(,6,3,=,18,),三自動機(jī)轉(zhuǎn)換題,(15,),四中綴式轉(zhuǎn)化后綴式和四元式,(,6,2=1,2,),五用,DAG,進(jìn)行局部優(yōu)化,(10,),六綜合題,(25,),編譯原理總復(fù)習(xí),知識要點(diǎn),第,1,章,編譯程序:,compiler,能將一種計算機(jī),高級語言,程序(,源語言,程序)轉(zhuǎn)換成另一種等價的計算機(jī),低級語言,程序(,目標(biāo)語言,程序),編譯原理總復(fù)習(xí),編譯程序工作過程的各個階段:,詞法分析器,語法分析器,語義分析器,源程序,中間代碼生成器,代碼優(yōu)化器,目標(biāo)代碼生成器,目標(biāo)程序,出錯管理器,
4、符號表管理器,編譯原理總復(fù)習(xí),第,3,章,文法,G=,(,V,N,,,V,T,,,P,,,Z,),V,N,:非終結(jié)符號集,V,T,:終結(jié)符號集,P,:產(chǎn)生式或規(guī)則的集合,Z,:開始符號(識別符號),ZV,N,規(guī)范推導(dǎo):,即最,右,推導(dǎo),若符號串,中有兩個以上的非終結(jié)符時,對推導(dǎo)的每一步堅持把,中的最右非終結(jié)符進(jìn)行替換。,編譯原理總復(fù)習(xí),文法,GZ,所產(chǎn)生的,所有句子的集合,文法,GZ,(,1,),句型,:,x,是句型,Z,x,且,x,V*,;,*,*,(,2,),句子,:,x,是句子,Z,x,且,x,V,T,*,;,*,(,3,),語言,:,L,(,GZ,),=x|Z,x,,,x,V,T,*,
5、;,即:句型是由文法開始符號推導(dǎo)出來的,由終結(jié)符和非終結(jié)符組成的符號串。,即:句子是由文法開始符號推導(dǎo)出來的,由終結(jié)符組成的符號串。,編譯原理總復(fù)習(xí),給定文法,判斷給定輸入串是否為該文法的句子或句型。并指出該句子或句型的:,短語,簡單短語,句柄,編譯原理總復(fù)習(xí),第,4,章,詞法分析程序的主要任務(wù):,對構(gòu)成源程序的字符串從左到右的掃描,逐個字符地讀入源程序字符,按照構(gòu)詞規(guī)則切分成一個一個具有獨(dú)立意義的單詞,并識別其正確性,再交給下一階段進(jìn)行語法分析。,描述詞法的機(jī)制是,正則表達(dá)式,識別機(jī)制是,有窮狀態(tài)自動機(jī),編譯原理總復(fù)習(xí),為正規(guī)式,(0|1),*,0(0|1),構(gòu)造一個等價的有窮自動機(jī)。,將此
6、自動機(jī)轉(zhuǎn)換為確定自動機(jī),DFA,。,例:,編譯原理總復(fù)習(xí),S,A,B,C,Z,0,1,0,0,1,第,5,章,語法分析的主要工作:,識別由詞法分析給出的單詞序列是否為給定文法的正確句子(程序)。,語法分析常用的方法:,自頂向下的語法分析和自底向上的語法分析兩大類。,編譯原理總復(fù)習(xí),三個重要集合:,First,集,Follow,集,Select,集,注:三,種集合均為,終結(jié)符集,編譯原理總復(fù)習(xí),SELECT(,A,)=,(FIRST(),),FOLLOW,(A),,,否則,FIRST(),,,當(dāng),時,*,確定的自頂向下語法分析:,要求文法必須是,LL(1),文法,LL(1),文法的判別,若非終結(jié)
7、符,A,的兩個不同產(chǎn)生式,,A,A,;,滿足:,SELECT(A,)SELECT(A,)=,編譯原理總復(fù)習(xí),第,7,章,LR,分析法,前綴:,一個符號串的前綴是指該串的任意首部(包括,)。,可歸前綴:,是指規(guī)范句型的一個前綴,這種前綴,包含句柄且不含句柄之后的任何符號,。,活前綴:,可歸前綴的任意首部。,編譯原理總復(fù)習(xí),移進(jìn)項目:,A,.,b,其中,b,為終結(jié)符,,,可為,待約項目:,A,.,B,其中,B,為非終結(jié)符,,,可為,歸約項目:,A,.,接受項目:,SS,.,LR(0),分析和,SLR(1),分析,編譯原理總復(fù)習(xí),分析法過程步驟:,拓廣文法,G,:引起一個新的開始符號,S,,且將,S
8、,S,作為第,0,個產(chǎn)生式添加到文法,G,中,并對所有產(chǎn)生式進(jìn)行編號。,構(gòu)造識別活前綴的,DFA,。,判斷是否存在,移進(jìn)歸約,沖突或,歸約歸約,沖突。,若無沖突,則為,LR(0),文法,構(gòu)造,LR(0),分析表;,若有沖突,判斷是否為,SLR(1),文法,編譯原理總復(fù)習(xí),SLR(1),文法判定:,存在如下項目集,(,狀態(tài),)I:,I=,X,.,b,A,.,B,.,其中,bV,T,I,中含有,移進(jìn)歸約,和,歸約歸約,沖突。,若滿足:,FOLLOW(A),FOLLOW,(B)b=,則為,SLR(1),文法。,編譯原理總復(fù)習(xí),SLR(1),分析表的構(gòu)造規(guī)則:,(1),項目集,Ii,中若有形如,A.X
9、,的項目,且有,GO(,Ii,X,),=Ij,若,X,為一終結(jié)符號,a,時,則置,ACTION,I,a,=Sj,;,若,X,為一非終結(jié)符號時,則置,GOTO,i,X,=j,;,(2),若有歸約項目,A,.,屬于,Ii,設(shè),A,為文法第,j,個行產(chǎn)生式,則對任何,屬于,FOLLOW(A),的,輸入符號,a,,置,ACTION,i,a,=Rj,;,(3),若有接受項目,SS,.,屬于,Ii,則置,ACTIONi,#,=acc,。,(4),在分析表,凡不能按上述規(guī)則填入信息的元素,均置為“出錯”。,編譯原理總復(fù)習(xí),第,8,章,語義分析的任務(wù),對于所寫的源程序,在詞法分析和語法分析的基礎(chǔ)上,進(jìn)一步分析
10、其含義,在理解含義的基礎(chǔ)上,為生成相應(yīng)的目標(biāo)代碼做好準(zhǔn)備或直接生成目標(biāo)代碼。,語義描述方法,屬性文法,語義的處理方法,語法制導(dǎo)翻譯,編譯原理總復(fù)習(xí),屬性文法,屬性文法形式的定義為一個三元組,AG,,,AG=,(,G,,,V,,,E,)。其中,G,為一個上下文無關(guān)文法;,V,為屬性的有窮集;,E,為一組語義規(guī)則。,語法制導(dǎo)翻譯,語法制導(dǎo)翻譯就是在語法分析的過程中,當(dāng)進(jìn)行推導(dǎo)或歸約時同步完成附加在所使用的產(chǎn)生式上的語義規(guī)則描述的動作,從而實現(xiàn)語義處理。,屬性分為兩類:綜合屬性和繼承屬性,綜合屬性,:,如果,b,是,A,的屬性,,c,1,c,2,c,k,是產(chǎn)生式右部文法符號的屬性或,A,的其它屬性。
11、,繼承屬性,:如果,b,是產(chǎn)生式右部某個文法符號,X,的屬性。,編譯原理總復(fù)習(xí),給定文法,S,及相應(yīng)翻譯方案為:,(0),S,S,print:“a,”,(1),S,r,D,print:“b,”,(2),D,D,i,print:“c,”,(3),D,i,print:“d,”,1.,符號串,ri,i,i,是不是該文法的一個句子,請證實。,2.,若是句子,寫出其所有的短語、簡單短語,以及句柄。,3.,構(gòu)造識別該文法的活前綴的,DFA,,并判斷該文法是,LR(0),還是,SLR(1),。,4.,對于,ri,i,i,這個輸入符號串,該翻譯方案的輸出是什么?,編譯原理總復(fù)習(xí),例:,S,r,S,D,D,i,
12、,,i,D,i,,,中間代碼的形式,幾種常用的中間表示,:,后綴表示:逆波蘭記號,三地址代碼:三元式、四元式,圖形表示:樹形表示,編譯原理總復(fù)習(xí),(,b*cd/c)*a,a,cc,+e,d,例:,第,9,章,符號表的作用和地位,語義檢查的依據(jù),目標(biāo)代碼生成階段地址分配的依據(jù),編譯原理總復(fù)習(xí),第,11,章,基本塊,:是指程序中一順序執(zhí)行的語句序列,其中只有一個入口語句和一個出口語句。,基本塊的,DAG,:,無環(huán)路有向圖,編譯原理總復(fù)習(xí),t1,S,R,t2,S,R,A,t1*t2,B,A,t3,S,R,t4,t2*t3,B,t4,(1),畫出,DAG,圖;,(2),假設(shè)基本塊出口時只有,A,、,B,還被引用,請寫出優(yōu)化后的三地址代碼序列。,編譯原理總復(fù)習(xí),有基本塊:,例:,編譯原理總復(fù)習(xí),1.,編譯程序的主要組成部分有哪些?,2.,詞法分析的主要任務(wù)是什么?,3.,簡述,DFA,與,NFA,有何區(qū)別?,4.,自底向上的語法分析方法的基本思想是什么,?,5.,何謂語法制導(dǎo)翻譯?,6.,常用的中間語言表示形式有哪些?(至少寫出三種),簡答題,