哈工大 編譯原理習題.ppt

(29頁)

'哈工大 編譯原理習題.ppt'
一、有一個用于交換兩個變量內容的子程序,其程序如下:Procedure SWAP(x,y)Begin T=X; X=Y; Y=T; RETURNEND假定主程序使用call SWAP(I,K(I))語句,進入子程序之前I=5,K(I)=K(5)=6,請根據參數傳遞方式,寫出結果。語句\參數 形式參 傳值 傳地址 傳名T=X T=5 T=5 T=X右=5X=Y 形參 X=6 實參 I=5Y=TRETURN主程序所得結果例1:有文法G(S) S →BA A →BS A → d B →aA B → bS B → c 試寫出其FIRST集FOLLOW(B)=FIRST(A) ∪FIRST(S) ={a,b,c,d}FOLLOW(S)= FOLLOW(A) ∪ FOLLOW(B) ∪{$} ={a,b,c,d, $}FOLLOW(A)= FOLLOW(B) ∪FOLLOW(S) ={a,b,c,d, $}二、文法G(S) S→S*aT|aT T →+aT|ε消去左遞歸,求FIRST和FOLLOWS →aTS’S’ →*aTS’| εT →+aT| εFIRST(S)={a} FIRST(S’)={*, ε} FIRST(T)={+ ,ε}FOLLOW(S)={$} FOLLOW(S’)={$} FOLLOW(T)={*,$} * + a $S S →aTS’S’ S’ →*aTS’ S’ →εT T →εT T →+aT T →ε三、文法G(S):S →(L)|aS|aL →L,S|S1)畫出句型 (S,(a))的語法樹2)求所有短語、直接短語、句柄和素短語短語:a、S、(a)、S,(a)、(S,(a))直接短語:S、a句柄:S素短語:a二、文法G(S) S→S*aT|aT T →+aT|ε消去左遞歸,求FIRST和FOLLOWS →aTS’S’ →*aTS’| εT →+aT| εFIRST(S)={a} FIRST(S’)={*, ε} FIRST(T)={+ ,ε}FOLLOW(S)={$} FOLLOW(S’)={$} FOLLOW(T)={*,$} * + a $S S →aTS’S’ S’ →*aTS’ S’ →εT T →εT T →+aT T →ε四、文法G(S): S →(A)|aA→A+S|S1)求各非終結符的FIRSTVT和LASTVT2)構造優先矩陣解:FIRSTVT(S)={a,(} FIRSTVT(A)={+,a,(} LASTVT(S)={a,)} LASTVT(A)={+,a,)} a + ( )a > >+ ( < < >五、給出文法G(E):E→ E+TE→T T→T*FT→F F→(E)F→I請構造文法SLR(1)的分析表解答:拓廣文法如下:S→EE→E+TE→T T→T*FT→F F→(E)F→I 識別活前綴的DFAS→ E.E→ E.+TS→ .EE→ .E+TE→ .TT→ .T*FT→ .FF→ .(E)F→ .iE→ T.T→ T.*FF → i.T → F.F → (.E)E → .E+TE → .TT → .T*FT → .FF → .(E)F → .iE → E+.TT → .T*FT → .FF → .(E)F → .iF → (E.)E → E.+TT → T*.FF → .(E)F → .iE → E+T.T → T.*FF →(E).T → T*F.I1I10I11I8I7I6I4I3I5I2I0I9EiF(T+*iFE(TiTFi(F)+*(FOLLOW(S)={#}FOLLOW(E)={+,#,)}FOLLOW(T)={+,),#,*}FOLLOW(F)={+,),#,*}  各符號的FOLLOW集:文法G’的SLR(1)分析表如下:   STATEACTIONGOTO i + * ( ) # E T F0S5  S4  1231 S6   ACC   2 R2S7 R2R2   3 R4R4 R4R4   4S5  S4  8235 R6R6。省略部分。R5R5 R5R5    六、有文法:S→a|(L)L → L,S|S1.構造(a,((a,a),(a,a)))的分析樹2。構造LL(1)分析表3。構造算符優先分析表4。構造LL(0)分析表5。構造SLR(1)分析表消除左遞歸:S→a|(L)L → SL‘L →,SL’| εFIRST(S)={,(}FIRST(L)FIRSTVT(S)={a,(}FIRSTVT(L)={a,(,,}LASTVT(S)={),a}LASTVT(L)={),a,,} a ( ) , $A > > >( < < = > >, < >$ < <七、考慮下面的文法,E →E+TE →TT →TFT →FF →F*F →aF →b試為該文法構造SLR分析表然后構造其識別活前綴的DFA解:首先將原文法進行拓擴0.S →E1.E →E+T2.E →T3.T →TF4.T →F5.F →F*6.F →a7.F →bT →F.F →F.*F →a. E →T.T→T.FS →.EF →.aF →.bE →.E+TE →.TT →.TFT →.FF →.F*I0I4I3I2S →E.E →E.+TEI1TF →.F*F →.bF →.aFaF →b.bI5E →E+.TT →.TFT →.FF →.F*F →.bF →.a+I6FT→TF.F →F.*I74ab5F →F*.*I8TE →E+T.T→T.FF →.F*F →.bF →.aI9F7F34a5b*ba求出各非終結符的FOLLOW集FOLLOW(S)={$}FOLLOW(E)={$ ,+}FOLLOW(T)={$,+, a,b}FOLLOW(E)={$,+, a,b ,*}     STATE a b + * $ E F T 0 1 2 3 4 5 6 7 8 9 1 32 S4 S5 S6 acc 7 S5 r2 S8 r6 r7 9 3 S4 S5 r3 r3 r3 r1 r4 r4 r4 S4 r2r4r6r6r6r6r7r7r7r7r3 r5 r5 r5 r5 r5 r17S8S4S5八、文法: S→BBB →aBB→b1.構造識別活前綴的DFA2.構造其SLR分析表十、試給出下述語句的四元式序列1、if W<1 then A=B*C+D else repeat A=A-1 until A<02、while A<C and B<D do if A=1 then C=C+1 else if A<D then A=A+2九、試給出語句repeat S until E的翻譯方案十一、一個Pascal語言程序在執行某一時刻時,其活動記錄和Display表如圖所示:D[4]D[3]D[2]D[1]R活動記錄S活動記錄Q活動記錄P活動記錄主程序活動記錄1、試問此時正在執行的調用有哪些?2、指出P、Q、R、S它們之間的嵌套關系1、主程序 → P → Q → S →R2、program main procedure P procedure Q procedure R begin end procedure S begin end begin end begin end Begin end十二、考慮下面的C的程序Main(){char *cp1=“12345”,*cp2=“abcdefghij”; strcpy(cp1,cp2);Printf(“cp1=%s\n cp2=%s\n”,cp1,cp2);}執行結果:Cp1=abcdefghijCp2=ghij問:為什么cp2所指的串被修改了?1 2 3 4 5  \0 a b c d e f g h I j  \0程序運行時,運行棧中字符指針cp1,cp2所指的空間格局為: 執行語句strcpy(cp1,cp2)后,cp1,cp2所指的空間格局為:a b c d e  f g h I j \0 f g h I j  \0cp1cp2 cp1cp2十三、有如下三地址碼: Read(n) I=1 Fen=1L1: if I<=n goto L2 goto L3L2: t1=fen*I Fen=t1 I=I+1 Goto L1L3:write(fen)1、將代碼劃分為基本塊2、構造相應的程序流圖 Read(n) I=1 Fen=1if I<=n goto L2goto L3t1=fen*I Fen=t1 I=I+1Goto L1write(fen)
關 鍵 詞:
習題 編譯 原理
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:哈工大 編譯原理習題.ppt
鏈接地址: http://www.476824.live/p-51497350.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 实时股票行情查询 今日股市大盘最新消息 幸运赛车彩票天天计划 云南快乐10分开奖直播 青海11选5的台子 亿海智投 排列七基本走势图 秒速赛车开奖结果盛兴 5分快3开奖是假的吗 北京pk10骗局