清华版编译原理课程考核03D.docx
《清华版编译原理课程考核03D.docx》由会员分享,可在线阅读,更多相关《清华版编译原理课程考核03D.docx(15页珍藏版)》请在冰豆网上搜索。
清华版编译原理课程考核03D
xx大学课程考核命题双向细目表
学院:
数计(xx学院)专业:
计算机科学技术课程:
编译原理(B卷)
考核对象:
2016级4、5班考核所需时间:
120分钟
题性
分值
章节
题型(以分数计)
合
计
客观性题
主观性题
选
择
填
空
判
断
名词解释
简
答
论述
或
论证
计
算
综
合
1章
1.4节
1
1
3章
3.3—3.7节
4
12
16
4章
4.3—4.5节
2
12
14
5章
5.0节
1
1
5章
5.2—5.5节
18
18
6章
6.3节
2
18
20
7章
7.1—7.5节
1
20
21
8章
8.2—8.3节
2
2
9章
9.2节
1
1
10章
10.1节
1
1
11章
11.1—11.2节
5
5
合计
15
85
100
命题组(教师)
签名:
莫礼平2005年12月9日
教研室(系)主任审查意见
签名:
年月日
学院(部)分管教学工作
领导意见
签名:
年月日
吉首大学试题库
课程测试试题(B卷)
----------------------以下为教师填写--------------------
I、命题院(部):
数学与计算机科学学院
II、课程名称:
编译原理
III、测试学期:
2005-2006学年度第1学期
IV、测试对象:
张家界学院计算机科学技术专业2003级4、5班
V、问卷页数(A4):
3页
VI、答卷页数(A4):
6页
VII、考试方式:
闭卷(开卷、闭卷或课程小论文,请填写清楚)
VIII、问卷内容:
(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号)
一、判断(15分)
1、编译阶段按前后端组合,可分为编译前端和编译后端,其中与目标机有关的阶段一般属于前端,而与源语言相关的阶段一般属于后端。
2、一个句型的最左直接短语称为最左素短语。
3、已存在这样一种算法,它能在有限步内证明任意给定的一个文法是否为二义性的。
4、一个NFA一定是DFA,反之,不成立。
5、逆波兰式又称为四元式,它是一种普遍使用的中间代码形式,它的四个组成部分是算符、两个运算对象和结果。
6、正规文法一定是上下文无关文法。
7、语法制导翻译是指根据文法中的每个规则所对应的语义子程序或语法规则所描述的语义动作进行翻译的办法。
8、对任意给定的一个正规式R,都可以将它转换为与之功能等价的正规文法,或与之功能等价的有穷自动机。
9、不同语义的标识符属性不尽相同,但符号名、符号类型、符号的存储类别、符号的作用域及可视性等属性是各种标识符都需要的通用属性。
10、形如α→β或α:
:
=β的(α,β)有序对称为所规则或产生式或生成式,其中α是
1、
字母表V的正闭包元素,而β是字母表V的闭包元素。
11、由优先关系矩阵构造出的优先函数具有唯一性。
12、算符优先分析方法和LR分析方法都是自下而上的分析方法,它们的分析过程实际上就是规范归约过程。
13、LR(0)项目集规范族中的项目由两部分构成,一部分是心,即原来的LR
(1)项目,另一部分是向前搜索符号集。
14、对一个不包含空规则的文法,如果文法中的任意两个终结符构成的符号对之间最多只有大于、小于和等于三种优先关系中的一种成立,则称该文法为算符文法。
15、数据空间的使用和管理方法分为三种,即:
静态存储分配、动态存储分配、静态与动态相结合的存储分配。
二、简述代码优化的概念和常用的几种优化技术。
(5分)
三、现有文法G[E]:
(共12分)
E→EE+
E→EE*
E→F
F→i
1、证明ii*i+是文法的一个句子。
(3分)
2、构造句型ii*i+的语法推导树。
(3分)
3、指出该句型所有短语、直接短语和句柄。
(6分)
四、将正规式R=bb(a|bb)a*b转换为相应的NFAM状态图,使得L(M)=L(R),并将所得NFAM确定化和最小化。
(12分)
五、已知G[S]:
(18分)
S→b|+|(T)
T→T,S|S
1、给出(+,(b,+))的最左推导。
(2分)
2、证明G[S]不是LL
(1)文法。
(3分)
3、将G[S]改写为LL
(1)文法,再给出它的预测分析表;(8分)
4、给出输入串(b,+)#的分析过程。
(5分)
六、现有文法G[E']:
(共18分)
E'→#E#
E→E+T|T
T→T*F|F
F→P^F|P
P→(E)|i
1、计算G[E']的FIRSTVT和LASTVT;(6分)
2、构造G[E']的算符优先关系矩阵,并说明G[E']是否为算符优先文法。
(7分)
3、给出输入串i+i#的算符优先分析过程。
(5分)
七、对任意给定的一个上下文无关文法G[S]:
(共20分)
1、如何判断G[S]是否为LR(0)文法。
(4分)
2、如何判断G[S]是否为SLR
(1)文法。
(4分)
3、如何判断G[S]是否为LR
(1)文法。
(4分)
4、如何判断G[S]是否为LALR
(1)文法。
(4分)
5、说明LR(0)、SLR
(1)、LR
(1)和LALR
(1)四类文法的相互关系。
(4分)
编译原理课程测试试卷评分标准
(张家界学院03B卷)
第一题:
判断题(15分)
1、共有15道小题,每小题1分,15×1=15分。
2、答案:
题号
1
2
3
4
5
6
7
8
9
10
答案
×
×
×
×
×
√
√
√
√
√
题号
11
12
13
14
15
答案
×
×
×
×
×
第二题:
简述代码优化的概念和常用的几种优化技术(5分)
1、代码优化的概念(2分)
参考答案:
所谓代码优化,实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前的代码运行结果相同(1分),但运行速度或占用的存储空间加大(1分)。
2、常用的优化技术(3分)
参考答案:
删除多余运算、代码外提、强度削弱、变换循环控制条件、合并已知变量与复写传播、删除无用赋值等(各项顺序任意,每对2项加1分)。
第三题:
(12分)
1、证明(3分):
因为存在推导序列E=>EE+=>EE*E+=>FE*E+=>iE*E+=>iF*E+=>ii*E+=>ii*F+=>ii*i+,即有E
ii*i+成立(2分),且ii*i+所含符号全部为终结符(1分),所以,ii*i+是文法的一个句子。
2、语法树(3分)
3、句型分析(6分)
句型ii*i+相对于E的短语有:
i1i2*i3+,i1i2*,i1,i2,i3(3分)
句型ii*i+相对于F的短语有:
i1,i2,i3(1分)
句型ii*i+相对于F→i的直接短语有:
i或i1,i2,i3(1分)
句型ii*i+的句柄为:
i1(1分)
说明:
(1)短语、直接短语的说明可不具体指明所相对的非终结符或规则。
(2)没用下标区分i1,i2,i3的扣1分。
(3)短语每错两个扣1分。
第四题:
(12分)
1、NFAM(3分)
2、确定化(3分)
步骤如下表所示(可省):
标记
新状态
Ia
Ib
T0
{1}
φ
{2}
T1
{2}
φ
{3,4,6}
T2
{3,4,6}
{5,9}
{7}
T3
{5,9}
{9}
{10}
T4
{7}
φ
{8,9}
T5
{9}
{9}
{10}
T6
{10}
φ
φ
T7
{8,9}
{9}
{10}
将集合T0至T7各用一个状态表示,确定化后所得DFAM如下:
3、最小化(3分)
步骤如下表所示(可省):
步骤
分割根据
分割结果
1
是否终态
P1={1,2,3,4,5,6,8};P2={7}
2
P1根据a弧映射
P11={3,4,6,8};P12={1,2,5}
3
P11根据b弧映射
P111={3};P112={4,6,8}
4
P12根据b弧映射
P121={1};{2};P122={5}
最后有六个不可再分割的子集,每个子集对应一个状态,得最小化DFA如下:
说明:
此大题答案只供参考,可以是其他答案,只要功能等价即可。
第五题:
(18分)
1、给出(+,(b,+))的最左推导:
(2分)
S=>(T)=>(T,S)=>(S,S)=>(+,S)=>(+,(T))=>(+,(T,S))=>(+,(S,S))=>(+,(b,S))=>(+,(b,+))
2、证明:
(3分)
计算各条规则的SELECT集及左部相同规则的SELECT集的交集如下:
规则
SELECT集
左部相同规则的SELECT集的交集
S→b
{b}
φ
S→+
{+}
S→(T)
{(}
T→T,S
{b,+,(}
{b,+,(}
T→S
{b,+,(}
显然,G[S]不是LL
(1)文法。
3、
(1)将G[S]改写如下:
(4分)
G[S]:
S→b|+|(T)
T’→,ST’|ε
T→ST’
规则
SELECT集
左部相同规则的SELECT集的交集
S→b
{b}
φ
S→+
{+}
S→(T)
{(}
T’→,ST’
{,}
φ
T’→ε
{)}
T→ST’
{b,+,(}
显然,改写后的G[S]是LL
(1)文法。
(2)预测分析表:
(4分)
b
+
(
)
#
S
→b
→+
→(T)
T’
→,ST’
→ε
T
→ST’
→ST’
→ST’
4、输入串(b,+)#的分析过程:
(5分)
步骤
分析栈
剩余输入串
所用规则
步骤
分析栈
剩余输入串
所用规则
1
#S
(b,+)#
S→(T)
7
#)T’S,
+)#
匹配
2
#)T(
(b,+)#
(匹配
8
#)T’S
+)#
S→+
3
#)T
b,+)#
T→ST’
9
#)T’+
+)#
+匹配
4
#)T’S
b,+)#
S→b
10
#)T’
)#
T’→ε
5
#)T’b
b,+)#
b匹配
11
#)
)#
)匹配
6
#)T’
+)#
T’→,ST’
12
#
#
接受
第六题:
(18分)
1、G[E’]中各非终结符的FIRSTVT、LASTVT集:
(6分)
非终结符
E’
T
F
P
FIRSTVT集
{#}
{*,^,(,i}
{^,(,i}
{(,i}
LASTVT集
{#}
{*,^,),i}
{^,),i}
{),i}
由FIRSTVT、LASTVT集构造≮和≯如下:
VTVN符号对
≮关系
VNVT符号对
≯关系
#E
#≮FIRSTVT(E)
E#
LASTVT(E)≯#
+T
+≮FIRSTVT(T)
E+
LASTVT(E)≯+
*F
*≮FIRSTVT(F)
T*
LASTVT(T)≯*
^F
^≮FIRSTVT(F)
P^
LASTVT(P)≯^
(E
(≮FIRSTVT(E)
E)
LASTVT(E)≯)
2、
(1)优先矩阵为:
(5分)
+
*
^
i
(
)
#
+
≯
≮
≮
≮
≮
≯
≯
*
≯
≯
≮
≮
≮
≯
≯
^
≯
≯
≮
≮
≮
≯
≯
i
≯
≯
≯
≯
≯
(
≮
≮
≮
≮
≮
≡
)
≯
≯
≯
≯
≯
#
≮
≮
≮
≮
≮
≡
(2)该文法是算符优先文法(2分)。
3、输入串i+i#的算符优先分析过程:
(5分)
步骤
分析栈
剩余输入串
关系
动作
1
#
≮
i+i#
入栈
2
#i
≯
+i#
归约
3
#P
≮
+i#
入栈
4
#P+
≮
i#
入栈
5
#P+i
≯
#
归约
6
#P+P
≯
#
归约
7
#E
≡
#
成功
第七题(20分)
对任意给定的一个上下文无关文法G[S]:
1、判断是否为LR(0)文法的步骤:
(4分)
(1)构造G[S]的LR(0)项目集规范族。
(2)检查各项目集中是否存在移进—归约冲突或归约—归约冲突。
如果有某一个项目集中同时存在移进项目和归约项目,或者同时存在两个或两个以上的归约项目,则该项目集存在移进—归约冲突或归约—归约冲突。
(3)如果所有状态中都不存在移进—归约冲突或归约—归约冲突,说明G[S]是LR(0)文法。
否则,说明G[S]不是LR(0)文法。
2、判断是否为SLR
(1)文法的步骤:
(4分)
(1)构造G[S]的LR(0)项目集规范族。
(2)检查各项目集中是否存在移进—归约冲突或归约—归约冲突。
如果有某一个项目集中同时存在移进项目和归约项目,或者同时存在两个或两个以上的归约项目,则该项目集存在移进—归约冲突或归约—归约冲突。
(3)如果对各个项目集I中存在的移进—归约冲突或归约—归约冲突都可通过如下引入FOLLOW集的方法解决,即对I={X→α.bβ,A→γ.,B→δ.},若所有含有A和B的句型中,满足:
FOLLOW(A)∩FOLLOW(B)=Φ且FOLLOW(A)∩{b}=FOLLOW(B)∩{b}=Φ,则在状态I中面临输入符a的动作可由下面规定决策:
若a=b,则移进;若a∈FOLLOW(A),则用A→γ.归约,若a∈FOLLOW(B),则用B→δ.归约;此外报错。
也即在根据LR(0)项目集规范族构造LR分析表时,遇到归约项目时,只在该项目左边非终结符的FOLLOW集元素列置归约标记rj。
如果这样构造出来的LR分析表不存在冲突,则G[S]为SLR
(1)文法。
否则,G[S]不是SLR
(1)文法。
3、判断是否为LR
(1)文法的步骤:
(4分)
(1)构造G[S]的LR
(1)项目集规范族(注意各个项目都带有向前搜索符号集)。
(2)检查各项目集中是否存在移进—归约冲突或归约—归约冲突。
如果有某一个项目集中同时存在移进项目和归约项目,或者同时存在两个或两个以上的归约项目,则该项目集存在移进—归约冲突或归约—归约冲突。
(3)如果对各个项目集I中存在的移进—归约冲突或归约—归约冲突都可通过考虑项目所带的向前搜索符号集来解决,即根据LR
(1)项目集规范族构造LR分析表时,遇到归约项目时,只在该项目所带的向前搜索符号集元素列置归约标记rj。
如果这样构造出来的LR分析表不存在冲突,则G[S]为LR
(1)文法。
否则,G[S]不是LR
(1)文法。
4、判断是否为LALR
(1)文法的步骤:
(4分)
(1)构造G[S]的LR
(1)项目集规范族,并进一步合并LR
(1)项目集规范簇中的所有同心集。
(2)检查合并同心集后各项目集中是否存在移进—归约冲突或归约—归约冲突。
如果有某一个项目集中同时存在移进项目和归约项目,或者同时存在两个或两个以上的归约项目,则该项目集存在移进—归约冲突或归约—归约冲突。
(3)如果对各个项目集I中存在的移进—归约冲突或归约—归约冲突都可通过考虑项目所带的向前搜索符号集来解决,即根据合并同心集后的LR
(1)项目集规范族构造LR分析表时,遇到归约项目时,只在该项目所带的向前搜索符号集元素列置归约标记rj。
如果这样构造出来的LR分析表不存在冲突,则G[S]为LALR
(1)文法。
否则,G[S]不是LALR
(1)文法。
5、四类文法的相互关系:
(4分)
一个LR(0)文法肯定是SLR
(1)文法;一个SLR
(1)文法肯定是LALR
(1)文法;而一个LALR
(1)文法肯定是LR
(1)文法。
反之,不成立。
说明:
此答案只供参考,可以是其他答案,只要意思相近即可。