编译原理汇总 2.docx
- 文档编号:5268154
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:25
- 大小:154.28KB
编译原理汇总 2.docx
《编译原理汇总 2.docx》由会员分享,可在线阅读,更多相关《编译原理汇总 2.docx(25页珍藏版)》请在冰豆网上搜索。
编译原理汇总2
《编译原理》考试试题及答案(汇总)
2.考虑文法G[S]:
S→(T)|a+S|a
T→T,S|S
消除文法的左递归及提取公共左因子。
解:
消除文法G[S]的左递归:
S→(T)|a+S|a
T→ST′
T′→,ST′|ε
提取公共左因子:
S→(T)|aS′
S′→+S|ε
T→ST′
T′→,ST′|ε
3.试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。
解:
wab+cde10-/+8+*+
4.按照三种基本控制结构文法将下面的语句翻译成四元式序列:
while(A { if(A≥1)C=C+1; elsewhile(A≤D) A=A+2; }。 解: 该语句的四元式序列如下(其中E1、E2和E3分别对应A<C∧B<D、A≥1和A≤D,并且关系运算符优先级高): 100(j<,A,C,102) 101(j,_,_,113) 102(j<,B,D,104) 103(j,_,_,113) 104(j=,A,1,106) 105(j,_,_,108) 106(+,C,1,C) 107(j,_,_,112) 108(j≤,A,D,110) 109(j,_,_,112) 110(+,A,2,A) 111(j,_,_,108) 112(j,_,_,100) 113 五.计算题(10分) 四、简答题: 1.写一个文法G,使其语言为不以0开头的偶数集。 3.已知文法G(S) S→bAa A→(B|a B→Aa) 写出句子b(aa)b的规范归约过程。 4.考虑下面的程序: … procedure p(x,y,z); begin y: =x+y; z: =z*z; end begin A: =2; B: =A*2; P(A,A,B); PrintA,B end. 试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出A,B的值是什么? 7.已知文法G(S) S→BA A→BS|d B→aA|bS|c 的预测分析表如下 a b c d # S S→BA S→BA S→BA A A→BS A→BS A→BS A→d B B→aA B→bS B→c 给出句子adccd的分析过程。 8.写一个文法G,使其语言为L(G)={albmclanbn|l>=0,m>=1,n>=2} 9.已知文法G(S): S→a|(T) T→T,S|S 的优先关系表如下: 关系 a ( ) a - - .> .> ( <. <. =. <. ) - - .> .> <. <. .> .> 请计算出该优先关系表所对应的优先函数表。 15.考虑下面的程序: … procedurep(x,y,z); begin y: =y+z; z: =y*z+x end; begin a: =2; b: =3; p(a+b,b,a); printa end. 试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a的值是什么? 16.写出表达式a+b*(c-d)/e的逆波兰式和三元序列。 20.考虑下面的程序: … procedure p(x,y,z); begin y: =y+2; z: =z+x; end begin a: =5; b: =2; p(a+b,a-b,a); printa end. 试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a的值是什么? 22.写出表达式a: =(b+c)*e+(b+c)/f的逆波兰式和三元序列。 24.已知文法G[S] S→S*aF|aF|*aF F→+aF|+a 消除文法左递归和提公共左因子。 25.符号表的作用是什么? 符号表查找和整理技术有哪几种? 五、计算题: 1.设文法G(S): S→^|a|(T) T→T,S|S ⑴消除左递归; ⑵构造相应的FIRST和FOLLOW集合; ⑶构造预测分析表 3.设文法G(S): S→(T)|a T→T+S|S (1)计算FIRSTVT和LASTVT; (2)构造优先关系表。 5.把语句 whilea<10do ifc>0thena: =a+1 elsea: =a*3-1; 翻译成四元式序列。 6.设有基本块 D: =A-C E: =A*C F: =D*E S: =2 T: =A-C Q: =A*C G: =2*S J: =T*Q K: =G*5 L: =K+J M: =L 假设基本块出口时只有M还被引用,请写出优化后的四元序列。 7.已知文法G(S) S→a|^|(T) T→T,S|S (1)给出句子(a,(a,a))的最左推导; (2)给出句型((T,S),a)的短语,直接短语,句柄。 9.已知文法G(S) S→aAcBe A→Ab|b B→d (1)给出句子abbcde的最左推导及画出语法树; (2)给出句型aAbcde的短语、素短语。 10.设文法G(S): S→(T)|aS|a T→T,S|S ⑴消除左递归和提公共左因子; ⑵构造相应的FIRST和FOLLOW集合; ⑶构造预测分析表。 11.把语句 ifX>0∨Y<0 thenwhileX>0doX: =A*3 elseY: =B+3; 翻译成四元式序列。 12.已知文法G(S) E→E+T|T T→T*F|F F→(E)|i (1)给出句型(i+i)*i+i的最左推导及画出语法树; (2)给出句型(E+T)*i+F的短语,素短语和最左素短语。 13.设文法G(S): S→T|S∨T T→U|T∧U U→i|-U (1)计算FIRSTVT和LASTVT; (2)构造优先关系表。 《编译原理》期末试题(三) 2、写出表达式a=b*c+b*d对应的逆波兰式、四元式序列和三元式序列。 答: 逆波兰式: abc*bd*+: = 四元式序列: 三元式序列: OPARG1ARG2 (1)(*,b,c,t1) (1)(*b,c) (2)(*,b,d,t2) (2)(*b,d) (3)(+,t1,t2,t3)(3)(+ (1), (2)) (4)(: =,t3,/,a)(4)(: =(3),a) 3、对于文法G(S): 答: 1) 2)短语: Ma),(Ma),b(Ma)b 直接短语: Ma)句柄: Ma) 2233 三、 设将文法G改写成等价的LL (1)文法,并构造预测分析表。 G: S→S*aT|aT|*aT; T→+aT|+a 解: 消除左递归后的文法G’: S→aTS’|*aTS’ S’→*aTS’|ε T→+aT|+a 提取左公因子得文法G’’: S→aTS’|*aTS’ S’→*aTS’|ε T→+aT’ T’→T|ε Select(S→aTS’)={a} Select(S→*aTS’)={*} Select(S→aTS’)∩Select(S→*aTS’)=Ф Select(S’→*aTS’)={*} Select(S’→ε)=Follow(s’)={#} Select(S’→*aTS’)∩Select(S’→ε)=Ф Select(T→+aT’)={+} Select(T’→T)=First(T)={+} Select(T’→ε)=Follow(T’)={*,#} Select(T’→T)∩Select(T’→ε)=Ф 所以该文法是LL (1)文法。 预测分析表: * + a # S →*aTS’ →aTS’ S’ →*aTS’ →ε T →+aT’ T’ →ε →T →ε 四、对文法G(S): S→a|^|(T);T→T,S|S 答: (1) a ^ ( ) # a > > > ^ > > > ( < < < = < ) > > > < < < > > # < < < = (2)是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。 (2分) (3)给出输入串(a,a)#的算符优先分析过程。 步骤 栈 当前输入字符 剩余输入串 动作 1 # ( a,a# #<(移进 2 #( a a)# ( 3 #(a a)# a>,归约 4 #(N a)# (<,移进 5 #(N, a )# 6 #(N,a ) # a>)归约 7 #(N,N ) # >)归约 8 #(N ) # (=)移进 9 #(N) # )>#归约 10 #N # 接受 四、对下面的文法G: S→a|b|(T) T→T,S|S (1)消去文法的左递归,得到等价的文法G2; (2)判断文法G2是否LL (1)文法,如果是,给出其预测分析表。 (15) G2: S→a|b|(T) T→ST’ T’→,ST’|ε G2是LL (1)文法。 a b ( ) , # S S→a S→b S→(T) T T→ST’ T→ST’ T→ST’ T’ T’→ε T’→,ST’ 五、设有文法G[A]: A→BCc|gDB B→bCDE|ε C→DaB|ca D→dD|ε E→gAf|c (1)计算该文法的每一个非终结符的FIRST集和FOLLOW集; (2)试判断该文法是否为LL (1)文法。 (15) FIRST FOLLOW A B C D E A,b,c,d,g b A,c,d D C,g A,c,d C,d,g A,b,c,g 是LL (1)文法。 六、对表达式文法G: E→E+T|T T→T*F|F F→(E)|I (1)造各非终结符的FIRSTVT和LASTVT集合; (2)构造文法的算符优先关系表。 (15) FIRSTVT LASTVT E T F *,+,(,i *,(,i (,i *,+,),i *,),i ),i 算符优先关系表 + * I ( ) # + * I ( ) # > > > < > < < > > < > < < < < < < < < < > > > = > > > > > = 《编译原理》期末试题(六) 六对文法G[S] S→aSb|P P→bPc|bQc Q→Qa|a (1)它是否是算符优先文法? 请构造算符优先关系表 (2)文法G[S]消除左递归、提取左公因子后是否是LL (1)文法? 请证实。 答: 1.求出G[S]的FIRSTVT集和LASTVT集: FIERSTVT(S)={a,b}LASTBVT(S)={b,c} FIERSTVT(P)={b}LASTBVT(P)={c} FIERSTVT(Q)={a}LASTBVT(Q)={a} 构造优先关系表为: a b c a <> < > b <> c > > 由于在优先关系中同时出现了aa以及bb,所以该文法不是算符优先文法。 2.消除左递归和提取左公因子后的文法为: S→aSb|P P→bP’ P’→Pc|Qc Q→aQ’ Q’→aQ’|ε 求具有相同左部的两个产生式的Select集的交集: Select(S→aSb)∩Select(S→P)={a}∩First(P)={a}∩{b}=Ф Select(P’→Pc)∩Select(P’→Qc)=First(P)∩First(Q)={b}∩{a}=Ф Select(Q’→aQ’)∩Select(Q’→ε)={a}∩Follow(Q)={a}∩{c}=Ф 所以修改后的文法是LL (1)文法。 八已知源程序如下: prod: =0; i: =1; whilei≤20do begin prod: =prod+a[i]*b[i]; i: =i+1 end; 试按语法制导翻译法将源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;机器按字节编址,每个数组元素占四个字节)。 【答案: 】 九设有以下程序段 procedureP(x,y,z) begin Y: =y*3; Z: =X+z; end; begin a: =5;b: =2; p(a*b,a,a); print(a); end 若参数传递的方法分别为 (1)传值、 (2)传地址、(3)传名,试问结果分别什么? (1)传值5; (2)传地址25;(3)传名45 《编译原理》期末试题(七) 5.(6分)对下列四元式序列生成目标代码: A: =B*C D: =E+F G: =A+D H: =G*2 其中,H是基本块出口的活跃变量,R0和R1是可用寄存器 答: LDR0,B MULR0,C LDR1,E ADDR1,F ADDR0,R1 MULR0,2 STR0,H 四、对于文法G(E): (8分) ET|E+T TF|T*F F(E)|i 1.写出句型(T*F+i)的最右推导并画出语法树。 2.写出上述句型的短语,直接短语、句柄和素短语。 答: 1.(4分) ETF(E)(E+T)(E+F) (E+i)(T+i)(T*F+i) 2.(4分) 短语: (T*F+i),T*F+i,T*F,i 直接短语: T*F,i 句柄: T*F 素短语: T*F,i 五、设文法G(S): (12分) 1.构造各非终结符的FIRSTVT和LASTVT集合; 2.构造优先关系表和优先函数。 (12分) 答: (6分) FIRSTVT(S)={i,+,),(} FIRSTVT(A)={+,),(} FIRSTVT(B)={),(} LASTVT(S)={i,+,*,(} LASTVT(A)={+,*,(} LASTVT(B)={*,(} 优先关系表: (3分) i + ( ) * i > < < < + > > < < > ( > > > ) < < < * > > > 优先函数: (3分) i + ( ) * f 2 6 6 1 6 g 1 4 6 6 1 七、(8分)将语句 if(A =C+D 翻译成四元式。 (8分) 答: 100(j<,A,X,102) 101(j,-,-,109) 102(j>,B,0,104) 103(j,-,-,109) 104(j>,C,0,106) 105(j,-,-,109) 106(+,C,D,T1) 107(: =,T1,-,C) 108(j,-,-,104) 109 (控制结构3分,其他5分) 八、(10分)设有基本块如下: T1: =S+R T2: =3 T3: =12/T2 T4: =S/R A: =T1-T4 T5: =S+R B: =T5 T6: =T5*T3 B: =T6 (2)设A,B是出基本块后的活跃变量,请给出优化后的四元式序列。 答: (2)四元式序列: (4分) T1: =S+R T4: =S/R A: =T1-T4 B: =T1*4 《编译原理》期末大题 1.设有如下文法G(S),试消除其左递归。 G(S): S—>Ac|c A—>Bb|b B—>Sa|a 解: S→abcS′|bcS′|cS′,S′→abcS′| 2.试构造与下面G(S)等价的无左递归的文法。 G(S): S—>Sa|Nb|c N—>Sd|Ne|f 解: S→fN′bS′|cS′,S′→aS′|dN′bS′| N′→eN′| 3.设有文法G(S): S—>aBc|bAB A—>aAb|b B—>b|ε ①求各产生式的FIRST集,FOLLOW(A)和FOLLOW(B),以及各产生式的SELECT集。 ②构造LL (1)分析表,并分析符号串baabbb是否是。 解: (1)FIRST(aBc)={a},FIRST(bAB)={b}FIRST(aAb)={a},A→b: FIRST(A→b)={b},B→b: FIRST(b)={b},FIRST(ε)={ε} FOLLOW(A)={b,#},FOOLOW(B)={c,#} SELECT(S→aBc)={a},SELECT(S→bAB)={b},SELECT(A→aAb)={a},SELECT(A→b)={b},SELECT(B→b)={b},SELECT(B→ )={c,#} 因此,所得的LL (1)分析表如表A-4所示。 表A-4LL (1)分析表 输入 VN 输入符号 a b c # S S→aBc S→bAB A A→aAb A→b B B→b B→ B→ (2)分析符号串baabbb成功,baabbb是该文法的句子,如图A-16所示。 图A-16识别串baabbb的过程 4.对下列文法G(S): S—>D(R)R—>R;P|P P—>S|ID—>i ①计算文法G中每个非终结符的FIRSTVT集和LASTVT集。 ②构造文法G的算符优先关系矩阵。 解: (1)FIRSTVT(S)={(,i},FIRSTVT(D)={i},FIRSTVT(R)={;,(,i},FIRSTVT(P)={i,(},LASTVT(S)={)},LASTVT(D)={i},LASTVT(R)={;,),i},LASTVT(P)={i,)} (2)算符优先矩阵,如表A-5所示。 表A-5优先矩阵 ( ) ; i # ( ) ; i # 5.已知文法G(S): S—>a|(T) T—>T,S|S ①给出句子((a,a),a)的最左推导并画出语法树;②给出句型(T,a,(T))所有的短语、直接短语、素短语、最左素短语、句柄和活前缀。 解: (1)最左推导: S (T) (T,S) (S,S) (a,S) (a,(T)) (a,(T,S)) (a,(S,S)) (a,(a,S)) (a,(a,a)) 语法树: 如图A-16所示。 图A-16(a,(a,a))的语法树 (2)句型(T,a,(T))的短语、直接短语、素短语、最左素短语、句柄、活前缀及语法树(图A-17)。 短语: a||T,a||(T)||T,a,(T)||(T,a,(T)) 直接短语: a||(T) 素短语: a||(T) 最左素短语: a 句柄: a 活前缀: ||(||(T||(T,||(T,a 图A-17(T,a,(T))的语法树 四、综合题 1.已知文法G(E) E→T|E+T T→F|T*F F→(E)|i (1)给出句型(T*F+i)的最右推导; (2)给出句型(T*F+i)的短语、简单短语、句柄、素短语、最左素短语。 解: (1)最右推导: E->T->F->(E)->(E+T)->(E+F)->(E+i)->(T+i)->(T*F+i) (2)短语: (T*F+i),T*F+i,T*F,i 简单短语: T*F,i 句柄: T*F 素短语: T*F,i 最左素短语: T*F 3.文法: S->MH|a H->LSo|ε K->dML|ε L->eHf M->K|bLM 判断G是否为LL (1)文法,如果是,构造LL (1)分析表。 解: 各符号的FIRST集和FOLLOW集为: 各产生式SELECT集为: SELECT S->MH {d,b,e,#,o} S->a {a} H->LSo {e} H->ε {#,f,o} K->dML {d} K->ε {e,#,o} L->eHf {e} M->K {d,e,#,o} M->bLM {b} 预测分析表 由于预测分析表中无多重入口,所以可判定文法是LL (1)的。 4.对下面的文法G: E->TE' E'->+E|ε T->FT' T'->T|ε F->PF' F'->*F'|ε P->(E)|a|b|^ (1)计算这个文法的每个非终结符的FIRST集和FOLLOW集。 (4分) (2)证明这个方法是LL (1)的。 (4分) (3)构造它的预测分析表。 (2分) 解: (1)计算这个文法的每个非终结符的FIRST集和FOLLOW集。 FIRST集合有: FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P)={(,a,b,^}; FIRST(E')={+,ε}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理汇总 编译 原理 汇总