编译原理第4章测试卷.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第4章测试卷

编译原理 2014—2015学年第二学期第四单元测试试卷 (闭卷考试) 时间:45分钟 满分:100分 姓名     班级       出题人 班级 软件12-4 题目 一 二 三 四 五 总分 得分 一、选择题(5*2分)(每题1分,共10分) 1. 下列文法中,_______是LL(1)文法。 A. S→aSb|ab B. S→ab|Sab C. S→aS|b D. S→aS|a 2. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于 分析法。 A. 自左至右 B. 自顶向下 C. 自底向上 D. 自右向左 3. 自上而下分析面临的四个问题中,不包括 。 A. 需消除左递归;B. 存在回朔;C. 虚假匹配;D. 寻找可归约串 4. 语法分析器接收以________为单位的输入,并产生有关信息供以后各阶段使用。 A. 表达式;B. 产生式; C 单词;D. 语句; 5. 自上而下分析的主旨是,对任何单词符号串,试图用一切可能的办法,从文法开始符号(根结点)出发,________。 A. 为输入串寻找最右推导; B. 为输入串寻找最左直接子树; C. 为输入串建立最右直接子树;D. 为输入串寻找最左推导; 二、简答题(2*10分)(每题10分,共20分) 6. 词法分析和语法分析都是对字符串进行识别的,二者有何区别? 7. 为什么要消除回溯? 三、分析题(4题共70分) 8.设有文法G[S]: S→AB A→bB|Aa B→Sb|a 试消除该文法的左递归。(15分) 9.已知文法G[E]: G[E]:E→E+T|T T→T*F|F F→i|(E) 请按递归子程序法为其构造语法分析程序。(20分) 10.文法G[M]是否是LL(1)文法,说明理由。(15分) G[M]:M→TB T→Ba|ε B→Db|eT|ε D→d|ε 11. 已知文法G[S]: S → uBDz B → Br | w D → EF E → y | ? F → x | ? (1) 求每个非终结符的FIRST和Follow集。 (2) 构造这个文法的LL(1)分析表 (3) 说明这个文法不是LL(1)的; (3) 尽可能少地修改此文法,使其成为能产生相同语言的LL(1)文法.(20分) 第四章答案 1-5 B D D C D 6. 答:词法分析的输入符号串是一个单词,而语法分析的输入符号串是一个句子。词法分析的一个输入符号串是由单个符号组成的单词;语法分析的输入符号串是由词法分析得来的单词组成的句子。 7. 假定当前轮到非终结符A去执行匹配任务,A共有n个候选?1、?2、……?n,这时候该用哪一个候选去替换A,原始的办法是采用对所有候选采取“试探”的方法。如果某个候选不成功就需要“回退”。这个回退的过程会导致前次匹配的许多工作推到重来,效率低。而且,最终匹配不成功的时候,难以直到输入串中出错的确切位置。 8.解:本题考查消除左递归的方法。 应用消除文法左递归的算法对文法G[S]消除左递归的过程如下: 将非终结符排序为:U1=S,U2=A,U3=B 进入算法排序: i=1时,对文法无影响 i=2,j=1时:A→Aa有直接左递归,消去该直接左递归,得 A→bBA’ A’→aA’|ε i=3,j=1时:改写文法,有 B→ABb|a j=2时:改写文法,有 B→bBA’Bb|a无左递归。 所以文法G[S]消除左递归后变为: G’[S]:S→AB A→bBA’ A’→aA’|ε B→bBA’Bb|a 9.解:本题考查递归子程序的构造方法。 本题所给文法存在左递归,不满足递归子程序法对文法的要求,必须首先消除文法左递归,然后再构造分析程序。 因为文法只有左递归,采用扩充的BNF范式消除文法左递归得到: G[E]:E→T{+T} T→F{*F} F→i|(E) 然后再应用书中介绍的方法即可求解。 假定用“ADVANCE;”表示对读取下一个单词的过程的调用。 相应的递归子程序为: PROCEDURE P(E); BEGIN P(T); WHILE SYM=’+’ DO BEGIN ADVANCE; P(T) END END; PROCEDURE P(T); BEGIN P(F); WHILE SYM=’*’ DO BEG

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档