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