编译原理试卷二..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文档。上传文档
查看更多
一、 选择 1.下面说法正确的是: A 一个正规式只能对应一个确定的有限状态自动机; B 一个正规语言可能对应多个正规文法; 2.算符优先分析与规范归约相比的优点是: A 归约速度快 B 对文法限制少 3.一个LR(1)文法合并同心集后若不是LALR(1)文法: A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 4.下面说法正确的是: A Lex是一个词法分析器的生成器 B Yacc是一个语法分析器 二、 问答题 问答第1题 (5分) 将文法G[S] 改写为等价的G[S],使G[S]不含左递归和左公共因子。   G[S]: S→SAe|Ae A→dAbA|dA|d 解:文法G[S] 改写为等价的不含左递归和左公共因子的G[S]为:   S →AeS   S →AeS|ε   A →dA   A →AB|ε   B →bA |ε 问答第2题 (10分) 判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表。   S→aD   D→STe|ε   T→bH|H   H→d|ε 首先计算文法的 FIRST集和FOLLOW集如下表。 文法的 FIRST集和FOLLOW集 非终结符 FIRST集 FOLLOW集 S {a}......... {# ,b ,d ,e}. D {a ,ε}.... {# ,b ,d ,e } T {b ,d ,ε} {e}............. H {d ,ε}.... {e}............. ? 由于select(D→STe)∩select(D→ε)={a}∩{# ,b ,d ,e }=   select(T→bH)∩select(T→H)={b}∩{e }=   select(H→d)∩select(H→ε)={ d }∩{ e }= 所以该文法是LL(1)文法,LL(1)分析表如下表。 LL(1)分析表 ? a e b d # S →aD. ? ? ? ? D →STe →ε →ε →ε →ε T ? →H. →bH →H. ? H ? →ε ? →d. ? 问答第3题 (5分) 给出与正规式R=((ab)*|b)*(a|(ba)*)a 等价的NFA。 解:与正规式R=((ab)*|b)*(a|(ba)*)a 等价的NFA如下图 问答第4题 解:根据所给的PL/0示意程序完成下列要求。 (1)(4分) 给出 当程序执行到A过程体的write(c) 语句时的栈式存储分配布局和用Display 显示表时A过程最新活动记录的内容; (2)(2分) 说明在过程D中,当执行c:=b*a;语句时,变量c和b的存取位置是如何确定的(请填在下面的相应括号内)。   c的存取位置=( )   b的存取位置=( ) PL/0示意程序为:   var c;   procedure M;     procedure A;     begin (* A *)      write(c);     end (* A *)    procedure Z;     var a,b;     procedure D      begin (* D *)       c:=b*a;       call A;      end ;(* D *)     begin (* Z *)      call D;     end ;(* Z *)    begin (*M *)     call Z;    end ;(* M *)   begin (*main *)    call M;   end. (* main *) 解:(1)当程序执行到A过程体的write(c) 语句时的栈式存储分配布局和用Display 显示表时A过程最新活动记录的内容如下图。 当程序执行到A过程时栈式存储分配布局 和栈中过程最新活动记录的内容 (2)在过程D中,当执行c:=b*a;语句时,变量c和b的存取位置可如下确定:由于D过程的display表内容为: d(3) D的SP d(2) Z的SP d(1) M的SP d(0) Main的SP 所以 c的存取位置=(d(0)中Main的SP+c在Main中的偏移量) b的存取位置=(d(2)中Z的SP+b在Z中的偏移量) 问答第5题 (6分)试对 while (ab and ac) or a=d do S:=a;的四元式序列给出第四区段应回填的指令地址,并指出真假链和链头及回填的次序。 ? ? 应回填的值 回填的次序 ? (1) if ab goto (   ) (   ) 真链头 E.true

文档评论(0)

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

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

1亿VIP精品文档

相关文档