编译原理试卷及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在I0和I2,I3中存在有移进
归约冲突
但是FOLLOW(A)={d,b,#} {a}{d,b,#}=,所以文法是SLR(1)文法
a
b
d
#
A
I0
S2
r4
r4
r4
1
I1
acc
I2
S2
r4
r4
r4
3
I3
ຫໍສະໝຸດ BaiduS5
S4
I4
r2
r2
r2
I5
r3
r3
r3
得
分
七、为文法
S(L) |a
LL,S|S
写一个属性翻译文法,它输出文法中a的个数。(10分)
S
{*,a}
{#}
S’
{*,}
{#}
A
{+}
{*,#}
A’
{+,}
{*,#}
预测分析表:
*
a
+
#
S
*aAS’
aAS
S’
*AS’
A
+aA’
A’
A
得
分
六、请构造出文法G[S]识别文法活前缀的有限自动机,请确定是否是SLR(1)文法,如果是,则构造出其LR分析表。(12分)
A→aAd|aAb|ε
答:拓广文法(1)SA(2)AaAd(3)AaA(4)Aε
S’S {printf(S.a)}
S(L){S.a=L.a}
Sa{S.a=1}
LL,S{L.a=L1.a+S.a}
LS{L.a=S.a}
得
分
八、考虑下面的三地址语句序列,完成下列任务。
(1)在该代码中用水平的横线将代码分成基本块,并给每个基本块一个序号。(2分)
(2)画出该代码的控制流图,每个基本块就用(1)的序号表示。(3分)
200年学期20级
《编译原理》课程考试试卷
(A卷)适用年级专业
考试方式考试时间分钟
学院专业班级
学号姓名
题
号
一
二
三
四
五
六
七
八
总分
阅卷
教师
得
分
………………………………………………………………………………………………………………
得
分
一、填空题(每小题2分,共12分)
1、一般高级语言的翻译程序有(编译程序)和(解释程序)两种。
2、有穷自动机接受的语言是(正规语言)
3、令Σ={a,b},则Σ上所有以b为首的字符串构成的正规集的正规式为(b(a|b)*)。
4、下面的语义规则是某L属性文法中的一个语义规则,从中可看出:A.s是(综合)属性,B.x是(继承)属性。
A-->BCD{A.s=B.x+C.y;D.z=B.i;}
5、活前缀是指(规范句型)的一个前缀,这种前缀不含(句柄)之后的任何符号。
gotoL1(6)
L5:h := 9(7)
gotoL2
(3)回边34,结点5、7、3和4构成一个循环,其中4是入口结点。
6、局部优化是在(一个基本块)范围内进行的一种优化。
得
分
二、简答题(每小题5分,共计20分)
1、请说明什么是算符优先文法?
答:(1)在CFG中无空产生式,且右部无相邻的非终极符
(2)任意两个相邻的终极符间至多只存在一种关系
2、哪些优化措施是主要针对于循环实现的?可举例说明
答:代码外提
强度削弱
归纳变量删除
3、文法G[S]:SS(S)S|,请判断G[S]是否是二义文法,说明理由
答:是二义文法
理由:选择一个句子,例如()(),存在有不同的语法树或者不同的最右推导
4、请给出布尔表达式aorband e<f利用规则:
Eid1ropid2
{E.TC= NXQ; E.FC= NXQ + 1;Gen(jrop,Entry(id1), Entry(id2), 0); Gen(j, _, _, 0)}
进行翻译后的四元式序列?并以此解释什么是链接与回填?
答:
(1)(jn,a,-,0)
(2)(j,-,-,3)回填
(3)(jn,b,-,5)回填
(4)(j,-,-,0)
(5)(<,e,f,1) E.TC链接
(6)(j,-,-,4)E.FC
在翻译过程中,常常会出现若干转移四元式转向同一目标,但此目标的具体位置又尚未确定的情况,此时我们可将这些四元式用拉链的办法将它们链接起来,用一指针指向链头,在确定了目标四元式的位置之后,再回填这个链。
得
分
三、构造一文法,其产生语言集合为{uawb|u,w∈{a,b}*且|u| = |w| },并说明你所设计的文法是属于乔姆斯基形式文法中的哪一类文法?(10分)
答:设计G[S]如下:
SAb
Aa| aAa|aAb|bAa|bAb
属于CFG,即上下文无关文法
得
分
四、有语言L={w|w∈ (0,1)+,并且w中至少有两个1,又在任何两个1之间有偶数个0},试构造接受该语言的确定有限状态自动机(10分)
(3)若有循环的话,列出构成每个循环的结点,并指出循环的入口结点。(6分)
解:(1)(2)
b:= 1
b:= 2
if w <= xgotoL3(1)
L1:e := b
L2:c := 3
b:= 4
c := 6(3)
L3:if y <= zgotoL4(4)
gotoL5(5)
L4:g :=g + 1
h:= 8
答:
得
分
五、请给对文法G[S]进行改写成LL(1)文法,并给出改写后文法的预测分析表,要求计算出改写后文法各非终极符的FIRST和FOLLOW集合。(15分)
S → S*aA|aA|*aA
A→ +aA|+a
答:改写文法如下:
S*aAS’|aAS’
S’*AS’|
A+aA’
A’A |
FIRST
FOLLOW
归约冲突
但是FOLLOW(A)={d,b,#} {a}{d,b,#}=,所以文法是SLR(1)文法
a
b
d
#
A
I0
S2
r4
r4
r4
1
I1
acc
I2
S2
r4
r4
r4
3
I3
ຫໍສະໝຸດ BaiduS5
S4
I4
r2
r2
r2
I5
r3
r3
r3
得
分
七、为文法
S(L) |a
LL,S|S
写一个属性翻译文法,它输出文法中a的个数。(10分)
S
{*,a}
{#}
S’
{*,}
{#}
A
{+}
{*,#}
A’
{+,}
{*,#}
预测分析表:
*
a
+
#
S
*aAS’
aAS
S’
*AS’
A
+aA’
A’
A
得
分
六、请构造出文法G[S]识别文法活前缀的有限自动机,请确定是否是SLR(1)文法,如果是,则构造出其LR分析表。(12分)
A→aAd|aAb|ε
答:拓广文法(1)SA(2)AaAd(3)AaA(4)Aε
S’S {printf(S.a)}
S(L){S.a=L.a}
Sa{S.a=1}
LL,S{L.a=L1.a+S.a}
LS{L.a=S.a}
得
分
八、考虑下面的三地址语句序列,完成下列任务。
(1)在该代码中用水平的横线将代码分成基本块,并给每个基本块一个序号。(2分)
(2)画出该代码的控制流图,每个基本块就用(1)的序号表示。(3分)
200年学期20级
《编译原理》课程考试试卷
(A卷)适用年级专业
考试方式考试时间分钟
学院专业班级
学号姓名
题
号
一
二
三
四
五
六
七
八
总分
阅卷
教师
得
分
………………………………………………………………………………………………………………
得
分
一、填空题(每小题2分,共12分)
1、一般高级语言的翻译程序有(编译程序)和(解释程序)两种。
2、有穷自动机接受的语言是(正规语言)
3、令Σ={a,b},则Σ上所有以b为首的字符串构成的正规集的正规式为(b(a|b)*)。
4、下面的语义规则是某L属性文法中的一个语义规则,从中可看出:A.s是(综合)属性,B.x是(继承)属性。
A-->BCD{A.s=B.x+C.y;D.z=B.i;}
5、活前缀是指(规范句型)的一个前缀,这种前缀不含(句柄)之后的任何符号。
gotoL1(6)
L5:h := 9(7)
gotoL2
(3)回边34,结点5、7、3和4构成一个循环,其中4是入口结点。
6、局部优化是在(一个基本块)范围内进行的一种优化。
得
分
二、简答题(每小题5分,共计20分)
1、请说明什么是算符优先文法?
答:(1)在CFG中无空产生式,且右部无相邻的非终极符
(2)任意两个相邻的终极符间至多只存在一种关系
2、哪些优化措施是主要针对于循环实现的?可举例说明
答:代码外提
强度削弱
归纳变量删除
3、文法G[S]:SS(S)S|,请判断G[S]是否是二义文法,说明理由
答:是二义文法
理由:选择一个句子,例如()(),存在有不同的语法树或者不同的最右推导
4、请给出布尔表达式aorband e<f利用规则:
Eid1ropid2
{E.TC= NXQ; E.FC= NXQ + 1;Gen(jrop,Entry(id1), Entry(id2), 0); Gen(j, _, _, 0)}
进行翻译后的四元式序列?并以此解释什么是链接与回填?
答:
(1)(jn,a,-,0)
(2)(j,-,-,3)回填
(3)(jn,b,-,5)回填
(4)(j,-,-,0)
(5)(<,e,f,1) E.TC链接
(6)(j,-,-,4)E.FC
在翻译过程中,常常会出现若干转移四元式转向同一目标,但此目标的具体位置又尚未确定的情况,此时我们可将这些四元式用拉链的办法将它们链接起来,用一指针指向链头,在确定了目标四元式的位置之后,再回填这个链。
得
分
三、构造一文法,其产生语言集合为{uawb|u,w∈{a,b}*且|u| = |w| },并说明你所设计的文法是属于乔姆斯基形式文法中的哪一类文法?(10分)
答:设计G[S]如下:
SAb
Aa| aAa|aAb|bAa|bAb
属于CFG,即上下文无关文法
得
分
四、有语言L={w|w∈ (0,1)+,并且w中至少有两个1,又在任何两个1之间有偶数个0},试构造接受该语言的确定有限状态自动机(10分)
(3)若有循环的话,列出构成每个循环的结点,并指出循环的入口结点。(6分)
解:(1)(2)
b:= 1
b:= 2
if w <= xgotoL3(1)
L1:e := b
L2:c := 3
b:= 4
c := 6(3)
L3:if y <= zgotoL4(4)
gotoL5(5)
L4:g :=g + 1
h:= 8
答:
得
分
五、请给对文法G[S]进行改写成LL(1)文法,并给出改写后文法的预测分析表,要求计算出改写后文法各非终极符的FIRST和FOLLOW集合。(15分)
S → S*aA|aA|*aA
A→ +aA|+a
答:改写文法如下:
S*aAS’|aAS’
S’*AS’|
A+aA’
A’A |
FIRST
FOLLOW