- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理试卷
总分任课教师签名杨宗源
总分
任课教师签名
杨宗源
学生姓名:_____________ 学号:___________________
学生系别:_____________ 专业:______________ 年级___________班级_____________
课程名称:编译原理 课程性质:专业必修
问答题
设G=(VN,VT,P,S)是上下文无关文法,产生式集合P中任意一个产生式应具有什么样的形式?若G是正则文法呢?(5%)
答:一般形式为v→?,v?VN,??(VN∪VT)*。
若G是正则文法,则一般形式为A→aB或A→a,A、B?VN,a?VT(或A→Ba,A→a)。
何谓二义性文法?试举一例说明。(5%)
答:若文法G的一个句子对应有两棵或两棵以上不同的推导树,则称该句子是二义性的。产生二义性句子的文法称为二义性文法,否则该文法是无二义性的。
例子:给定文法G[R]:
R→R*|RR|a|b
考察句子ab*,它有两棵不同的推导树,如下所示:
试正确消除下述传递图的?弧,使其接收的语言不变。(10%)
1-?-
1
-
?
-
S?
S
?
1
1
1
1
0
?,
1
0
0
?
?
+
A
B
C
D
E
F
G
答:
试将下述程序段翻译成三地址形式的中间代码表示。(8%)
while ( a+bc OR a=b )
while ( a5 AND b10 )
{ a=a+1;
b=b+1;
}
答:三地址代码如下:
100: t:=a+b
101: if tc goto 105
102: goto 103
103: if a=b goto 105
104: goto 0
105: if a5 goto 107
106: goto 100
107: if b10 goto 109
108: goto 100
109: a:=a+1
110: b:=b+1
111: goto 105
112:
适合采用静态存储分配的程序设计语言应有哪些限制?(5%)
答: = 1 \* GB3 ①数据实体所需空间在编译时能确定
= 2 \* GB3 ②运行时每个数据对象只能有一个实例
= 3 \* GB3 ③数组的上下界是常量
= 4 \* GB3 ④过程调用不允许递归
= 5 \* GB3 ⑤不能动态建立数据实体
在一个基本块内通常可实现哪些优化?(5%)
答: = 1 \* GB3 ①合并已知量
= 2 \* GB3 ②删除公共子表达式
= 3 \* GB3 ③删除无用代码
= 4 \* GB3 ④复写传播
二、试判定下述文法G[S]是否是LR(1)文法?为什么?(12%)
S→AA
A→Aa
A→a
答:1)因为对文法G[S]存在的句子aaa,有两棵不同的推导树,如图4.5所示。
图4.5 两棵不同的推导树
所以该文法是二义性文法,G[S]不是LR(1)文法。
2)可构造文法G[S]的状态集,考虑增广文法G[S’],如表4.29所示。
表4.29 文法G[S’]的LR(1)状态集
状 态 T
项 目 集
输入符号
下一状态
0
[S’→·S⊥,?]
S
1
[S→·AA,⊥]
A
2
[A→·Aa,a]
A
2
[A→·a,a]
a
3
1
[S’→S·⊥,?]
⊥
Accept
2
[S→A·A,⊥]
A
[A→A·a,a]
a
4
[A→·Aa,a /⊥]
A
[A→·a, a /⊥]
a
4
3
[A→a·,a]
a
#3
4
[A→Aa·,a]
a
#2
[A→a·,a /⊥]
a /⊥
#3
到此不用继续计算,因为状态T4是不适定状态,对输入符a出现了“归约—归约”冲突,因此文法G[S]不是LR(1)文法。
三、Pascal语言中,循环语句 for V := initial to final do stmt
与下述代码序列有相同的含义:
t1 := initial; t2:=final;
if t1? t2 then
Begin
V:=t1;
L1: stmt
V:=succ(V);
if V ? t2 then Goto L1
End;
若不考虑后续语句问题,要求:
写出循环语句三地址形式的中间代码表示。 (5%)
编写符合上述规定的翻译方案。 (15%)
答:(1) 三地址的中间代码如下:
initial 100:
initial
final 106:
final
110: t1:=initial.val
111: t2:=final.val
112: if t1t2 goto 123
113: V:=
您可能关注的文档
最近下载
- 2025年单招考试数学卷(含答案解析) 完整版2025.pdf VIP
- 机械伤害应急预案.docx VIP
- 《防止静电事故通用导则》GB_12158—2006.pdf VIP
- 浙江省9+1高中联盟2024-2025学年高一上学期期中考试数学试卷含答案.docx VIP
- 幼儿园公开课大班科学《有趣的颜色》课件.pptx VIP
- 山东省2025年专升本英语真题.docx VIP
- xx名校长工作室管理制度.docx VIP
- 浙江省9+1高中联盟2024-2025学年高一上学期期中考试数学试卷 含解析.docx VIP
- SAC24000T全地面起重机参数表.pdf VIP
- 07SD101-8 电力电缆井设计与安装.pdf VIP
原创力文档


文档评论(0)