《編譯原理》復(fù)習(xí).ppt
《《編譯原理》復(fù)習(xí).ppt》由會員分享,可在線閱讀,更多相關(guān)《《編譯原理》復(fù)習(xí).ppt(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、編譯原理復(fù)習(xí),延安大學(xué)計算機學(xué)院 郝繼升,2,課程內(nèi)容,要求(希望) 牢固掌握基本概念 靈活使用基本方法 歸納總結(jié)所學(xué)內(nèi)容(鍛煉提高抽象能力),一、引言 二、詞法分析 三、語法分析 四、語義分析語法制導(dǎo)翻譯生成中間代碼,學(xué)習(xí)不能走捷徑,付出多少勞動就有多少收獲。 掌握正確的學(xué)習(xí)方法,學(xué)會聯(lián)想與歸納總結(jié)。,3,第一章 引言, 語言的翻譯,不同的翻譯形式:匯編、編譯、轉(zhuǎn)換(預(yù)編譯)、逆向翻譯 翻譯方法:,,4, 編譯器的基本組成,,5, 編譯器的分析綜合模式,, 編譯器的掃描遍數(shù)與編譯器的編寫,6,第二章 詞法分析,構(gòu)詞規(guī)則與詞法分析: 首先規(guī)定單詞形成的規(guī)則,稱為構(gòu)詞規(guī)則;然后根據(jù)構(gòu)詞規(guī)則識別
2、輸入序列,稱為詞法分析。,主要內(nèi)容: 記號、模式與單詞 記號的說明模式的形式化描述(正規(guī)式與正規(guī)集) 記號的識別有限自動機 從正規(guī)式到詞法分析器,詞法分析器的作用: 濾掉源程序中的無用成分; 處理與具體操作系統(tǒng)或機器有關(guān)的輸入; 識別記號并交給語法分析器; 調(diào)用符號表管理器和出錯處理器進行相關(guān)處理。,7, 記號、模式與單詞,模式(pattern):規(guī)定單詞識別的規(guī)則 記號(token):按照某模式識別出的一類單詞(記號種類) 單詞(lexeme):被識別出的字符串本身 詞法分析器的輸出:記號=記號種類+記號屬性, 記號的說明模式的形式化描述,正規(guī)式與正規(guī)集: 正規(guī)式與正規(guī)集的定義(基本正規(guī)式、
3、三個運算) 正規(guī)式的等價(描述相同的集合) 利用正規(guī)式的等價對正規(guī)式進行化簡(正規(guī)式的代數(shù)性質(zhì)) 用正規(guī)式形式化描述模式: 如何用正規(guī)式描述程序設(shè)計語言中常見的記號,如標(biāo)識符、數(shù)字、運算符和分隔符等 正規(guī)式的簡化形式以及輔助定義與規(guī)則,8, 記號的識別有限自動機(FA),NFA與DFA的定義:FA = (S, , move, s0, F); NFA與DFA的表示:定義表示、狀態(tài)轉(zhuǎn)換圖、狀態(tài)轉(zhuǎn)換矩陣; NFA與DFA的關(guān)鍵區(qū)別:NFA的不確定性(當(dāng)前狀態(tài)下,對同一字符可能有多于一個的下一狀態(tài)轉(zhuǎn)移); 用NFA識別輸入序列的弱點:嘗試所有路徑才能確定一個輸入不被接收、回溯帶來的問題; 模擬DFA的
4、算法:用DFA識別記號。,, 從正規(guī)式到詞法分析器,構(gòu)造NFA的Thompson算法(與NFA定義的對應(yīng)關(guān)系); 模擬NFA的“并行”算法; 從NFA構(gòu)造DFA子集法: smove(S, a)與-閉包(T)的計算; DFA的最小化可區(qū)分的概念:所有不可區(qū)分的狀態(tài)看作是一個狀態(tài); 靈活運用各種方法構(gòu)造DFA(正規(guī)式化簡、狀態(tài)轉(zhuǎn)換圖等),特別是手工構(gòu)造和算法構(gòu)造的區(qū)別。,10,第三章 語法分析,語法分析是編譯器中的重要階段之一,可以認(rèn)為是語法制導(dǎo)翻譯模式編譯器的核心。語法分析也有雙重含義:根據(jù)一定的規(guī)則構(gòu)成語言的各種結(jié)構(gòu),即語法規(guī)則;根據(jù)語法規(guī)則識別輸入序列(記號流)中的語言結(jié)構(gòu),即語法分析。,語
5、法分析的分析對象是組成語言的句子,句子具有層次結(jié)構(gòu)的特征,表征該結(jié)構(gòu)的最好方法是樹,從而使得對語法的分析就有了從根到葉子和從葉子到根兩種分析方法。,主要內(nèi)容 程序設(shè)計語言與文法 有關(guān)推導(dǎo)的基本概念 自上而下分析 自下而上分析,11, 程序設(shè)計語言與文法,正規(guī)式與正規(guī)文法:正規(guī)式與正規(guī)文法用于描述線性結(jié)構(gòu),如構(gòu)成句子的記號(終結(jié)符);識別正規(guī)語言的自動機是有限自動機,它們的特征是沒有記憶能力; 上下文無關(guān)文法(CFG=(N, T, S, P)):CFG用于描述層次結(jié)構(gòu),如構(gòu)成程序的句子;識別CFL的自動機是下推自動機,它是在有限自動機的基礎(chǔ)上增加了一個下推棧,從而有了簡單的記憶能力;,文法的分類
6、:0型、1型、2型和3型文法 詞法分析器與語法分析器:FA與PDA,12, 有關(guān)推導(dǎo)的基本概念,CFG產(chǎn)生語言的基本方法推導(dǎo):從文法的開始符號開始,反復(fù)地用產(chǎn)生式的右部替換句型中的非終結(jié)符。 推導(dǎo)的基本概念:句子、直接推導(dǎo)、最左推導(dǎo)、左句型(最右推導(dǎo)、右句型); 分析樹與語法樹:分析樹和語法樹都反映了語言結(jié)構(gòu);分析樹還記錄了分析的過程(含有非終結(jié)符); 文法的二義性:二義性的本質(zhì)是在文法中缺少對文法符號優(yōu)先級和結(jié)合性的限制,從而使得一個句子可以推導(dǎo)出多于一棵分析樹。 二義性的消除: 改寫二義文法為非二義文法; 對文法符號施加優(yōu)先級與結(jié)合性的限制,使得分析的每一步有唯一選擇。,13, 自上而下分
7、析,分析方法:推導(dǎo),從上到下構(gòu)造分析樹,是一種預(yù)測的、試探的方法; 對文法的要求:沒有公共左因子和左遞歸; 遞歸下降子程序方法:匹配終結(jié)符,展開非終結(jié)符(子程序調(diào)用) 預(yù)測分析表方法: 工作方式與過程:PDA(DPDA)、格局與改變格局的動作; 預(yù)測分析表的構(gòu)造:FIRST集合與FOLLOW集合, FIRST與FOLLOW的計算; LL(1)文法及其判別:預(yù)測分析表中沒有多重定義條目(推論3.2)。,14, 自下而上分析,分析方法:歸約(推導(dǎo)的逆過程),從葉子到根構(gòu)造分析樹; 基本概念:短語、直接短語、句柄、歸約、規(guī)范歸約; 采用的方法: 用移進-歸約方法實現(xiàn)剪句柄(格局中的兩個關(guān)鍵動作),關(guān)
8、鍵問題是如何確定棧頂已經(jīng)形成句柄,當(dāng)句柄形成時,如何判定采用哪個產(chǎn)生式進行規(guī)約; 識別活前綴的DFA:活前綴與LR(0)項目(NFA狀態(tài)),拓廣文法與子集法構(gòu)造DFA;,一個產(chǎn)生式是一個識別活前綴的NFA 一個LR(0)項目是NFA的一個狀態(tài),15, 自下而上分析(續(xù)),DFA分析輸入序列:有效項目、可移進項目、可規(guī)約項目、移進/歸約沖突、歸約/歸約沖突;解決沖突的方法SLR(1):簡單向前看一個終結(jié)符(計算歸約項非終結(jié)符的FOLLOW,與可移進終結(jié)符比較);,移進-歸約分析表:動作表轉(zhuǎn)移表; LR文法與LR分析:LR(0)、SLR(1)、LALR(1)、LR(1)。,習(xí)題與試題(略過語法制導(dǎo)
9、翻譯),16,第四章 語法制導(dǎo)翻譯生成中間代碼,本章討論程序設(shè)計語言的靜態(tài)語義分析,并且在語法分析的基礎(chǔ)上生成中間代碼,采用的基本方法是語法制導(dǎo)翻譯。 與前兩章詞法分析和語法分析不同的是,詞法分析和語法分析的討論側(cè)重于理論,而本章則側(cè)重于結(jié)合程序設(shè)計語言的實際例子討論語言結(jié)構(gòu)的具體翻譯方法和一些實用的技術(shù)。,主要內(nèi)容 語法制導(dǎo)翻譯與中間代碼 符號表的組織 聲明語句的翻譯 可執(zhí)行語句的翻譯,17, 語法制導(dǎo)翻譯與中間代碼,語法與語義:語法和語義描述語言的不同方面、二者之間沒有嚴(yán)格界線、語義形式化描述的困難性; 屬性:用屬性表示語義特征(語義值),屬性的計算和屬性之間的依賴關(guān)系; 語法制導(dǎo)翻譯:
10、為產(chǎn)生式配上“語義規(guī)則”并在適當(dāng)?shù)臅r刻執(zhí)行;語義規(guī)則的兩種形式; 分析方法與翻譯方案:以語法分析為基礎(chǔ),分析樹的作用; 中間代碼:為什么生成中間代碼,中間代碼的特征,各種形式的中間代碼及它們之間的關(guān)系,最常用中間代碼形式。,18, 聲明語句的翻譯 定義與聲明:類型定義與變量聲明,過程定義與過程聲明 變量聲明:符號表信息的填寫 過程聲明: 左值與右值 參數(shù)傳遞:參數(shù)傳遞的不同形式 名字的作用域:靜態(tài)作用域與最近嵌套原則 聲明中作用域信息的保存,符號表的條目與信息的存儲(關(guān)鍵字內(nèi)容) 作用域信息的保存(棧結(jié)構(gòu)) 線性表與散列表, 符號表的組織,19, 可執(zhí)行語句的翻譯,簡單算術(shù)表達式和賦值句的翻譯
11、:語法制導(dǎo)翻譯的設(shè)計,類型轉(zhuǎn)換; 數(shù)組元素的引用:數(shù)組元素地址計算的遞推公式,地址的可變部分與不變部分,可變部分計算的語法制導(dǎo)翻譯; 布爾表達式短路計算的翻譯:為什么需要短路計算,短路計算的控制流,真出口與假出口,真值鏈與假值鏈; 控制語句的翻譯:控制語句的分類,無條件轉(zhuǎn)移與條件轉(zhuǎn)移,拉鏈/回填技術(shù);,習(xí)題與試題,認(rèn)真復(fù)習(xí),重點是掌握基本概念?;靖拍钫莆樟?,相當(dāng)一部分試題的解就有了。 習(xí)題與試題的目的區(qū)別:習(xí)題的目的是通過反復(fù)的練習(xí)理解、掌握所學(xué)知識,會有不少繁、難、大量步驟的題;試題的目的是考察對本課程綜合掌握的情況,特點是短時間內(nèi)覆蓋大量內(nèi)容。太繁瑣步驟或太難等需要耗費大量時間的題是不可
12、能出的,大部分應(yīng)該是基本概念題,但也會有一些綜合性的題目。 自己要會辨別什么是主要的什么是次要的,抓什么丟什么?!盎靖拍钜獓?yán)謹(jǐn)(清楚),基本方法要靈活”。 總之一句話,學(xué)習(xí)方法的掌握是個人努力的結(jié)果,單純靠別人教是學(xué)不會的。,21,關(guān)于考試,題目類型:簡答題(25分)、填空題(25分)、計算題(50分) 考試范圍:14章講過的內(nèi)容 側(cè)重考察:基本概念與基本方法的掌握,易犯的錯誤 不認(rèn)真審題(對題目的要求理解錯誤:意思理解錯、難題想容易、容易題想難。關(guān)鍵問題是基本概念不清楚) 所答非所問(例如:沒有要求LL分析卻將文法改為LL的) 畫蛇添足(例如:僅問有無沖突卻將分析表先構(gòu)造出來) 偷工減料(
13、例如:有若干問,僅回答部分或問題僅答一半),警示 千萬不要作弊!命運掌握在自己的手中!,實際試題舉例一、簡答題,1(2分)有哪些方法可以去除文法的二義性。 2(2分)寫出 -((a+b)*c)+d 的后綴式。 3(4分)試證明正規(guī)式(ab)*a與a(ba)*是等價的。,1 (1)改寫文法 (2)規(guī)定文法符號的優(yōu)先級和結(jié)合性 2 ab+c*d+(或ab+c*-d+) 3 證明: 考慮L((ab)*a)中的任意一個串a(chǎn)babab...aba, 由串連接的結(jié)合性可得:a(ba)(ba)(b...a)(ba),它恰好是L(a(ba)*),即L((ab)*a)= L(a(ba)*)。 也可以用歸納
14、法證明(提示:以ab重復(fù)0次、1次作為歸納基礎(chǔ),假設(shè)ab重復(fù)n次成立,證明ab重復(fù)n+1次也成立)。,二、填空題(30分),1(6分)編譯程序的基本組成有:詞法分析、 、 、中間代碼生成、 、 、 和 。 2(1分)正規(guī)式r和s等價說明 相同。 3(2分)不含子串baa的所有a、b符號串的正規(guī)式是 。 4(4分) 已知文法G定義如下: SeT|RT TDR| RdR| Da|bd 則FIRST(S)= ,F(xiàn)IRST(D)= ,F(xiàn)IRST(T)= ,F(xiàn)IRST(R)= 。,1 語法分析、語義分析、代碼優(yōu)化、目標(biāo)代碼生成、符號表管理和出錯處理 2 r和s表示的正規(guī)集 3 a
15、*(b|ba)* 4 FIRST(S)= e,d,,a,b ,F(xiàn)IRST(D)= a,b ,F(xiàn)IRST(T)= ,a,b ,F(xiàn)IRST(R)= d, 。,三、計算題(1),1(13分)已知一個NFA如圖。 (a)(4分) 用自然語言簡要敘述該自動機所識別的語言 的特點,列舉兩個它可識別的串。 (b)(3分)寫出與該自動機等價的正規(guī)式r。 (c)(6分)用子集法構(gòu)造識別r的最小DFA。,解:,含有至少兩個連續(xù)b的a、b串,例如bb、bbb等。 r=(a|b)*bb(a|b)*。 直接用狀態(tài)轉(zhuǎn)換矩陣構(gòu)造: 初態(tài):0 子集法得:(2是終態(tài)),令: 0=A,0,1=B,0,1,2=C,0,
16、2=D 得:,最小化DFA得:(C和D不可區(qū)分),三、計算題(2),2(15分)有文法G和G的語法制導(dǎo)翻譯如下: EE1*T E.place=newtemp; emit(*,E1.place,T.place,E.place; | T E.place=T.place; TT1+F T.place=newtemp; emit(+,T1.place,F.place,T.place; | F T.place=F.place; F(E) F.place=E.place; | id F.place=id.name; (a)(4分)求句型(T+F)*id 的短語、直接短語以及句柄; (b)(4分)根據(jù)語法制
17、導(dǎo)翻譯寫出句子a*b+c*d的中間代碼; (c)(3分)若a=3,b=5,c=7,d=8,請給出中間代碼計算結(jié)果; (d)(4分)將文法G簡化為:EE*T|T,TT+F|F,F(xiàn)id。給出它的識別活前綴的DFA。,解:,(a) 短語:(T+F)*id、(T+F)、T+F、id 直接短語:T+F、id 句柄:T+F (b) a*b+c*d的中間代碼:(1) (+, b, c, t1) (2) (*, a, t1, t2) (3) (*, t2, d, t3) (c) 計算結(jié)果:t3=288 (d) 識別活前綴的DFA:,,28,部分習(xí)題解答,習(xí)題2.4,寫出下述語言的正規(guī)式描述 (1)由偶數(shù)個0
18、和奇數(shù)個1構(gòu)成的所有01串 (2)所有不含子串011的01串 (3)每個a后面至少緊隨兩個b的ab串 (4)C的形如/**/ 的注釋。其中代表不含*/的字符串,思路:分析題意,從最簡單的例子考慮,然后找出統(tǒng)一規(guī)律 (1)的解題步驟: 1. 最簡單的符合要求的串:1、010(還有100、001、111等) 2. 所有01均為偶數(shù)的串: A=((00|11)|(01|10)(00|11)*(10|01))* 3. 符合要求的所有串:A1A、A0A1A0A(為什么沒有后三個?) 結(jié)果:A1A | A0A1A0A 思考:識別它的DFA又應(yīng)該如何構(gòu)造?,(4)C的形如/**/ 的注釋。其中代表不含*/
19、的字符串,思路:注釋中若遇到*:若后邊是/則結(jié)束注釋否則仍然是注釋 步驟: 1. 注釋串是空; 2. 考慮沒有*的注釋; 3. 考慮含*的注釋 結(jié)果:(4) /* (*|*/)* */,(2)所有不含子串011的01串:1*(01|0)* (3)每個a后面至少緊隨兩個b的ab串:(b|abb)*,習(xí)題2.10,有一NFA的狀態(tài)轉(zhuǎn)換矩陣下表,其中S為初態(tài),D為終態(tài),求出它的最小DFA 用正規(guī)式描述DFA所接受的語言,問題:根據(jù)DFA寫出對應(yīng)的正規(guī)式,通常的考慮和步驟是什么?,再重復(fù)一遍: 正規(guī)式、DFA是從兩個不同的側(cè)面表示一個集合(即正規(guī)集)。所以,根本的方法是把正規(guī)集作為橋梁,先分析清楚DF
20、A識別出的是一個什么集合,然后再設(shè)計此集合的正規(guī)式。反之亦然。,習(xí)題2.10(2)的解,,該DFA從初態(tài)到終態(tài)有三條路徑:b|c|a(a|c)*b,而且是這三條路徑的至少一次重復(fù),故正規(guī)式為:(b|c|a(a|c)*b)+,習(xí)題3.7,設(shè)計一文法G,使得L(G)=|是不以0開始的正奇數(shù) 思路:首先根據(jù)集合的描述設(shè)計幾個句子,然后從句子中找出規(guī)律(或共性),把它們的性質(zhì)用產(chǎn)生式表示出來。 解:正規(guī)式: 個位:13579 個位以上:0-9* 最高位:1-9 三段連起來:1-90-9*13579 兩種情況: 1-90-9*13579 | 13579 產(chǎn)生式: SACB|B A1|2|3|4|5|6|
21、7|8|9 B1|3|5|7|9 C|0C|AC,習(xí)題 3.17,對于文法G3.4和它所產(chǎn)生的句子-id+id*id 和 -(id+id)*id E E+T|T T T*F|F (G3.4) F (E) |-F|id (1)構(gòu)造基于LR(0)項目集的識別活前綴的DFA (2)指出DFA中所有含有沖突的項目集,并說明這些沖突可以用SLR(1)方法解決; (3)構(gòu)造文法G3.4的SLR(1)分析表 (4)用分析表對句子-id+id*id 和 -(id+id)*id進行分析(以格局變化的方式) (5)根據(jù)(4)的分析給出-id+id*id的分析樹和剪句柄的過程 解:作為練習(xí),本題的每一步都是必要
22、的。相對來說分析表的構(gòu)造并不重要。,習(xí)題 3.17(解),(1)構(gòu)造基于LR(0)項目集的識別活前綴的DFA (2)指出DFA中所有含有沖突的項目集,并說明這些沖突可以用SLR(1)方法解決;,沖突的項目集:I2,I11 計算FOLLOW(E),看*是否在其中(略),構(gòu)造SLR(1)分析表的方法:,1可移進項直接從DFA上看: actionI,a:=sjgotoI,A:=k 2可歸約項分兩步走:若在I狀態(tài)中有A., 首先計算:FOLLOW(A), 然后填寫:actionI,b:=Ri 其中:bFOLLOW(A)且A是第i個產(chǎn)生式。,,習(xí)題 4.4,假定下述程序分別采用值調(diào)用,引用調(diào)用,復(fù)寫-
23、恢復(fù)和換名調(diào)用,請給出它們的打印結(jié)果。 program main(input output); procedure p(x,y,z); begin y:=y+1; z:=z+x end; begin a:=2; b:=3; p(a+b, a, a); print a end; 兩種解題的思路: 1. 把自己當(dāng)作計算機,按照參數(shù)傳遞的實現(xiàn)方式“運行”一遍程序,得出結(jié)果; 2. 找臺機子把程序敲進去試試(輔助手段) 困惑的是:表達式a+b如何作為引用調(diào)用和復(fù)寫-恢復(fù)的實參? 解決方案:忽略返回值問題。其實這一思想可以推廣到任何不支持某種方式的情況(放心,考試中不會有這種很困惑的問題) 具體結(jié)
24、果(略),38,To know how to do something well is to enjoy it.戰(zhàn)略上藐視敵人,戰(zhàn)術(shù)上重視敵人。 The trees that are slow to grow bear the best fruit.,認(rèn)真復(fù)習(xí)、迎接考試 (結(jié) 束 2010年6月25日),其他問題及相應(yīng)解答習(xí)題2.9,用自然語言給出下述正規(guī)式所描述的語言,并構(gòu)造他們的最小DFA:10*1(0|1)*011(0|1)*,說明:所謂用自然語言描述就是解釋字符串的性質(zhì),一般情況下是已經(jīng)有了形式化描述。 解: 10*1:首尾是1中間有零或若干個0的01串。 (0|1)*011(0|1)
25、* :至少含一個011的01串。 注意:絕對不允許用正規(guī)式表示,因為正規(guī)式是已知條件,習(xí)題3.6,設(shè)字母表=0,1,設(shè)計下述語言的文法。對于正規(guī)語言, 可用正規(guī)式表示。 (1)每個0后面至少跟隨一個1的字符串 (2)0和1個數(shù)相等的字符串 (3)0和1個數(shù)不相等的字符串 (4)不以011作為子串的字符串,解:(1)(01|1)* (2)S0S1S|1S0S| (3)SA0A|B1B A0A1A|1A0A|0A| B0B1B|1B0B|1B| (4)1*(0|01)*,習(xí)題3.22,構(gòu)造SLR(1)分析表的算法3.9基于的假設(shè)是LR(0)項目集中可能有 沖突。如果基于的假設(shè)是LR(0)項目集
26、中沒有沖突,則構(gòu)造方法 可以簡化(無需計算FOLLOW集合),得到的是LR(0)分析表。試 修改算法3.9成為構(gòu)造LR(0)分析表的算法。,1.if DFA中有不能解決的移進/歸約和歸約/歸約沖突 then error; else for 每個狀態(tài)轉(zhuǎn)移Dtrani,x=j loop if xT then actioni,x:=Sj; else gotoi,x:=j; end if; end loop; for 狀態(tài)i的每個可歸約項A. loop if S S. then actioni, #:=acc; else for 每個aFOLLOW(A)
27、loop actioni,a:=Rk; end loop; end if; end loop; end if;,每個終結(jié)符a,,,A.,狀態(tài)i:,B.,,,,x,,,習(xí)題4.9,設(shè)整型數(shù)組聲明的形式為int Ad1,d2,,d3,并且假設(shè)每個整型 數(shù)占據(jù)4個字節(jié)。 (1)試導(dǎo)出以列為主存儲時計算c和v的遞推公式; (2)*設(shè)計數(shù)組聲明的語法制導(dǎo)翻譯(包括語法和語義),以使得 在對數(shù)組聲明從左到右分析的同時,正確填寫符號表和內(nèi)情向量的 所有信息。,解: (1)n=1時,addr(Ai1)=a+(i1-1)*4 n=2時,addr(Ai1,i2)=a+(i2-1)*d1*4+(i1-1)*
28、4 addr(Ai1,i2,,in)=???,n維數(shù)組元素的地址計算,addr(Ai1,i2,...,in) =a+((in-1)*dn-1*dn-2*...*d1+(in-1-1)*dn-2*dn-3*...*d1+...+ (i1-1))*w =a-(dn-1*dn-2*...*d1+dn-2*dn-3*...*d1+...+d1+1)*w +(in*dn-1*dn-2*...*d1+in-1*dn-2*dn-3*...*d1+...+i2*d1+i1)*w =ac*w+v*w 其中:,c=dn-1*dn-2*dn-3*d1+dn-2*dn-3*dn-4*d1+*dn-3*dn-4*dn-
29、5*d1+d1+1 =(dn-1+1)*dn-2*...*d1+dn-3*dn-4...*d1+...+d1+1 =((dn-1+1)*dn-2+1)*dn-3*dn-4...*d1+...+d1+1 ...... =(...((dn-1+1)*dn-2+1)*dn-3...+1)*d1+1,同理: v = (...((in*dn-1+in-1)*dn-2+in-2)*dn-3...+i2)*d1+i1,n維數(shù)組元素的地址計算(續(xù)1),c=(...((dn-1+1)*dn-2+1)*dn-3...+1)*d1+1 v=(...((in*dn-1+in-1)*dn-2+in-2)*dn-3..
30、.+i2)*d1+i1,令: v0 = in 則: v1 = in*dn-1+in-1 = v0*dn-1+in-1 v2 = (v0*dn-1+in-1)*dn-2+in-2 = v1*dn-2+in-2 ...... 于是有: v0 = in vj = vj-1*dn-j+in-j (j=1,2,..., n-1) 同理可得: c0 = 1 cj = cj-1*dn-j+1 (j=1,2,..., n-1),(2)要適合LR分析,應(yīng)該將文法改成右遞歸的。,修改文法以適應(yīng)遞推公式的同步計算: A V := E(1) V id(2) | N EL(3) N id(4) EL E (5
31、) | E , EL(6) E E + E(7) | ( E )(8) | V(9),習(xí)題4.10,教材中的語法制導(dǎo)翻譯將表達式Eid1 32、行:將“Msi,sj”改為“Msi,ch” 將“...是從狀態(tài)si到狀態(tài)sj的邊上的標(biāo)記ch(或)?!备臑椤?..是從狀態(tài)si經(jīng)ch(或)到達的下一狀態(tài)sj?!?24頁:倒11行:將“Msi,sj”改為“Msi,ch” 25頁:圖2.7最后一行狀態(tài)“000”應(yīng)改為“012” 34頁:算法2.6方法2、3行:將“從si出發(fā)”改為“從si出發(fā)”,將“稱為D的初態(tài)”改為“稱為D的初態(tài)” 45頁:10行:將“N是僅出現(xiàn)”改為“僅N是可以出現(xiàn)” 70頁:例3.23:將FOLLOW集合中的“”改為“” 75頁:到4行:將“文法G3.13”改為“文法G3.12” 81頁:圖3.22:將I0中的“T.-F”改 33、為“F.-F”,47,附件1:教材與習(xí)題答案中的錯誤(續(xù)1),教材 100頁:圖4.2:將A.code=(3)“(x,:=,(2))”改為“(:=,x,(2))” 129頁:例4.17的中間代碼:將“t3:=+r t4”改為“t3:=C +r t4” 133頁:例4.18的中間代碼:將“t5:=t3*t4”改為“t5:=t3*4”,將“V7”改為“V5” 134頁:圖4.16:將“V5、V6、V7”分別改為“V6、V7、V5” 136頁:4.7.3上邊一行:將“ptr.data/=x”改為“ptr.data=x” 138頁:例4.20:將代碼序列中的“L1”改為“L2”, “L2”改為“L1” 144頁:例4.23上邊一行:將“mklist”改為“mkchain”,習(xí)題解答 4頁:2.4(1):A1A|A0A1A0可以簡化為A(1|010)A 32頁:缺少3.19(1)的解答 32頁:到2行:將兩處“I10”均改為“I11”,將“I12”改為“I13”,
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案