资源描述:
《哈工大 编译原理习题.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、有一个用于交换两个变量内容的子程序,其程序如下:ProcedureSWAP(x,y)BeginT=X;X=Y;Y=T;RETURNEND假定主程序使用callSWAP(I,K(I))语句,进入子程序之前I=5,K(I)=K(5)=6,请根据参数传递方式,写出结果。语句参数形式参传值传地址传名T=XT=5T=5T=X右=5X=Y形参X=6实参I=5Y=TRETURN主程序所得结果例1:有文法G(S)S→BAA→BSA→dB→aAB→bSB→c试写出其FIRST集FOLLOW(B)=FIRST(A)∪FIRST(S)={a,b,c,d}FOLLOW(S
2、)=FOLLOW(A)∪FOLLOW(B)∪{$}={a,b,c,d,$}FOLLOW(A)=FOLLOW(B)∪FOLLOW(S)={a,b,c,d,$}二、文法G(S)S→S*aT
3、aTT→+aT
4、ε消去左递归,求FIRST和FOLLOWS→aTS’S’→*aTS’
5、εT→+aT
6、εFIRST(S)={a}FIRST(S’)={*,ε}FIRST(T)={+,ε}FOLLOW(S)={$}FOLLOW(S’)={$}FOLLOW(T)={*,$}*+a$SS→aTS’S’S’→*aTS’S’→εTT→εTT→+aTT→ε三、文法G(S):S→(L)
7、
8、aS
9、aL→L,S
10、S1)画出句型(S,(a))的语法树2)求所有短语、直接短语、句柄和素短语短语:a、S、(a)、S,(a)、(S,(a))直接短语:S、a句柄:S素短语:a二、文法G(S)S→S*aT
11、aTT→+aT
12、ε消去左递归,求FIRST和FOLLOWS→aTS’S’→*aTS’
13、εT→+aT
14、εFIRST(S)={a}FIRST(S’)={*,ε}FIRST(T)={+,ε}FOLLOW(S)={$}FOLLOW(S’)={$}FOLLOW(T)={*,$}*+a$SS→aTS’S’S’→*aTS’S’→εTT→εTT→+aTT→ε四、文法G
15、(S):S→(A)
16、aA→A+S
17、S1)求各非终结符的FIRSTVT和LASTVT2)构造优先矩阵解:FIRSTVT(S)={a,(}FIRSTVT(A)={+,a,(}LASTVT(S)={a,)}LASTVT(A)={+,a,)}a+()a>>+<><>(<<<=)>>五、给出文法G(E):E→E+TE→TT→T*FT→FF→(E)F→I请构造文法SLR(1)的分析表解答:拓广文法如下:S→EE→E+TE→TT→T*FT→FF→(E)F→I识别活前缀的DFAS→E.E→E.+TS→.EE→.E+TE→.TT→.T*FT→.FF→.(E)F→.iE→T
18、.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)分析表如下:STATEA
19、CTIONGOTOi+*()#ETF0S5S41231S6ACC2R2S7R2R23R4R4R4R44S5S48235R6R6R6R66S5S4937S5S4108S6S119R1S7R1R110R3R3R3R311R5R5R5R5六、有文法:S→a
20、(L)L→L,S
21、S1.构造(a,((a,a),(a,a)))的分析树2。构造LL(1)分析表3。构造算符优先分析表4。构造LL(0)分析表5。构造SLR(1)分析表消除左递归:S→a
22、(L)L→SL‘L→,SL’
23、εFIRST(S)={,(}FIRST(L)FIRSTVT(S)={a,(}FIRSTVT(
24、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→.aF
25、aF→b.bI5E→E+.TT→.TFT→.FF→.F*F→.bF→.a+I6F