《编译原理》练习测试题库一、填空1.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序。2.词法分析和语法分析本质上都是对源程序的______进行分析。3.如果源语言(编写源程序的语言)是高级语言,而目标语言是某计算机的汇编语言或机器语言,则这种翻译程序称为_____。4.对编译程序而言,输入数据是_______,输出结果是________。5.______,是构成语言文法的单词,是语法成分的最小单位。6.由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个__________。7.由于PL/0编译程序采用_________,所以语法分析过程BLOCK是整个编译过程的核心。8.用语法图描述语法规则的优点是______、________。9.每个非终结符是一个语法成分,在书写语言程序时并不出现,它是由_________和_________、或终结符串定义的。10.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机______。11.PL/0的编译程序和目标程序的解释执行程序都是用_______书写的,因此PL/0语言可在配备_________的任何机器上实现。12.PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由______个嵌套及并列的过程或函数组成13.当源程序编译正确时,PL/0编译程序自动调用__________,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。14.由于对某些非终结符可以递归定义,这就使得_________可用有穷的文法描述。15.______的任务是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。16.PL/0编译程序的语法分析采用了____________。17.语法分析程序除总控外主要有两大部分的功能,即_________和__________.18.PL/0的词法分析程序GETSYM,是一个独立的过程,其功能是为_________提供单词用的,是______的基础,它把输入的字符串形式的源程序分割成一个个单词符号。19.每个过程应有过程首部以定义局部于它自己过程的常量、变量和过程标识符,也称_____。20.词法分析程序GETSYM将完成的任务有:______,识别保留字;_______,拼数,拼复合词,输出源程序.21.如果一个PL/0语言的单词序列在整个语法分析中,都能逐个得到匹配,直到_________,这时就说所输入的程序是正确的。22.若要构造程序设计语言的编译程序,则首先要对程序设计语言本身有较为精确的描述。而关于程序设计语言的描述,将涉及_____、语义和______三个方面。23.凡是具有某种特殊性质的客体的聚合,都可称为______。24.如果集合中元素个数为零,即集合中不含有任何元素,这样的集合称为_______,记为φ。25.设有集合A和B,如果A和B有相同的元素,则称这两个集合是_______.26.设A、B为任意两个集合,由所有属于集合A或属于集合B的元素组成的集合,叫做集合A与B的_______.27.设A、B为任意两个集合,由所有用于集合A且属于集合B的元素组成的集合,称为集合A与B的_______.28.如果一个集合,它能包含我们所要考虑目标之内的所有元素,则称此集合为_____,记为E。29.设A为一集合,由A的所有子集(包括空集及A本身)所组成的集合,称为A的______.30.由两个按一定次序排列的客体组成的序列,称为_____.31.设A和B为任意两个集合,若序偶的第一个成员是集合A的一个元素,第二个成员是集合B的一个元素,则所有这样的序偶组成的集合称为集合A和B的__________.32.在集合X上的关系R,如对任意x∈X,均有(x,x)∈R,则称关系R是______。33.在集合X上的关系R,如果合(x,y)∈R,便必有(y,x)∈R,则称关系R是________。34.在集合X上的关系R,如果合(x,y)∈R且(y,z)∈R,必有(x,z)∈R,则称关系R是______。35.例设P={(1,2),(3,4),(2,2)}Q={(4,7),(2,9),(3,1)}则P·Q=____________________________36.符号串与符号组成顺序______,如符号串ab______ba,符号申001也______010。37.假设G是一个文法,S是文法的开始符号,如果S=*x,则称x是________。38.文法G产生的_______的全体是该文法描述的语言。39.一个文法G[Z]若存在推导序列Z=+···Z···,则称G(z)是______文法,这类文法所产生的句子有______个。40.乔姆斯基把文法分成____类型.41.四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是_______.42.最右推导常被称为________。43.由规范推导所得的句型称为______。44.文法的二义性和语言的二义性是两个_________的概念。45.对于上下文无关文法,_______是句型推导过程的几何表示。46.直接短语也称_______.47.每棵语法树的叶子组成一个______.48.每棵子树的叶子组成一个______.49.每棵简单子树的叶子组成一个_______.50.最左边简单子树的叶子组成_______.51.一个句型的最左直接短语称为该句型的_______。52.关于句型或句子的直接推导=和推导=+,实际上均可视为符号串之间关系,而且推导=+为直接推导=的_________。53.________是语言文法的等价表示,可用它来代替BNF规则集合。54.某条规则U→u中的左部符号U(U不是识别符号),不在所属文法的任何其他规则右部出现,那么这条规则在推导中不起作用,即所有句子的推导始终不会用到此规则,显然这种规则是多余的。也称这种非终结符为_________.55.从文法的某个非终结符号U推不出终结符号串,显然,所有含有U的规则是多余的。也称这种非终结符为________。56.若L是上下文有关语言、上下文无关语言或正规语言,则L∪{ε}和L-{ε}分别是上下文有关语言、_____和正规语言。57.设有文法G,对于其中某一非终结符号U可能作出一些不同推导U=+Sx,其中S叫头符号,由于推导不同,由U产生的头符号S也可能不同,这些头符号S构成的集合,称为U的推导的__________.58.一个上下文无关文法G包括四个组成部分依次是:_____,______,_______,_______.1159.文法所描述的语言是_______的集合。60.词法分析器工作的第一步是输入源程序文本。输入串一般是放在一个缓冲区中,这个缓冲区称________。二、选择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.巴科斯-诺尔范式(即BNF)是一种广泛采用的_____的工具。A.描述规则B.描述语言C.描述文法D.描述句子7.设r=(a|b|c)(x|y|z)则L(r)中元素为个()A.9B.6C.18D.278、正则集合L={an|n≧0}相应的正则表达式是()A.a*B.a+C.aa*D.aa+9.编译过程中扫描器的任务包括______。①组织源程序的输入②按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出⑧删除注解④删除空格及无用字符⑤行计数、列计数⑥发现并定位词法错误⑦建立符号表A.②③④⑦B.②③④⑥⑦C.①②③④⑥⑦D.①②③④⑤⑥⑦10、编译过程中,语法分析器的任务是______。a.分析单词是怎样构成的b.分析单词串是如何构成语句和说明的c.分析语句和说明是如何构成程序的d.分析程序的结构A.bcBdC.bcdD.abcd11、语法分析的常用方法是________。a.自顶向下b.自底向上c.自左向右d.自右向左A.abcdB.abC.cdD.abc12、编译程序中的语法分析器接受以________为单位的输入,并产生有关信息供以后各阶段使用。A.表达式B.产生式C.单词D.语句13、LL(1)文法的条件是_______。A.对形如U-Xl|X2|…|Xn的规则,要求FIRST(Xi)∩FIRST(Xj)=Φ,(i≠j)B.对形如U-Xl|X2|…|Xn的规则,若Xi=*ε,则要求FIRST(Xj)∩FOLLOW(U)=ΦC.A和BD.都不是14、一个右线性文法G一定是()A.LL(1)文法C.SLR(1)文法B.LR(1)文法D.上述三者都不是15、算符文法是指______的文法。26①没有形如U-…VW…的规则(U,V,W∈VN)②终结符号集VT中任意两个符号对之间至多有一种优先关系成立⑧没有相同的规则右部④没有形如U-ε的规则A.①B.①②C.①②③D.①②③④16、算符优先文法是指______的文法。①没有形如U-…VW…的规则(U,V,W∈VN)②终结符号集VT中任意两个符号对之间至多有一种优先关系成立⑧没有相同的规则右部④没有形如U-ε的规则A.①②B.①②③C.①②③④D.①②④17、下列文法G[S]的句型aR/aSb/aTb/,b的最左素短语为______。S-aTb|,T-RR-R/S|SA.aTbB.aSbC.SD.R/18、算符优先分析法每次都是对______进行归约,简单优先分析法每次都是对句柄进行归约。A.最左短语B.简单短语C.最左素短浯D.素短语19、xab+cde-*f/:=是赋值语句()相应的后缀式A.x:=a+b+c*d-e/fB.x:=a+(b+c)*d-e/fC.x:+a+b+c*(d-e)/fD.x:=a+b+c+(c*d)-e/f20、LR(K)方法是______。A.从左到右分析,每次走K步的一种编译方法B.从左到右分析,共经过K步的一种编译方法C.从左到右分析,每次向前预测K步的一种编译方法D.从左到右分析,每次向貌似句柄的符号串后看K个输入符号的一种编译方法21、下面三个文法中,为SLR(1)文法的是______。10G1:P-PaP|bG2:P-bPb|cPc|b|cG3:P-bPb|bPc|dA.仅GlB.仅G2C.仅G3D.G2和G322、有下列文法:11S-Pa|Pb|cP-Pd|Se|f该文法是______。A.LL(1)文法B.SLR(1)文法C.a和bD.都不是23.代码优化的主要目标是()12①如何提高目标程序的运行速度②如何减少目标程序运行所需的空间③如何协调①和②④如何使生成的目标代码尽可能短A①②B①②③C①②④D①②③④24、设文法G(S为其开始符号)产生式如下:S→aSb|ab|ε则G是一个()A.LR(1)文法B.SLR(1)文法C.三型文法D.二型文法25在编译程序采用的优化方法中,_____是在循环语句范围内进行的。12①合并已知常量②删除多余运算,③删除归纳变量④强度削弱⑤代码外提A①④B①⑤C①④⑤D③④⑤26合并表达式中常量运算的目的是_____。12①合并常量,使表达式中的常量尽可能少②合并常量,使表达式尽可能简短③将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所有这种常量运算,使得生成的代码指令尽可能少A①B②C③D①②③27下面的程序段可以进行哪些优化_____。12i:=1j:=l0readkL:x:=x*iy:=j*iz:=x*ywri