《编译原理》模拟试题5

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《编译原理》模拟试题五一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)×1.编译程序是对高级语言程序的解释执行。()×2.一个有限状态自动机中,有且仅有一个唯一的终态。()√3.一个算符优先文法可能不存在算符优先函数与之对应。()×4.语法分析时必须先消除文法中的左递归。()√5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。()√6.逆波兰表示法表示表达式时无须使用括号。()×7.静态数组的存储空间可以在编译时确定。()×8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。()×9.两个正规集相等的必要条件是他们对应的正规式等价。()×10.一个语义子程序描述了一个文法所对应的翻译工作。()二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是_____。A.()单词的种别编码B.()单词在符号表中的位置C.()单词的种别编码和自身值D.()单词自身值2.正规式M1和M2等价是指_____。A.()M1和M2的状态数相等B.()M1和M2的有向边条数相等C.()M1和M2所识别的语言集相等D.()M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。A.()xyxB.()(xyx)*C.()xnyxn(n≥0)D.()x*yx*4.如果文法G是无二义的,则它的任何句子α_____。A.()最左推导和最右推导对应的语法树必定相同B.()最左推导和最右推导对应的语法树可能不同C.()最左推导和最右推导必定相同D.()可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。A.()源程序B.()目标语言C.()编译方法D.()以上三项都是6.四元式之间的联系是通过_____实现的。A.()指示器B.()临时变量C.()符号表D.()程序变量7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。A.()┐AB∨∧CD∨B.()A┐B∨CD∨∧C.()AB∨┐CD∨∧D.()A┐B∨∧CD∨8.优化可生成_____的目标代码。A.()运行时间较短B.()占用存储空间较小C.()运行时间短但占用内存空间大D.()运行时间短且占用存储空间小9.下列______优化方法不是针对循环优化进行的。A.()强度削弱B.()删除归纳变量C.()删除多余运算D.()代码外提10.编译程序使用_____区别标识符的作用域。A.()说明标识符的过程或函数名B.()说明标识符的过程或函数的静态层次C.()说明标识符的过程或函数的动态层次D.()标识符的行号三、填空题(每空1分,共10分)1.计算机执行用高级语言编写的程序主要有两种途径:____和_____。解释_编译2.扫描器是_____,它接受输入的_____,对源程序进行_____并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。词法分析器源程序词法分析3.自上而下分析法采用____、归约、错误处理、_____等四种操作。移进_接受4.一个LR分析器包括两部分:一个总控程序和_____。一张分析表5.后缀式abc-/所代表的表达式是____。_a/(b-c)6.局部优化是在___范围内进行的一种优化。_基本块_四、简答题(20分)1.简要说明语义分析的基本功能。答:语义分析的基本功能包括:确定类型、类型检查、语义处理和某些静态语义检查。2.考虑文法G[S]:S→(T)|a+S|aT→T,S|S消除文法的左递归及提取公共左因子。解:消除文法G[S]的左递归:S→(T)|a+S|aT→ST′T′→,ST′|ε提取公共左因子:S→(T)|aS′S′→+S|εT→ST′T′→,ST′|ε3.试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。解:wab+cde10-/+8+*+4.按照三种基本控制结构文法将下面的语句翻译成四元式序列:while(AC∧BD){if(A≥1)C=C+1;elsewhile(A≤D)A=A+2;}。解:该语句的四元式序列如下(其中E1、E2和E3分别对应A<C∧B<D、A≥1和A≤D,并且关系运算符优先级高):100(j,A,C,102)101(j,_,_,113)102(j,B,D,104)103(j,_,_,113)104(j=,A,1,106)105(j,_,_,108)106(+,C,1,C)107(j,_,_,112)108(j≤,A,D,110)109(j,_,_,112)110(+,A,2,A)111(j,_,_,108)112(j,_,_,100)1135.已知文法G[S]为S→aSb|Sb|b,试证明文法G[S]为二义文法。证明:由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:因此,文法G[S]为二义文法。五.计算题(10分)已知文法A-aAd|aAb|ε判断该文法是否是SLR(1)文法,若是构造相应分析表,并对输入串ab#给出分析过程。解:增加一个非终结符S/后,产生原文法的增广文法有:S'-AA-aAd|aAb|ε下面构造它的LR(0)项目集规范族为:从上表可看出,状态I0和I2存在移进-归约冲突,该文法不是LR(0)文法。对于I0来说有:FOLLOW(A)∩{a}={b,d,#}∩{a}=Φ,所以在I0状态下面临输入符号为a时移进,为b,d,#时归约,为其他时报错。对于I2来说有也有与I0完全相同的结论。这就是说,以上的移进-归约冲突是可以解决的,因此该文法是SLR(1)文法。其SLR(1)分析表为:对输入串ab#给出分析过程为:

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功