编译原理试卷.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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:=

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档