第三编译原理模拟试卷
编译原理模拟题
编译原理一、单选题1、( B )是两类程序语言处理程序.A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序2.解释程序处理语言时,大多数采用的是( A )方法.A.源程序命令被逐个直接解释执行B.先将源程序转化为中间代码,再解释执行C.先将源程序解释转化为目标程序,再执行D.以上方法都可以3.( A )是一种典型的解释型语言.A.BASICB.CC.FORTRAND.PASCAL4.与编译系统相比,解释系统( D ).A.比较简单,可移植性好,执行速度快B.比较复杂,可移植性好,执行速度快C.比较简单,可移植性差,执行速度慢D.比较简单,可移植性好,执行速度慢5.编译程序是一种( B ).A.汇编程序B.翻译程序C.解释程序D.目标程序6.编译程序是对( D ).A.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译7.用高级语言编写的程序经编译后产生的程序叫( B ).A.源程序B.目标程序C.连接程序D.解释程序8.将编译程序分成若干个“遍”是为了( B ).A.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率9.构造编译程序应掌握( D ).A.源程序B.目标语言C.编译方法D.以上三项都是10.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括( C ).A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器11.编译程序绝大多数时间花在( D )上.A.出错处理B.词法分析C.目标代码生成D.管理表格12.程序的基本块是指( D ).A.一个子程序B.一个仅有一个入口和一个出口的语句C.一个没有嵌套的程序段D.一组顺序执行的程序段,仅有一个入口和一个出口13.变量应当( C ).A.持有左值B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值14.数组的内情向量中肯定不含有数组的( A )的信息.A.维数B.类型C.维上下界D.各维的界差15.一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组( B ).A.字符串B.产生式C.非开始符号D.文法16.一个文法所描述的语言是( A ).A.唯一的B.不唯一的C.可能唯一,也可能不唯一D.都不对17.文法G产生的( D )的全体是该文法描述的语言.A.句型B.终结符集C.非终结符集D.句子18.若文法G定义的语言是无限集,则文法必然是( A ).A.递归的B.前后文无关的C.二义性的D.无二义性的19.文法分为四种类型,即0型,1型,2型,3型.其中2型文法是( C ).A.短语文法B.正则文法C.上下文有关文法D.上下文无关文法20.四种形式语言文法中,1型文法又称为( D )文法.A.短语文法B.正则文法C.上下文有关文法D.上下文无关文法21.正规式M1和M2等价是指( C ).A.M1和M2的状态数相等B.Ml和M2的有向弧条数相等C.M1和M2所识别的语言集相等D.Ml和M2状态数和有向弧条数相等22.词法分析器的输出结果是( C ).A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值23.词法分析器用于识别( C ).A.字符串B.语句C.单词D.标识符24.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即( B ).A.字符B.单词C.句子D.句型25.一个句型中称为句柄的是该句型的最左( D ).A.非终结符号B.短语C.句子D.直接短语26.下推自动机识别的语言是( C ).A.0型语言B.1型语言C.2型语言D.3型语言27.如果文法G是无二义的,则它的任何句子α( A ).A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同28.采用自上而下分析,必须( C ).A.消除左递归B.消除右递归C.消除回溯D.提取公共左因子29.在规范归约中,用( B )来刻画可归约串.A.直接短语B.句柄C.最左素短语D.素短语30.若a为终结符,则A->α·aβ为( B )项目.A.归约B.移进C.接受D.待约31.高级语言编译程序常用的语法分析方法中,递归下降分析法属于( B )分析方法.A.自左向右B.自顶向下C.自底向上D.自右向左32.在通常的语法分析方法中,( A )特别适用于表达式的分析.A.算符优先分析法B.LR分析法C.递归下降分析法D.LL(1)分析法33.语法分析器则可以发现源程序中的( D ).A.语义错误B.语法和语义错误C.错误并校正D.语法错误34.后缀式ab+cd+/可用表达式( B )来表示.A.a+b/c+dB.(a+b)/(c+d)C.a+b/(c+d)D.a+b+c/d35.中间代码生成时所依据的是( C ).A.语法规则B.词法规则C.语义规则D.等价变换规则36.( B )和代码优化部分不是每个编译程序都必需的.A.语法分析B.中间代码生成C.词法分析D.目标代码生成37.常用的中间代码形式不含( D ).A.三元式B.四元式C.逆波兰式D.语法树38.代码优化的目的是( C ).A.节省时间B.节省空间C.节省时间和空间把编译程序进行等价交换39.优化可生成( D )的目标代码.A.运行时间较短B.占用存储空间较小C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小40.下列( C )优化方法不是针对循环优化进行的.A.强度削弱B.删除归纳变量C.删除多余运算D.代码外提41.基本块内的优化为( B ).A.代码外提,删除归纳变量B.删除多余运算,删除无用赋值C.强度削弱,代码外提D.循环展开,循环合并42.代码生成阶段的主要任务是( C ).A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言43.在目标代码生成阶段,符号表用于( D ).A.目标代码生成B.语义检查C.语法检查D.地址分配44.程序所需的数据空间在程序运行前就可确定,称为( C )管理技术.A.动态存储B.栈式存储C.静态存储D.堆式存储45.堆式动态分配申请和释放存储空间遵守( D )原则.A.先请先放B.先请后放C.后请先放D.任意46.编译程序使用( B )区别标识符的作用域.A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号47.生成能被5整除的正整数的文法G[Z]是( C ).A.G(Z):Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5B.G(Z):Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5C.G(Z):Z→AC|5,A→BA|B,B→0|1|2|…|9,C→0|5D.G(Z):Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|548.符号串ab1b2是给定文法G[A]:A→aB,B→bB|b的句子,该句子的句柄是( B ).A.b1B.b2C.cD..b1b249.一般程序设计语言的定义都涉及( B )三个方面.①语法②语义③语用④程序基本符号的确定A.①,②和③B.①,②和④C.①,③和④D.②,③和④50.下述语句类中,( C )在编译阶段通常不产生可执行代码.A.赋值语句B.流程控制语句C.说明语句D.输入输出语句51.算符文法是指( A )的文法.①没有形如U→...VW...的规则(U,V,W VN)②VT中任意两个符号之间至多存在一种算符优先关系③没有相同右部的规则④没有形如U→ε的规则A.①B.①和②C.①,②和③D.①,②,③和④52.已知文法G[E]:E→ABC,A→1|2|3|4|5|6|7|8|9,B→BA|B0|ε,C→0|2|4|6|8,对符号串128,它的最左推导是( C ).A.EÞABCÞAB8ÞABA8ÞAB28ÞA28Þ128B.EÞABCÞABACÞAACÞ1ACÞ12CÞ128C.EÞABCÞ1BCÞ1BACÞ1ACÞ12CÞ128D.EÞABCÞ1BCÞ1BACÞ1ACÞ1A8Þ12853.程序的基本块是指( D ).A.不含无条件转移语句的程序段B.不含条件转移语句的程序段C.不含停机的语句程序段D.仅含有一个入口语句和一个出口语句的顺序程序段54.在编译程序采用的优化方法中,( D )是在循环语句范围内进行的.①合并已知常量②删除多余运算③删除归纳变量④强度削弱⑤代码外提A.①④B.①⑤C.①④⑤D.③④⑤55.设有文法G[I]:I→I1|I0|Ia|Ic|a|b|c,下列符号串中是该文法的句子的有( B ).①ab0 ②a0c01 ③aaa ④bc10A.①B.②③④C.③④D.①②③④56.LR(0)分析法中,语法分析栈中存放的状态是识别规范句型( B )的DFA状态.A.前缀B.活前缀C.LR(0)项目D.句柄57.常用( D )来识别一个正规集A.无穷自动机B.图灵机C.下推自动机D.有穷自动机58.文法所描述的语言是( D )的集合.A.文法的字汇表V中符号组成的符号串B.文法的字汇表V中终结符号组成的符号串C.由文法开始符推导的符号串D.由文法开始符推导的终结符号串59.LL(1)文法中第一个L表示( C ).A.最左推导B.最左归约C.从左到右识别输入串D.规范归约60.编译程序前三个阶段完成的工作是( C )A.词法分析,语法分析和代码优化代码生成,代码优化和词法分析B.词法分析,语法分析,语义分析和中间代码生成C.词法分析,语法分析和代码优化二.判断题1.逆波兰表示法表示表达式时无须使用括号.( ✔)2.静态数组的存储空间可以在编译时确定.(✘)3.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用.(✘)4.树形表示和四元式不便于优化,而三元式和间接三元式则便于优化.(✘)5.计算机高级语言翻译成低级语言只有解释一种方式.(✘)6.用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行.(✘)7.在编译中进行语法检查的目的是为了发现程序中所有错误.(✘)8.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同.(✔)9.编译程序与具体的机器有关,与具体的语言无关.(✘)10.编译程序是对高级语言程序的解释执行.(✘)11.程序语言的语言处理程序是一种应用软件.(✘)12.在程序中标识符的出现仅为使用性的.(✘)13.仅考虑一个基本块,不能确定一个赋值是否真是无用的.(✔)14.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型,种属,所占单元大小,地址等等.(✘)15.一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态.(✔)16.一个有限状态自动机中,有且仅有一个唯一的终态.(✘)17.产生式是用于定义词法成分的一种书写规则.(✘)18.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄.(✘)19.一个句型的句柄一定是文法某产生式的右部.(✔)20.词法分析作为单独的一遍来处理较好.(✘)21.正则文法其产生式为A->a,A->Bb,A,B∈VN,a,b∈VT.(✘)22.正规文法产生的语言都可以用上下文无关文法来描述.(✘)23.设r和s分别是正规式,则有L(r|s)=L(r)L(s).(✘)24.确定的自动机以及不确定的自动机都能正确地识别正规集.(✔)25.每个文法都能改写为LL(1)文法.(✔)26.一个LL(l)文法一定是无二义的.(✘)27.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的.(✔)28.语法分析时必须先消除文法中的左递归.(✘)29.综合属性是用于“自上而下”传递信息.(✘)30.规范归约和规范推导是互逆的两个过程.(✘)31.递归下降法允许任一非终极符是直接左递归的.(✔)32.递归下降分析法是自顶向上分析方法.(✔)33.算符优先关系表不一定存在对应的优先函数.(✘)34.一个算符优先文法可能不存在算符优先函数与之对应.(✔)35.自底而上语法分析方法的主要问题是候选式的选择.(✘)36.LR法是自顶向下语法分析方法.(✘)37.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点.(✔)38.构造LR分析器的任务就是产生LR分析表.(✔)39.LR分析技术无法适用二义文法.(✘)40.简单优先文法允许任意两个产生式具有相同右部.(✘)41.程序中的表达式语句在语义翻译时不需要回填技术.(✔)42.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性.(✔)43.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度.(✘)44.对中间代码的优化依赖于具体的计算机.(✘)45.数组元素的地址计算与数组的存储方式有关.(✘)46.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题.(✘)47.逆波兰法表示的表达式亦称前缀式.(✔)三.填空题1.编译方式与解释方式的根本区别在于是否生成目标代码 .2.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序 .3.对编译程序而言,输入数据是源程序,输出结果是目标程序.4.编译程序的工作过程一般划分为5个阶段:词法分析, 语法分析,语义分析与中间代码生成,代码优化及目标代码生成.5.一个名字的属性包括类型和作用域.6.设G是一个给定的文法,S是文法的开始符号,如果S->x(其中x∈VT*),则称x是文法的一个句子 .7.扫描器的任务是从源程序中识别出一个个单词符号 .8.规范规约是最左规约.9.词法分析基于正则文法进行,即识别的单词是该类文法的句子.10.文法符号的属性有综合属性和继承属性 .11.语法分析器的输入是单词符号串,其输出是语法单位.12.语法分析的有效工具是语法树 .13.语法分析最常用的两类方法是自上而下和自下而上分析法.14.分析句型时,应用算符优先分析技术时,每步被直接归约的是最左素短语 .15.应用LR分析技术时,每步被直接归约的是句柄 .16.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配.17.自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行直接归约,力求归约到文法的开始符号.18.自上而下分析法采用移进,归约,错误处理,接受等四种操作.19.一个LR分析器包括两部分:一个总控程序和一张分析表 .20.递归下降法不允许任一非终极符是直接左递归的.21.对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则 .22.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法 .23.预测分析程序是使用一张分析表和一个符号栈进行联合控制的.四.问答题1.简述编译程序各组成部分的主要功能.[答案]:词法分析器:输入源程序,进行词法分析,输出单词符号.语法分析器:在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的“程序”.中间代码生成器:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式.优化:对中间代码进行优化处理.目标代码生成器:把中间代码翻译成目标语言程序.表格管理模块保存一系列的表格,登记源程序的各类信息和编译各阶段的进展情况.编译程序各阶段所产生的中间结果都记录在表格中,所需信息多数都需从表格中获取,整个编译过程都在不断地和表格打交道.出错处理程序对出现在源程序中的错误进行处理.此外,编译的各阶段都可能出现错误,出错处理程序对发现的错误都及时进行处理.2.文法G[S]为:S->Ac|aBA->abB->bc写出L(G[S])的全部元素.[答案]:S=>Ac=>abcS=>aB=>abc所以L(G[S])={abc}3.什么是句子?什么是语言?[答案]:设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈VT*),则称x是文法的一个句子.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│Sx,x∈VT*}.4.一字母表∑={a,b},试写出∑;上所有以a为首的字组成的正规集相对应的正规式.[答案]:正规式a(a|b)*。
03-编译原理课程测试第三套卷(附解析)-编译原理试题-中国科技大学
(b)每个函数都有这样的标号.L1,它的作用是什么,为什么本函数没有引用该标号的地方?
main()
{
long i,j;
if ( j )
i++;
else
while (i) j++;
(b) .L1标号定义的入口是返回调用者时该执行的指令,在函数内部有return语句时就会跳转到.L1。
8.这是基于下面几点原因。
1.两个函数库libuser1.a和libuser2.a都定义了某个函数或某个置初值的外部变量,把它简称为a。
2.test.c引用a。
3.test.c还引用libuser2.a的其它某个函数或外部变量,把它简称为b。在libuser2.a中,a和b在同一个目标文件中。
9.(5分)根据教材上所介绍的方法,C++中的对象声明语句应如何翻译成C语句?如教材图11.11(旧教材的图10.11)程序中的
Point _center;
应怎样翻译?
编译原理课程测试第三套卷参考答案
1.(a)语言{ ( ), (( )( )), ((( ))), ( )( )( )( )( )}是正规语言,因为该语言只包括有限个句子,它可以用正规式定义如下:
SDCif D.lengthC.length then print (“error”)
Da bD.length := 1
Da D1bD.length := D1.length + 1
CcC.length := 1
CC1cC.length := C1.length + 1
编译原理》模拟期末试题汇总6套含答案
《编译原理》模拟试题一一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.计算机高级语言翻译成初级语言只有解说一种方式。
(×)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(×)3.甲机上的某编译程序在乙机上能直接使用的必需条件是甲机和乙机的操作系统功能完整同样。
(√) 4.正则文法其产生式为A->a ,A->Bb, A,B∈VN,a 、b∈VT。
(×)5.每个文法都能改写为LL(1) 文法。
(√)6.递归降落法同意任一非终极符是直接左递归的。
(√)7.算符优先关系表不必定存在对应的优先函数。
(×)8.自底而上语法剖析方法的主要问题是候选式的选择。
(×)9.LR法是自顶向下语法剖析方法。
(×)个10.简单优先文法同意随意两个产生式拥有同样右部。
(×)二、选择题(请在前括号内选择最切实的一项作为答案划一个勾,多划按错论)(每4分,共40分)1.一个编译程序中,不单包含词法剖析,_____,中间代码生成,代码优化,目标代码生成等五个部分。
A.() 语法剖析B.()文法剖析C.()语言剖析D.()解说剖析2.词法剖析器用于辨别A.()字符串C.()单词_____。
B.()D.()语句表记符3.语法剖析器则能够发现源程序中的_____。
A.() C.()语义错误错误并校订B.()D.()语法和语义错误语法错误4.下边对于解说程序的描绘正确的选项是_____。
解说程序的特色是办理程序时不产生目标代码解说程序合用于COBOL和FORTRAN语言解说程序是为翻开编译程序技术的僵局而开发的A.()(1)(2) B.()(1) C.()(1)(2)(3) D.()(2)(3) 5.解说程序办理语言时, 大部分采纳的是_____方法。
A.()源程序命令被逐一直接解说履行B.() C.()先将源程序转变为中间代码先将源程序解说转变为目标程序,再解说履行, 再履行D.()以上方法都能够6.编译过程中,语法剖析器的任务就是_____。
编译原理自测(一、二、三)及答案
编译原理⾃测(⼀、⼆、三)及答案编译原理⾃测⼀⼀、是⾮题(下列各题,你认为正确的,请在题⼲的括号内打“√”,错的打“×”。
每题1分,共5分)1、算符优先关系表不⼀定存在对应的优先函数。
A.正确B.不正确2、数组元素的地址计算与数组的存储⽅式有关。
A.正确B.不正确3、仅考虑⼀个基本块,不能确定⼀个赋值是否真是⽆⽤的。
A.正确B.不正确4、每个⽂法都能改写为LL(1)⽂法。
A.正确B.不正确5、对于数据空间的存贮分配,FORTRAN采⽤动态贮存分配策略。
A.正确B.不正确⼆、填空题1、从功能上说,程序语⾔的语句⼤体可分为两⼤类。
2、扫描器的任务是从3、所谓最右推导是指:(任何⼀步αβ都是对α中最右⾮终结符进⾏替换的)4、语法分析最常⽤的两类⽅法是5、⼀个上下⽂⽆关⽂法所含四个组成部分是(⼀组终结符号,⼀组⾮终结符号、⼀个开始符号、⼀组产⽣式)6、所谓语法制导翻译⽅法是(为每个产⽣式配上⼀个翻译⼦程序,并在语法分析的同时执⾏这些⼦程序)7、符号表中的信息栏中登记了每个名字的有关的性质,如8、⼀个过程相应的DISPLA Y表的内容为9、常⽤的两种动态存贮分配办法是配。
10、产⽣式是⽤于定义三、名词解释1.遍--指编译程序对源程序或中间代码程序从头到尾扫描⼀次。
2.⽆环路有向图(DAG)--如果有向图中任⼀通路都不是环路,则称庐有向图为⽆环路有向图,简称DAG。
3.语法分析--按⽂法的产⽣式识别输⼊的符号串是否为⼀个句⼦的分析过程。
4.短语--令G是⼀个⽂法。
S划⽂法的开始符号,假定αβδ是⽂法G的⼀个句型,如果有SαAδ且AB,则称β是句型αβ相对⾮终结符A的短语。
5.后缀式--⼀种把运算量写在前⾯,把算符写在后⾯的表⽰表达式的⽅法。
编译原理⾃测⼆⼀、是⾮题(下列各题,你认为正确的,请在题⼲的括号内打“√”,错的打“×”。
每题1分,共5分)1、⼀个LL(1)⽂法⼀定是⽆⼆义的。
A.正确B.不正确2、逆波兰法表⽰的表达式亦称前缀式。
完整word版编译原理考试试题及答案
完整word版编译原理考试试题及答案《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.一个优先表一定存在相应的优先函数。
( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13.递归下降分析法是一种自下而上分析法。
( )14.并不是每个文法都能改写成LL(1)文法。
( )15.每个基本块只有一个入口和一个出口。
( )16.一个LL(1)文法一定是无二义的。
( )17.逆波兰法表示的表达试亦称前缀式。
( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19.正规文法产生的语言都可以用上下文无关文法来描述。
( )20.一个优先表一定存在相应的优先函数。
( )21.3型文法一定是2型文法。
( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
( )二、填空题:1.( 最右推导 )称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。
4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。
5.语法分析器的输入是(),其输出是()。
6.扫描器的任务是从()中识别出一个个()。
编译原理模拟题
编译原理模拟题《编译原理》模拟题(补)⼀.单项选择题1.算符⽂法是指____ A _____的⽂法。
①没有形如U→...VW...的规则(U,V,W?VN)②VT中任意两个符号之间⾄多存在⼀种算符优先关系③没有相同右部的规则④没有形如U→ε的规则A.①B.①和②C.①、②和③D.①、②、③和④2.⽣成能被5整除的正整数的⽂法G[Z]是____ C _____。
A.G(Z):Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5B.G(Z):Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5C.G(Z):Z→AC|5,A→BA|B,B→0|1|2|…|9,C→0|5D.G(Z):Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|53.LL(1)⽂法中第⼀个L表⽰___ C ______。
A. 最左推导B. 最左归约C. 从左到右识别输⼊串D. 规范归约4.程序的基本块是指___ D ______。
A.不含⽆条件转移语句的程序段B.不含条件转移语句的程序段C.不含停机的语句程序段D.仅含有⼀个⼊⼝语句和⼀个出⼝语句的顺序程序5.LR(0)分析法中,语法分析栈中存放的状态是识别规范句型___ B ______的DFA状态。
A.前缀B.活前缀C.LR(0)项⽬D.句柄6.在编译程序采⽤的优化⽅法中,__________ D ___________是在循环语句范围内进⾏的。
①合并已知常量②删除多余运算③删除归纳变量④强度削弱⑤代码外提A.①④B.①⑤C.①④⑤D.③④⑤7.符号串ab1b2是给定⽂法G[A]:A→aB,B→bB|b的句⼦,该句⼦的句柄是___ B ______。
A.b1B.b2C.cD.b1b28.已知⽂法G[E]:E→ABC,A→1|2|3|4|5|6|7|8|9,B→BA|B0|ε,C→0|2|4|6|8,对符号串128,它的最左推导是___ C _______。
编译原理编译原理考试卷模拟考试题.docx
《编译原理》考试时间:120分钟 考试总分:100分遵守考场纪律,维护知识尊严,杜绝违纪行为,确保考试结果公正。
1、将编译程序分成若干个“遍”是为了()( )A.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握()( )A.源程序B.目标语言C.编译方法D.以上三项都是3、变量应当()( )A.持有左值B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值4、编译程序绝大多数时间花在()上。
( ) A.出错处理 B.词法分析 C.目标代码生成 D.管理表格5、词法分析器的输出结果是()( )姓名:________________ 班级:________________ 学号:________________--------------------密----------------------------------封 ----------------------------------------------线-------------------------A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值6、正规式MI和M2等价是指()()A.MI和M2的状态数相等B.Ml和M2的有向弧条数相等。
C.M1和M2所识别的语言集相等D.Ml和M2状态数和有向弧条数相等7、中间代码生成时所依据的是()()A.语法规则B.词法规则C.语义规则D.等价变换规则8、后缀式ab+cd+/可用表达式()来表示。
()A.a+b/c+dB.(a+/(c+C.a+b/(c+D.a+b+c/d9、程序所需的数据空间在程序运行前就可确定,称为()管理技术。
()A.动态存储B.栈式存储C.静态存储D.堆式存储10、堆式动态分配申请和释放存储空间遵守()原则。
()A.先请先放B.先请后放C.后请先放D.任意11、一个编译程序中,不仅包含词法分析,(),中间代码生成,代码优化,目标代码生成等五个部分。
编译原理模拟试卷和答案
北京语言大学网络教育学院《编译原理》模拟试卷一注意:1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。
请监考老师负责监督。
2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。
3.本试卷满分100分,答题时间为90分钟。
4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。
一、【单项选择题】(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在答题卷相应题号处。
1、一个编译程序中,包含词法分析、()、中间代码生成、代码优化、目标代码生成等五个部分。
[A] 语法分析[B] 文法分析[C] 语言分析[D] 解释分析2、词法分析器用于识别()。
[A] 字符串[B] 语句[C] 单词[D] 标识符3、语法分析器则可以发现源程序中的()。
[A] 语义错误[B] 语法和语义错误[C] 错误并校正[D] 语法错误4、下面关于解释程序的描述正确的是()。
(1) 解释程序的特点是处理程序时不产生目标代码。
(2) 解释程序适用于COBOL 和FORTRAN 语言。
(3) 解释程序是为打开编译程序技术的僵局而开发的。
[A] (1)(2)[B] (1)[C] (1)(2)(3)[D] (2)(3)5、解释程序处理语言时, 大多数采用的是()方法。
[A] 源程序命令被逐个直接解释执行[B] 先将源程序转化为中间代码, 再解释执行[C] 先将源程序解释转化为目标程序, 再执行[D] 以上方法都可以6、编译过程中, 语法分析器的任务就是()。
(1) 分析单词是怎样构成的(2) 分析单词串是如何构成语句和说明的(3) 分析语句和说明是如何构成程序的(4) 分析程序的结构[A] (2)(3)[B] (2)(3)(4)[C] (1)(2)(3)[D] (1)(2)(3)(4)7、编译程序是一种()。
[A] 汇编程序[B] 翻译程序[C] 解释程序[D] 目标程序8、文法G 所描述的语言是()的集合。
编译原理模拟试题和答案[编译原理模拟试题和答案.d
【题型】简答题1题干】现有文法G[S]:B→idt|ε请问aidtccb是句型还是句子,为什么?S→aAbA→BcA|B【答案】S ⇒aAb ⇒aBcAb ⇒aidtcAb ⇒aidtcBcAb ⇒aidtc εcAb ⇒ aidtccAb⇒aidtccBb ⇒aidtcc εb ⇒ aidtccb是句型,也是句子。
【题型】简答题2题干】设有文法G1[S]:<S>→<N><N>→<D>|<N><D><D→0|1|2|…|9试写出028的最左推导过程。
【答案】028的最左推导:<S>=><N>=><N><D>=><N><D><D>=><D><D><D>=>0<D><D>=>02<D>=>028。
3题型】填空题【题干】递归下降法不允许任一非终结符是直接_______________递归的。
【答案】左;4题型】填空题【题干】在使用高级语言编程时,首先可通过编译程序发现源程序的全部_______________错误和部分语义错误。
【答案】语法;5题型】填空题【题干】把汇编语言程序翻译成机器可执行的目标程序的工作是由_______________完成的。
【答案】汇编器;6题型】填空题【题干】语法分析器的输出是_______________。
【答案】语法单位;循环优化的三种重要技术包括删除归纳变量、代码外提和_______________。
【答案】强度消弱;8题干】写出表达式(a+b)/(a-b)-a(a+b*c)的三元式序列及四元式序列。
【答案】三元式:⑴.(+,a,b) ⑵.(-,a,b) ⑶.(/,⑴,⑵) ⑷.(*,b,c) ⑸.(+,a,⑷) ⑹.(-,⑶,⑸)四元式:⑴.(+,a,b,T1) ⑵.(-,a,b,T2) ⑶.(/,T1,T2,T3) ⑷.(*,b,c,T4) ⑸.(+,a,T4,T5) ⑹.(-,T3,T5,T6)9题干】什么是句子?什么是语言?【答案】(1)设G是一个给定的文法,S是文法的开始符号,如果S→x(其中x∈VT*),则称x是文法的一个句子。
编译原理试题及答案(期末复习版)
<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题1.将编译程序分成若干个“遍”是为了_b__。
a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握__d__。
a.源程序b.目标语言c.编译方法d.以上三项都是3.变量应当c_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4.编译程序绝大多数时间花在_d___上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5.词法分析器的输出结果是_c___。
a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值d.单词自身值6.正规式MI和M2等价是指__c__。
a.MI和M2的状态数相等b.Ml和M2的有向弧条数相等。
C.M1和M2所识别的语言集相等 d.Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—c。
a.语法规则b.词法规则c.语义规则d.等价变换规则8.后缀式ab+cd+/可用表达式__b_来表示。
a.a+b/c+d b.(a+b)/(c+d)c.a+b/(c+d)d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。
a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守___d_____原则。
a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。
2.已知文法G[E]:E→ET+|T T→TF*|F F→F^|a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b)*a(a|b)构造一个确定的有限自动机。
4.设文法G(S):S→(L)|a S|aL→L,S|S(1)消除左递归和回溯;(2)计算每个非终结符的FIRST和FOLLOW;(3)构造预测分析表。
编译原理模拟试卷及答案集
1.由文法开始符号经0步或多步推导产生的文法符号序列是__句型__。
2.编译器通常经历___词法分析______、____语法分析_______、__语义分析和中间代码生成___、____优化___、__目标代码生成___等几个阶段;其中第一个阶段是以__源程序__为输入,_单词符号_为输出;最后一阶段是以_中间代码_为输入,_机器语言程序或汇编语言程序__为输出。
同时_表格管理_和_出错处理_贯穿编译器的各个阶段。
3.解释器与编译器的主要区别是:____编译程序生成目标代码,而解释程序不生成目标代码____。
4.高级语言到低级语言的翻译过程称为__编译__。
汇编语言到机器语言的翻译过程称为__汇编__。
二、单项选择题(20分,每小题2分)1.正规表达式(ε|a|b)2表示的集合是( D )。
A.{ε,ab,ba,aa,bb} B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb} D.{ε,a,b,aa,bb,ab,ba}2.分析树的内部结点仅由( C )组成。
A.开始符号和非终结符号B.终结符号和非终结符号C.非终结符号 D.终结符号3.文法S→(L)|aL→L,S|S 的终结符号是(C)。
A.S B.S L C. a , ( ) D.a , ( ) |4.NFA M所识别的语言是( D )。
A.0型语言 B.上下文有关语言C.上下文无关语言 D.正规语言5.同正规式a*b*等价的文法是( C )。
A.S→aS|bS|ε B. S→aSb|εC.S→aS|Sb|εD.S→abS|ε6.对LR分析表的构造,不可能存在( C )动作冲突。
A.移进/归约B.归约/归约 C.移进/移进 D.以上都不对7.LR分析模式中,改变格局变化的动作不包括( B )。
A.移进B.匹配终结符C.归约D.接受8.如果一个文法G是二义文法,则必存在某个句子X∈L(G),该句子()。
A.存在两个不同的最右推导和一个最左推导B.存在两个不同的最左推导和一个最右推导C.最左推导和最右推导不同D.存在两个不同的最左推导和两个不同的最右推导9.一个句型的最左直接短语称为( D )。
模拟题-编译原理
、选择. ( B )是两类程序语言处理程序。
A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序.编译程序前三个阶段完成的工作是(C )A.词法分析、语法分析和代码优化代码生成、代码优化和词法分析.词法分析、语法分析、语义分析和中间代码生成C.词法分析、语法分析和代码优化.代码优化的目的是(C )。
A.节省时间3 .描述一个语言的文法是(C )。
A.唯一的B.不唯一的C.可能唯一,也可能不唯一D.都不对.下推自动机识别的语言是(C )。
A.0型语言B.1型语言C.2型语言D.3型语言.如果文法G 是无二义的,则它的任何句子。
(A )。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同7 . LR (0)分析法中,语法分析栈中存放的状态是识别规范句型(B )的DFA 状态。
前缀活前缀LR (0)项目句柄8 .若文法G 定义的语言是无限集,则文法必然是(A)。
A.递归的B.前后文无关的C.二义性的D.无二义性的[分析]本题考查语言文法的特点。
A .B .9 .扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即(B )。
A.字符B.单词C.句子D.句型.算符文法是指(A )的文法。
①没有形如的规则(U, V, WIVN )②叮中任意两个符号之间至多存在一种算符优先关系③没有相同右部的规则④没有形如U- £的规则①①和②①、②和③①、②、③和④11. 一般程序设计语言的定义都涉及(B )三个方面。
①语法②语义③语用④程序基本符号 的确定 A.①、②和③B.①、②和④C.①、③和④D.②、③和④[解析]一般情况下,程序设计语言的定义都涉及语法、语义、语用等3个方面。
①语法是指由程序语言基本符号 组成程序中的各个语法成分(包括程序)的一组规则,不涉及语法成分的特定含义,也不涉及使用者。
8套《编译原理》期末模拟试卷+参考答案
3.(10 分)为下面的语言写一个无二义的文法: ML 语言中用分号分隔语句的语句块,例如:
( (s ; s ) ; ( s ; s ; s ) ; s ) ; ( s ; s )
4.(20 分)考虑一个类 Pascal 的语言,其中所有的变量都是整型(不需要显 式声明),并且仅包含赋值语句、读语句、写语句,条件语句和循环语句。下
面的产生式定义了该语言的语法(其中 lit 表示整型常量;OP 的产生式没有给 出,因为它和下面讨论的问题无关)。
定义 Stmt 的两个属性:MayDef 表示它可能定值的变量集合,MayUse 表 示它可能引用的变量集合。
(1)写一个语法制导定义或翻译方案,它计算 Stmt 的 MayDef 和 MayUse 属性。
编译结果报错的主要信息如下: multiple definition of ‘a’
试分析为什么会报这样的错误。
10.(5 分)按照教材上介绍的方法,把下面 C++语言的函数翻译成 C 的函 数。
void zoom (GraphicalObj &obj, double zoom_factor, Point ¢er) {
接受该语言的最简 DFA 是:
b
start
a
1a
编译原理第3章习题及答案(文法和语言)
17.教材3.14题
18.教材3.16题
习题 第3章 文法和语言 参考答案
1.写一文法,使其语言是偶整数集合。
解:允许以0打头
G:N→+A|-A|A
A→DA|E
D→0|1|2|3|4|5|6|7|8|9
E→0|2|4|6|8
2.写一文法,使其语言是偶整数集合,但不允许由0打头。
Q→b
A→aAQBR|a
R→c
11.已知C语言的下标变量形如:
a[E][E]…[E]
按第10题要求的文法G2的形式写出下标变量文法。
解:G:S→aA
A→[EB
B→]A
B→]
12.设有文法G1:S → aBcA
S → aBdB
A → bA
A → aB
B → BdBຫໍສະໝຸດ → a将其改写成文法G2,使得对每个非终结符均无两个不同规则能导出相同的终结开头符。
解:二义性文法G:S→aS|Sa|a
∵句子aa存在两棵语法树:
∴G是二义性文法。
17.教材3.14题
解:(1) G1:S→CD (2) G2:S→1S0|A (3) G3:S→0S0|aSa|a
C→aCb|A→0A1|
D→aDb|
18.教材3.16题
解:(1) G1:A→aA|(2) G2:A→aA|aB (3) G3:A→aA|bB|cC|
A → a
将其改写成以下形式的文法G2,每条规则形如:
V → pX1X2…Xn
或V → q
其中V和Xi为非终结符,p和q为终结符。
11.已知C语言的下标变量形如:
a[E][E]…[E]
按第10题要求的文法G2的形式写出下标变量文法。
编译原理与技术期末考试模拟试题3及答案
编译原理与技术模拟试题三一、填空题(20分,每空2分)1.1和是编译程序各阶段都涉及到的工作。
答案:出错处理,符号表管理解释:编译过程包含词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,以及符号表管理和出错处理。
其中,符号表管理和出错处理是编译程序各阶段都涉及到的工作。
1.2用LR方法实现语法分析时,典型的操作有__________、__________、接受和报错。
答案:移进,归约解释:移进-归约是实现LR分析的一般方法,典型的操作有移进、归约、接受和报错。
1.3一个上下文无关文法(N,T,P,S)的四个组成部分是终结符集合N、非终结符集合T、和。
答案:产生式集合,开始符号解释:根据定义。
1.4已知数组M[1..5,1..8]以行为主序存放,如果每个元素占4个存储单元,且起始地址为a,则元素M[4,7]的地址是__________。
数组元素的地址计算公式由两部分组成,一部分是不变部分,它在_________时确定;另一部分是可变部分,它在________时确定。
答案:a+120,编译,运行解释:计算排列在M[4,7]之前的元素个数即可。
计算数组元素的地址时,计算公式由两部分组成,一部分是不变部分,与数组的维数和每维的大小有关,编译时即可确定其值;另一部分是可变部分,与下表变量的值有关,在程序运行时才能确定。
1.5表达式(a+b)*c-d的逆波兰(后缀)表达式为___________________________。
答案:ab+c*d-解释:从表达式的求值过程考虑。
逆波兰式中,操作符在前,操作数紧随其后,无需用括号限制运算的优先级和结合性。
运算符的书写顺序就是处理顺序,中缀表达式要根据运算符的优先级和结合性进行处理。
二、单选题(10分,每空2分)2.1生成中间代码所依据的是__________。
A.语法规则B.词法规则C.语义规则D.等价变换规则答案:D解释:中间代码实际上应起一个编译器前端与后端分水岭的作用。
最新《编译原理》模拟期末试题汇总-6套-含答案资料
《编译原理》模拟试题一一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.计算机高级语言翻译成低级语言只有解释一种方式。
(×)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(×)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(√ )4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、b∈VT 。
(×)5.每个文法都能改写为 LL(1) 文法。
(√)6.递归下降法允许任一非终极符是直接左递归的。
(√)7.算符优先关系表不一定存在对应的优先函数。
(×)8.自底而上语法分析方法的主要问题是候选式的选择。
(×)9.LR 法是自顶向下语法分析方法。
(×)10.简单优先文法允许任意两个产生式具有相同右部。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分。
A.( ) 语法分析B.( )文法分析C.( )语言分析D.( )解释分析2.词法分析器用于识别_____。
A.( ) 字符串B.( )语句C.( )单词 D.( )标识符3.语法分析器则可以发现源程序中的_____。
A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正D.( ) 语法错误4.下面关于解释程序的描述正确的是_____。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1)C.( ) (1)(2)(3) D.( ) (2)(3) 5.解释程序处理语言时 , 大多数采用的是_____方法。
编译原理模拟试卷
编译原理A一、不定项选择题(每题5分,共8题,计40分)1. 下面说法错误的有(CD)。
A、编译前端完成对源程序的分析B、编译后端对源程序进行综合C、编译器等同于解释器D、编译器可以发现源程序的全部语法错误和全部语义错误2. 下面(ACD )是编译程序的组成部分。
A、词法分析程序B、设备管理程序C、语法分析程序D、代码生成程序3. 不属于下面正规式定义的语言集合的元素有( C )。
这里,id是字母开头,后跟字母或数字的,长度不超过10的字符串形式。
( int | float | double ) id (, id )* ;A、int a;B、int a,b,d;C、float xyz abc;D、double m;4. C语言编译中的存储分配策略是( B )。
A、静态存储分配策略B、动态存储分配策略C、最佳分配策略D、时钟分配策略5. Java编译器生成的是( BCD )。
A、JavacB、.class文件C、BytecodeD、字节码6. 文法G(E): E → i | E+E | E*E | (E) 不可以产生的句子是( CD )。
A、(i)B、i*(i+i)+(i*i)C、i++D、(i+())7. 常用的中间代码表示形式有( ABC )。
A、后缀表示B、图形表示C、三地址码D、中缀表示8. 在编译过程中,符号表的主要作用有( CD )。
A、帮助错误处理B、辅助语法错误的检查C、辅助语义的正确性检查D、辅助代码生成E、辅助对目标程序的优化二、判断题(每题2分,共10题,计20分,写对或错)1. 编译的整个过程都要包括符号表管理和出错管理两个部分。
(对)2. 文法E → E + id | id是SLR(1)文法也是LR(1)文法。
(对)3. 对任何一个编译程序来说,产生中间代码是不可缺少的一部分。
( 错 )4. 如果一种程序语言允许数据对象能够自由地分配和释放,就需要采用堆式存储分配方法。
(对)5. 正规文法、正规式、确定有限自动机和非确定有限自动机在接收语言的能力上是互相等价的。
编译原理样题3(有答案
编译原理样题一选择题[]1. 型文法也称为正规文法。
[A] O [B] 1 [C] 2 [D] 3[]2. 文法不是LL(I)的。
[A]递归 [B]右递归 [C] 2型 [D]含有公共左因子的【]3.文法E-E+E∣E*E∣i的句子i*i+i*i的不同语法分析树的总数为。
[A]l [B]3 [C]5 [D]7[]4.四元式之间的联系是通过实现。
[A]临时变量 [B]指示器 [C]符号表[D]程序变量[1 5.同心集合并可能会产生的新冲突为 O[A]二义[B]移进/移进[C]移进/归约[D]归约/归约[]6.代码优化时所依据的是 o[A]语法规则[B]词法规则 [C]等价变换规则 [D]语义规则1]7.表达式a-(-b) *c的逆波兰表示为 o[A]a-b@c* [B]abθc*- [C]ab0- [D]ab0c-* (注:©为单目减运算符)[]8.过程的D:ISPLAY表记录了。
[A]过程的连接数据[B]过程的嵌套层次[C]过程的返回地址[D]过程的入口地址二填空题1.编译过程的六个阶段为:词法分析、、语义分析、代码优化和目标代码生成。
2.词法分析阶段的任务式从左到右扫描,从而逐个识别 o3.对于文法Gl和G2,若有,则称文法Gl和G2是等价的。
4.对于文法 G[E] : E→T∣E+T T→F∣T*F F→P^F∣ P PT(E)I i,句型 T+T*F+i 的句柄是,最左素短语是 O所谓素短语是指这样的一个短语,它至少含有一个终结符,并且,除它自身之外不再含任何更小的素短语。
所谓最左素短语是指处于句型最左边的那个素短语。
如,P*P和i是句型P*P+i的素短语,而P*P 是它的最左素短语。
5.最右推导的逆过程称为,也称为。
6.规范规约中的可规约串是,算符优先分析中的可规约串是 o7. (AV B) A (CV -I DA E)的逆波兰式是 o8.在属性文法中文法符号的两种属性分别称为和 O9.符号表的每•项是由名字栏和两个栏目组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理模拟试卷(三)
一、单项选择题%15
1、编译程序是对。
a.汇编程序的翻译b.高级语言程序的解释执行
c.机器语言的执行d.高级语言的翻译
2、语法分析应遵循。
a.语义规则b.语法规则
c.构词规则d.等价变换规则
3、设文法为:S→SA|A
A→a|b
则对句子aba,下面是规范推导。
a. S⇒SA⇒SAA⇒AAA⇒aAA⇒abA⇒aba
b. S⇒SA⇒SAA⇒AAA⇒AAa⇒Aba⇒aba
c. S⇒SA⇒SAA⇒SAa⇒Sba⇒Aba⇒aba
d. S⇒SA⇒Sa⇒SAa⇒Sba⇒Aba⇒aba
4、文法G:S→b|∧(T)
T→T,S|S
则FIRSTVT(T) 。
a. {b,∧,(}
b. {b,∧,)}
c.{b,∧,(,,}
d.{b,∧,),,}
5、产生正规语言的文法为。
6、一个 A 指明了在分析过程中的某时刻所能看到产生式多大一部分。
a.活前缀
b.前缀
c.项目
d.项目集
7、中间代码生成所依据的是C。
a.语法规则
b.词法规则
c.语义规则
d.等价变换规则
8、四元式之间的联系是通过 B 实现的。
a.指示器
b.临时变量
c.符号表
d.程序变量
9、后缀式ab+cd+/可用表达式 B 来表示。
a.a+b/c+d
b.(a+b)/(c+d)
c.a+b/(c+d)
d.a+b+c/d
10、表达式(┓A∨B)∧(C∨D)的逆波兰表示为ERB 。
a. ┓AB∨∧CD∨
b. A┓B∨CD∨∧
c. AB∨┓CD∨∧
d. A┓B∨∧CD∨
11、在编译时有传名功能的高级程序语言是。
a. Fortran
b. Basic
c. Pascal
d. ALGOL
12、栈式动态分配与管理在过程返回时应做的工作有。
a. 保护SP
b. 恢复SP
c.保护TOP
d. 恢复TOP
13、优化可生成DD 的目标代码。
a.运行时间较短b.占用存储空间较小
c.运行时间短但占用内存空间大d.运行时间短且占用存储空间小
14、下列 A 优化方法不是针对循优化进行的。
a.强度削弱b.删除归纳变量c.删除多余运算d.代码外提
15、基本块内的优化为 B 。
a.代码外提,删除归纳变量b.删除多余运算,删除无用赋值
c.强度削弱,代码外提d.循环展开,循环合并
二、多项选择题%16
1、下面哪些说法是错误的。
a. 有向图是一个状态转换图
b. 状态转换图是一个有向图
c.有向图是一个DFA
d.DFA可以用状态转换图表示
2、对无二义性文法来说,一棵语法树往往代表了。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程
e.一种最左推导过程
3、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
d. 该句子有两棵不同的语法树
e.该句子的语法树只有一个
4、有一文法G:S→AB
A→aAb|ε
B→cBd|ε
它不产生下面集合。
a. {a n b m c n d m|n,m≥0}
b. {a n b n c m d m|n,m>0}
c. {a n b m c m d n|n,m≥0}
d. {a n b n c m d m|n,m≥0}
e. {a n b n c n d n|n≥0}
5、自下而上的语法分析中,应从开始分析。
a. 句型
b. 句子
c. 以单词为单位的程序
d. 文法的开始符
e. 句柄
6、对正规文法描述的语言,以下有能力描述它。
a.0型文法
b.1型文法
c.上下文无关文法
d.右线性文法
e.左线性文法
7、在词法分析中,能识别出。
a. 基本字
b. 四元式
c. 运算符
d. 逆波兰式
e. 常数
8、令∑={a,b},则∑上所有以b开头,后跟若干个ab的字的全体对应的正规式为。
a. b(ab)*
b. b(ab)+
c.(ba)*b
d. (ba)+b
e. b(a|b)
9、一个LR分析器包括。
a.一个总控程序
b.一个项目集
c.一个活前缀
d.一张分析表
e.一个分析栈
10、LR分析器核心部分是一张分析表,该表包括等子表。
a.LL(1)分析
b.优先关系
c.GOTO
d.LR
e.ACTION
11、每一项ACTION[S,a]所规定的动作包括。
a.移进
b.比较
c.接受
d.归约
e.报错
12、对LR分析表的构造,有可能存在动作冲突。
a.移进
b.归约
c.移进/归约
d.移进/移进
e.归约/归约
13、中间代码主要有。
a.四元式b.二元式c.三元式d.后缀式e.间接三元式
14、下面中间代码形式中,能正确表示算术表达式a+b+c 的有 。
a .ab+c+
b .abc++ e .a+b+c
15、在下面的 语法制导翻译中,采用拉链-回填技术。
a .赋值语句
b .goto 语句
c .条件语句
d .循环语句
16、下列 中间代码形式有益于优化处理。
a .三元式
b .四元式
c .间接三元式
d .逆波兰表示法
e .树形表示法
三、填空题 %24
1、FORTRAN 语言采用了 静态 存储空间分配方案,其程序所需的存储空间在 编译 时确定。
2、一个函数的活动记录体积在 时确定,数组内情向量表的体积在 时确定。
3、目标程序运行的动态分配策略中,含有 和 分配策略
4、在Pascal 中,由于允许用户动态地申请与释放内存空间,所以必须采用 存储分配技术。
5、如果两个临时变量名 不相交,则它们可分配在同一单元中。
6、堆式动态分配策略允许用户动态的 和 存储空间。
7、符号表中名字栏内容有两种填写方式,它们是 填写和 填写。
8、词法分析阶段的错误主要是 ,可通过 的办法纠正错误。
9、符号表中名字的有关信息在 和 过程中陆续填入。
10、在目标代码生成阶段,符号表是 的依据。
11、中间代码有 等形式,生成中间代码主要是为了使 。
12、语法制导翻译既可以用来产生 代码,也可以用来产生 指令,甚至可用来对输入串
进行 。
13、当源程序中的标号出现“先引用后定义”时,中间代码的转移地址须持 时才能确定,因
而要进行 。
四、判断题%8
1、一个有限状态自动机中,有且仅有一个唯一终态。
( )
2、设r 和s 分别是正规式,则有L (r|s )=L(r)|L(s)。
( )
3、自动机M 和M ′的状态数不同,则二者必不等价。
( )
4、确定的自动机以及不确定的自动机都能正确地识别正规集。
( )
5、对任意一个右线性文法G ,都存在一个NFA M ,满足L(G)=L(M)。
( )
6、对任意一个右线性文法G ,都存在一个DFA M ,满足L(G)=L(M)。
( )
7、对任何正规表达式e ,都存在一个NFA M ,满足L(G)=L(e)。
( )
8、对任何正规表达式e ,都存在一个DFA M ,满足L(G)=L(e)。
( )
五、综合题%37
1、 下面文法G[S]是否为LL (1)文法?说明理由。
%10
S → A B | P Q x A → x y B → b c
P → d P | ε Q → a Q | ε
2、设有文法G[S]为:
S →a|b|(A)
A →SdA|S
(1)给出句型(SdSdS)的短语、简单短语、句柄、素短语和最左素短语。
(2)用自下而上分析法给出输入串(adb)#的分析过程。
%10
3、请写出在∑=(a,b)上,不是a开头的,但以aa结尾的字符串集合的正规表达式,并构造与之等价状
态最少的DFA。
%10
4、写出下面算术表达式E值的语义描述%7
⑴E→E1+E2
⑵E→0
⑶E→1
[解答3]根据题意,不以a开头就意味着以b开头,且以aa结尾的正规式为:b(a|b)* aa
根将图2.30所示的NFA确定化,如图2.31所示。
从图2.31可知已为最简状态,由于开始状态0只能输入字符b而不能与状态1合并,而状态2和状态3面对输入符号的下一状态相同,但两者一为非终态、一为终态,故也不有合并,故图2.31所示的状态转换矩阵已是最简的DFA,如图2.32所示据正规式画出NFA,如图2.30所示。
图2.31 状态转换矩阵。