当前位置:首页 > 编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc
写出句子((a,a),a)的规范归约过程及每一步的句柄。 解:
句型 归约规则 句柄 ((a,a),a) S→a a ((S,a),a) T→S S ((T,a),a) S→a a ((T,S),a) T→T,S T,S ((S),a) T→S S ((T),a) S→S(T) (T) (S,a) T→S S (T,a) S→a a (T,S) T→T,S T,S (T) S→(T) (T) S
5. 何谓优化?按所涉及的程序范围可分为哪几级优化?
1)优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。 (2) 三种级别:局部优化、循环优化、全局优化。
五.计算题(10分)
对下面的文法 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')={+,ε}
FIRST(T)=FIRST(F)=FIRST(P)={(,a,b,^}; FIRST(T')=FIRST(T)∪{ε}={(,a,b,^,ε}; FIRST(F)=FIRST(P)={(,a,b,^}; FIRST(F')=FIRST(P)={*,ε}; FIRST(P)={(,a,b,^}; FOLLOW集合有: FOLLOW(E)={),#};
FOLLOW(E')=FOLLOW(E)={),#};
FOLLOW(T)=FIRST(E')∪FOLLOW(E)={+,),#};//不包含ε
FOLLOW(T')=FOLLOW(T)=FIRST(E')∪FOLLOW(E)={+,),#}; FOLLOW(F)=FIRST(T')∪FOLLOW(T)={(,a,b,^,+,),#};//不包含ε FOLLOW(F')=FOLLOW(F)=FIRST(T')∪FOLLOW(T)={(,a,b,^,+,),#}; FOLLOW(P)=FIRST(F')∪FOLLOW(F)={*,(,a,b,^,+,),#};//不包含ε (2)证明这个方法是LL(1)的。 各产生式的SELECT集合有: SELECT(E->TE')=FIRST(T)={(,a,b,^}; SELECT(E'->+E)={+};
SELECT(E'->ε)=FOLLOW(E/)={),#} SELECT(T->FT')=FIRST(F)={(,a,b,^}; SELECT(T'->T)=FIRST(T)={(,a,b,^}; SELECT(T'->ε)=FOLLOW(T/)={+,),#}; SELECT(F->PF')=FIRST(P)={(,a,b,^}; SELECT(F'->*F')={*};
SELECT(F'->ε)=FOLLOW(F')={(,a,b,^,+,),#}; SELECT(P->(E))={(} SELECT(P->a)={a} SELECT(P->b)={b} SELECT(P->^)={^}
可见,相同左部产生式的SELECT集的交集均为空,所以文法G[E]是LL(1)文法。 (3)构造它的预测分析表。 文法G[E]的预测分析表如下:
《编译原理》模拟试题三
一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)
1.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。(×)
2.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全 相同。(× )
3.递归下降分析法是自顶向上分析方法。(√ )
4.产生式是用于定义词法成分 的一种书写规则。 (×)
5.LR 法是自顶向下语法分析方法。 (√ )
6.在 SLR ( 1 )分析法的名称中,S的含义是简单的。(√)
7.综合属性是用于 “ 自上而下 ” 传递信息。(× )
8.符号表中的信息栏中登记了每个名字的 属性和特征等有关信息 ,如类型、种属、所占 单元大小、地址等等。 (×)
共分享92篇相关文档