编译原理模拟题
编译-模拟试卷一
编译原理模拟试卷一一.填空题(每空1分,共20分)1.若一个翻译程序的源程序是用语言编写的,其目标程序是语言或者语言的程序,则称该翻译程序为编译程序。
2.右线性文法的产生式规则限制为。
3.设有文法G: S→AA→B | if A then A else AB→C | B+C | +CC→D | C*D | *DD→x |(A)| -D其中,终结符集V T= ,非终结符集V N= 。
4.词法分析的任务是:依据语言的,分析由字符组成的,把它识别为一个一个具有独立意义的最小语法单位,即“”,并识别出与其相关的属性。
5.词法分析程序在识别标识符时,先识别是否为标识符,然后还要判别标识符是否为。
6.符号表在编译期间两项重要的作用分别是辅助与辅助代码生成。
7.表达式a*b+c*d的逆波兰式为。
8.为了消除左递归,文法A→Ax|y 可变换为。
9.文法G产生的的全体是该文法描述的语言。
10.自下而上语法分析的基本思想是:从左向右扫描输入串,一边,一边检查栈顶是否形成某个产生式的右部――若是,则用相应产生式的左部取代栈顶的那串符号(称为);若不是,则继续重复上述动作,直至栈顶形成文法的时为止。
11.常用的动态存储分配方法有存储分配与存储分配。
12.优化根据所涉及程序的范围,可分为局部优化、和全局优化三种。
二.判断题(正确的在括号中记√,错误的记×,并且说明理由。
每小题2分,共20分)()1.编译程序与解释程序的区别在于编译程序对源程序进行了翻译,而解释程序则没有。
()2.每个句子都有规范推导;每个句型都有规范推导。
()3.若一个语言的句子有无穷多个,则其对应的文法必定是递归的。
()4.一个语言的文法是唯一的。
()5.对于文法G【A】:A →aABe | BaB →dB | ε有人说:因为 FIRST(aABe)∩ FOLLOW(A)=∅FIRST(Ba)∩ FOLLOW(A)≠∅所以,文法G【A】不是LL(l)文法。
编译原理模拟题
编译原理一、单选题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)*。
编译原理模拟题2
一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.“ 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。
( )2.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。
( )3.一个句型的句柄一定是文法某产生式的右部。
( )4.在程序中标识符的出现仅为使用性的。
( )5.仅考虑一个基本块,不能确定一个赋值是否真是无用的。
( )6.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。
( )7.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。
( )8.算符优先关系表不一定存在对应的优先函数。
( )9.数组元素的地址计算与数组的存储方式有关。
( )10.编译程序与具体的机器有关,与具体的语言无关。
( )参考答案:1、×2、×3、√4、×5、√6、√7、×8、×9、×10、×二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_____。
A.( ) 模拟执行器 B.( ) 解释器C.( ) 表格处理和出错处理 D.( ) 符号执行器2.文法 G[N]= ( {b} , {N , B} , N ,{N→b│bB ,B→bN} ),该文法所描述的语言是A.( ) L(G[N])={bi│i≥0} B.( ) L(G[N])={b2i│i≥0}C.( ) L(G[N])={b2i+1│i≥0} D.( ) L(G[N])={b2i+1│i≥1}3.一个句型中的最左_____称为该句型的句柄。
A.( ) 短语 B.( ) 简单短语C.( ) 素短语 D.( ) 终结符号4.设 G 是一个给定的文法, S 是文法的开始符号,如果 S->x( 其中x∈V*), 则称 x 是文法 G 的一个_____。
编译原理》模拟期末试题汇总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.算符⽂法是指____ 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 _______。
编译原理模拟题
一、填空题(每空1分,共20分)1.编译过程一般分为词法分析、语法分析、中间代码生成、代码优化和目标代码生成五个阶段。
2.语法分析最常用的两类方法是自上而下和自下而上分析法。
3.确定的有穷自动机是一个五元组,通常表示为DFA=(K , ∑, M, S, Z)。
4.所谓最右推导是指任何一步都是对中最右非终结符进行替换。
5.语法分析器的任务是分析一个文法的句子结构。
6.如果一个文法的任何产生式的右部都不含有相邻的非终结符,则这种文法称为算符文法。
7.进行确定的自上而下语法分析要求语言的文法是无左递归和公共左因子的。
8.LR分析法是一种自下而上的语法分析方法。
9.根据优化对象所涉及的程序范围,代码优化分为局部优化、循环优化和局部优化等。
10.常用的优化技术包括:删除公共子表达式、代码外提、强度削弱、复写传播、变换循环控制条件等。
(合并已知量、删除无用赋值)二、是非题(下列各题,你认为正确的,请在题后的括号内打“√”,错的打“×”。
每题2分,共20分)1.正规文法产生的语言都可以用上下文无关文法来描述。
( ×)2.仅考虑一个基本块,不能确定一个赋值是否真是无用的。
(√)3.如果一个文法是递归的,则其产生的语言的句子是无穷个。
(√)4.四元式之间的联系是通过符号表实现的。
(×)5.文法的二义性和语言的二义性是两个不同的概念。
(√)6.一个LL( l)文法一定是无二义的。
( √)7.在规范规约中用最左素短语来刻划可归约串。
( ×)8.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( √)9.编译程序是对汇编程序的翻译。
(×)10.逆波兰法表示的表达式亦称前缀式。
( ×)三、简答题(每题5分,共15分)1、简述栈式存储管理策略;2、何谓DAG;3、何谓文法的二义性;四、给出下述文法对应的正规式(7分)S→ 0A| 1B A→1S | 1B→0S | 0解:首先得正规式方程组:S=0A+1BA=1S+1B=0S+0求解该方程组得: S=(01|10)(01|10)*五、已知文法G(E):(2分)是文法G[S]的句型。
《编译原理》模拟试题六
《编译原理》期末模拟试题六一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。
(×)2.确定的自动机以及不确定的自动机都能正确地识别正规集。
(√)3.词法分析作为单独的一遍来处理较好。
(× )4.构造LR分析器的任务就是产生LR分析表。
(√)5.规范归约和规范推导是互逆的两个过程。
(× )6.同心集的合并有可能产生新的“移进”/“归约”冲突。
(× )7.LR分析技术无法适用二义文法。
(× )8.树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。
(×)9.程序中的表达式语句在语义翻译时不需要回填技术。
(√)10.对中间代码的优化依赖于具体的计算机。
(× )二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.编译程序绝大多数时间花在_____ 上。
A.( ) 出错处理B.( ) 词法分析C.( ) 目标代码生成D.( ) 表格管理2.编译程序是对_____。
A.( ) 汇编程序的翻译B.( ) 高级语言程序的解释执行C.( ) 机器语言的执行D.( ) 高级语言的翻译3.采用自上而下分析,必须_____。
A.( ) 消除左递归B.( ) 消除右递归C.( ) 消除回溯D.( ) 提取公共左因子4.在规范归约中,用_____来刻画可归约串。
A.( )直接短语B.( )句柄C.( )最左素短语D.( )素短语5.若a为终结符,则A->α ·aβ为_____项目。
A.( )归约B.( ) 移进C.( ) 接受D.( ) 待约6.间接三元式表示法的优点为_____。
A.( ) 采用间接码表,便于优化处理B.( ) 节省存储空间,不便于表的修改C.( ) 便于优化处理,节省存储空间D.( ) 节省存储空间,不便于优化处理7.基本块内的优化为_____。
编译原理编译原理考试卷模拟考试题.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、一个编译程序中,不仅包含词法分析,(),中间代码生成,代码优化,目标代码生成等五个部分。
《编译原理》模拟试题五.doc
《编译原理》模拟忒题五一、是非题(请在括号内,正确的划4错误的划X)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(x)2.一个有限状态自动机中,有且仅有一个唯一的终态。
(x)3.一个算符优先文法可能不存在算符优先函数与之对应。
R)4.语法分析时必须先消除文法中的左递归。
(x)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(V)9.两个正规集相等的必要条件是他们对应的正规式等价。
(x)10.一个语义子程序描述了一个文法所对应的翻译工作。
(x)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是oA.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式M 1和M2等价是指-A. ()M1和M2的状态数相等B. ()M1和M2的有向边条数相等C.()M1和M2所识别的语言集相等D. ()M1和M2状态数和有向边条数相等3.文法G: S—xSx|y所识别的语言是oA. ( ) xyxB. ()(xyx)*C・()xnyxn(n>0) D. ()x*yx*4.如果文法G是无二义的,则它的任何句子a□A.()最左推导和最右推导对应的语法树必定相同B.()最左推导和最右推导对应的语法树可能不同c.()最左推导和最右推导必定相同D.()可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握-A.()源程序B.()目标语言C.()编译方法D.()以上三项都是8.优化可生成一运行时间短且占用存储空间小—的目标代码。
三、填空题(每空1分,共10分)1.计算机执行用高级语言编写的程序主要有两种途径:—解释_和_编译—o2.扫描器是_词法分析器—,它接受输入的—源程序—,对源程序进行—词法分析—并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
(完整word版)编译原理练习题
一章: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、高级语言源程序经编译后产生的程序是。
A、源程序B、目标程序C、函数D、过程1、扫描器的任务是从源程序中识别出一个个单词符号。
2、高级语言源程序有两种执行方式,即解释和编译。
判断:高级语言编写的源程序都必须通过编译,产生目标代码后才能运行。
多遍扫描的编译程序的多遍是指多次重复读源程序。
高级语言程序到低级语言程序的转换是基于语义的等价变换。
编译程序中错误处理的任务是对检查出的错误进行修改。
目标程序一定是机器语言程序。
连接装配程序可把经编译程序产生的目标程序变成可执行的机器语言程序。
简答题:1、请指出下列错误信息可能是编译的哪个阶段报告的?①else没有匹配的if;②数组下标越界;③使用的函数没有定义;④在数中出现了非数字信息。
答:①语法分析阶段②语义分析与中间代码生成阶段③语义分析与中间代码生成阶段④词法分析阶段2、何谓源程序、中间代码和目标代码?它们三者之间有何种关系?答:所谓源程序是指用某种高级语言编写的程序,它是编译程序的加工对象。
目标程序是指低级语言(机器语言或汇编语言)编写的程序,它是编译程序的加工结果。
中间代码是其结构介于源程序和目标程序之间的一种机内表示形式,它是编译程序产生的中间临时结果。
它们三者之间的关系是等价关系,即结构不同,但语义相同。
二章:1、文法G:S-xSx|y所识别的语言是。
A、xyx B 、(xyx)* C、x n yx n(n≥0) D、x*yx*2、设有文法G[S]=({S,B},{b},{S-b|bB,B-bS},S),该文法所描述的语言是。
编译原理模拟题
《编译原理》模拟题(补)一.单项选择题1.()是两类程序语言处理程序。
A. 高级语言程序和低级语言程序B. 解释程序和编译程序C. 编译程序和操作系统D. 系统程序和应用程序2. 编译程序前三个阶段完成的工作是()。
A. 词法分析、语法分析和代码优化B. 代码生成、代码优化和词法分析C. 词法分析、语法分析、语义分析和中间代码生成D. 词法分析、语法分析和代码优化3. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。
A. 字符串B. 产生式C. 非开始符号D. 文法4. 词法分析器的输出结果是()。
A. 单词的种别编码B. 单词在符号表中的位置C. 单词的种别编码和自身值D. 单词自身值5. 一个句型中称为句柄的是该句型的最左()。
A. 非终结符号B. 短语C. 句子D. 直接短语6. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。
A. 自左向右B. 自顶向下C. 自底向上D. 自右向左7. 在通常的语法分析方法中,()特别适用于表达式的分析。
A. 算符优先分析法B. LR分析法C. 递归下降分析法D. LL(1)分析法8. 优化可生成_____的目标代码。
A. 运行时间较短B. 占用存储空间较小C. 运行时间短但占用内存空间大D. 运行时间短且占用存储空间小9.()是两类程序语言处理程序。
A. 系统程序和应用程序B.编译程序和操作系统C. 解释程序和编译程序D.高级语言程序和低级语言程序10. 经过编译所得到的目标程序是()。
A. 四元式序列B. 间接三元式序列C. 二元式序列D. 机器语言程序或汇编语言程序11. 程序的基本块是指()。
A. 一个子程序B. 一个仅有一个入口和一个出口的语句C. 一个没有嵌套的程序段D. 一组顺序执行的程序段,仅有一个入口和一个出口12. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。
编译原理练习题及答案
第一章练习题(绪论)一、选择题1.编译程序是一种常用的软件。
A) 应用B) 系统C) 实时系统D) 分布式系统2.编译程序生成的目标代码程序是可执行程序。
A) 一定B) 不一定3.编译程序的大多数时间是花在上。
A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。
A)提高编译程序的执行效率;B)使编译程序的结构更加清晰,提高目标程序质量;C)充分利用内存空间,提高机器的执行效率。
5.编译程序各个阶段都涉及到的工作有。
A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。
A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。
A) 多遍扫描B) 一遍扫描8.编译方式与解释方式的根本区别在于。
A) 执行速度的快慢B) 是否生成目标代码C) 是否语义分析9.多遍编译与一遍编译的主要区别在于。
A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一遍;B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍分析再执行;C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执行;D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完成。
10.编译程序分成“前端”和“后端”的好处是A)便于移植B)便于功能的扩充C)便于减少工作量D)以上均正确第二章练习题(文法与语言)一、选择题1.文法 G 产生的 (1) 的全体是该文法描述的语言。
A.句型B. 终结符集C. 非终结符集D. 句子2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;1 型文法又称为(C)文法;2 型语言可由(G) 识别。
A 短语结构文法B 上下文无关文法C 上下文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。
编译原理试题及答案(期末复习版)
<编译原理>历年试题及答案一.(每项选择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 )。
编译原理模拟试卷
说明:向学生提供这门课程的4份模拟考试试题与答案。
试题最好分开放题和客观题两类,客观题提供答案,开放题提供解题思路。
如果期末的评估要求学员提交论文或作品,教师需提供评价标准。
模拟试卷模拟试卷A一、处于/* 和*/之间的串构成注解,注解中间没有*/,请根据词法分析基本方法,画出接受这种注解的DFA的状态转换图。
二、根据自上而下的语法分析方法,构造下面文法的LL(1)分析表。
D → TLT → int | realL → id RR → , id R | ε三、根据自下而上的语法分析方法,为下面文法构造规范LR(1)分析表,画出状态转换图就可以了。
然后说明它是否有动作冲突。
S →V = E | EV →*E | idE →V四、何谓语法制导的定义?为下面文法写一个语法制导的定义,它完成一个句子的while-do最大嵌套层次的计算并输出这个计算结果。
S → EE →while E do E | id := E | E + E | id | (E)五、请根据数据流分析方法,对下面的程序片段作出其程序流图并计算:(1)各基本块的到达_定值集IN[B];(2)各基本块中各变量引用点的ud链;I := 1J := 0L1: J := J + Iread Iif I < 100 goto L2write JhaltL2 : I := I * Igoto L1模拟试卷B一、叙述下面的正规式描述的语言,并画出接受该语言的最简DFA的状态转换图。
( 1 | 01 )* 0*二、(1)通过构造识别活前缀的DFA和构造分析表,来证明文法E → E + id | id 是SLR(1)文法。
(2)下面左右两个文法都和(1)的文法等价E → E + M id | id E → M E + id | idM →εM →ε请指出其中有几个文法不是LR(1)文法,并给出它们不是LR(1)文法的理由。
三、为下面的算术表达式文法写一个语法制导的翻译方案,它将每个子表达式E 的符号(即值大于零还是小于零)记录在属性E.sign中(属性值分别用POS或NEG表示)。
模拟题-编译原理
、选择. ( 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个方面。
①语法是指由程序语言基本符号 组成程序中的各个语法成分(包括程序)的一组规则,不涉及语法成分的特定含义,也不涉及使用者。
最新《编译原理》模拟期末试题汇总-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. 正规文法、正规式、确定有限自动机和非确定有限自动机在接收语言的能力上是互相等价的。
编译原理模拟题
编译原理模拟题1.填空题(每空2分,共20分)(1)一个上下文无关文法G包括四个组成部分:一组终结符号,一组非终结符号,一个______________,以及一组产生式。
(2)实行代码外提时,在循环入口结点前面建立一个新结点(基本块),称为循环的。
(3)简单栈式分配适合于这样一种语言:该语言没有分程序结构,过程定义不允许嵌套,但允许。
(4)通常实现最近嵌套作用域规则的办法是,对每个过程指定一个,以便跟踪过程里的局部名字。
(5)由类型array[256] of char 导出类型表达式为。
(6)用if-then-else来解释 A or中B的话,就是。
(7)由于允许用户动态申请与释放内存空间,所以必须采用存储分配技术。
(8)自下而上分析方法的基本思想是:从输入符号串开始,利用文法规则逐步进行归约,直至归约到文法的。
(9)在算符优先分析中,用“最左素短语”来刻画“可归约串”;在规范归约分析中,用来刻画“可归约串”。
(10)S-属性文法中的每个文法符号,只含有属性。
2. 选择题(每选项2分,共30分)(1)在编译程序中,语法分析分为自顶向下分析和自底向上分析两类:__A__和LL(1)分析法属于自顶向下分析;__B__和LR分析法属于自底向上分析。
自顶向下分析试图为输入符号串构造一个__C__;自底向上分析试图为输入符号串构造一个__D__。
采用自顶向下分析方法时,要求文法中不含有__E__。
供选择的答案:A、B:①深度分析法②宽度优先分析法③算符优先分析法④递归子程序分析法C、D:①语法树②有向无环图③最左推导④最右推导E:①右递归②左递归③直接右递归④直接左递归选择:A:;B:;C:;D:;E:;(2)描述文法符号语义的属性有两种,一种称为 A ,另一种称为 B .A 值的计算依赖于分析树中它的 C 的属性值;B 值的计算依赖于分析树中它的 D 的属性值。
供选择的答案:A,B: ①L-属性②R-属性③综合属性④继承属性C,D: ①父结点②子结点③兄弟结点④父结点与子结点⑤父结点与兄弟结点选择:A:;B:;C:;D:;(3)代码优化的目的是加快A的执行速度,符号表是否合理则影响 B 的效率。
编译原理模拟题合集
编译原理一、填空题(20分)1.1编译程序的工作过程可划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,一般在语义分析阶段对表达式中运算对象的类型进行检查。
1.2 递归下降法和预测分析法是自上而下的语法分析方法。
1.3常用的存储分配策略有静态存储分配和动态存储分配,其中,动态存储分配策略包括栈分配和堆分配。
1.4移进、归约是自下而上或LR 分析中的典型操作。
1.5对于数组M[1..6, 1..8],如果每个元素占k个存储单元,且起始地址为a,则以行为主序存放时元素M[4,4]的地址是__ a+27*k __,以列为主序存放时元素M[4,4]的地址是_a+21k__。
1.1LR(1)分析法中,L的含义是自左至右扫描输入串,R的含义是最右推导的逆。
1.2源程序经过编译后产生的程序称为目标程序。
1.3词法分析的输出由单词种别和单词的值两部分组成。
1.4文法G:S→AB, A→aA|ε, B→bBc|bc描述的语言L(G)= {a m b k c k | m>=1,k>=0}。
1.5允许用户随意地动态申请与释放内存空间应采用_堆_存储分配技术。
1.6一个文法产生的_句子的全体_称为该文法的语言。
1.7语义错误可分为静态语义错误和动态语义错误,“运算符与运算对象的类型不一致”属于_静态语义_错误,“无穷递归”属于_动态语义_错误。
1.1 出错处理和符号表管理是编译程序各阶段都涉及到的工作。
1.2用LR方法实现语法分析时,典型的操作有__移进__、___归约__、接受和报错。
1.3一个上下文无关文法(N,T,P,S)的四个组成部分是终结符集合N、非终结符集合T、产生式集合和开始符号。
1.4已知数组M[1..5, 1..8]以行为主序存放,如果每个元素占4个存储单元,且起始地址为a,则元素M[4,7]的地址是__ a+120__。
数组元素的地址计算公式由两部分组成,一部分是不变部分,它在__编译__时确定;另一部分是可变部分,它在__运行__时确定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》模拟题(补)
一.单项选择题
1.()是两类程序语言处理程序。
A. 高级语言程序和低级语言程序
B. 解释程序和编译程序
C. 编译程序和操作系统
D. 系统程序和应用程序
2. 编译程序前三个阶段完成的工作是()。
A. 词法分析、语法分析和代码优化
B. 代码生成、代码优化和词法分析
C. 词法分析、语法分析、语义分析和中间代码生成
D. 词法分析、语法分析和代码优化
3. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。
A. 字符串
B. 产生式
C. 非开始符号
D. 文法
4. 词法分析器的输出结果是()。
A. 单词的种别编码
B. 单词在符号表中的位置
C. 单词的种别编码和自身值
D. 单词自身值
5. 一个句型中称为句柄的是该句型的最左()。
A. 非终结符号
B. 短语
C. 句子
D. 直接短语
6. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。
A. 自左向右
B. 自顶向下
C. 自底向上
D. 自右向左
7. 在通常的语法分析方法中,()特别适用于表达式的分析。
A. 算符优先分析法
B. LR分析法
C. 递归下降分析法
D. LL(1)分析法
8. 优化可生成_____的目标代码。
A. 运行时间较短
B. 占用存储空间较小
C. 运行时间短但占用内存空间大
D. 运行时间短且占用存储空间小
9.()是两类程序语言处理程序。
A. 系统程序和应用程序
B.编译程序和操作系统
C. 解释程序和编译程序
D.高级语言程序和低级语言程序
10. 经过编译所得到的目标程序是()。
A. 四元式序列
B. 间接三元式序列
C. 二元式序列
D. 机器语言程序或汇编语言程序
11. 程序的基本块是指()。
A. 一个子程序
B. 一个仅有一个入口和一个出口的语句
C. 一个没有嵌套的程序段
D. 一组顺序执行的程序段,仅有一个入口和一个出口
12. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。
A. 字符串
B. 产生式
C. 非开始符号
D. 文法
13. 文法G产生的()的全体是该文法描述的语言。
A. 句型
B. 终结符集
C. 非终结符集
D. 句子
14. 词法分析器用于识别()。
A. 字符串
B. 语句
C. 单词
D. 标识符
15. 常用的中间代码形式不含()。
A. 三元式
B. 四元式
C. 逆波兰式
D. 语法树
16. 下列______优化方法不是针对循环优化进行的。
A. 强度削弱
B. 删除归纳变量
C. 删除多余运算
D. 代码外提
二.填空题
1. 一个名字的属性包括和作用域。
2. 一张转换图只包含有限个状态,其中有一个被认为是初态,而且实际上至少要有一个。
3. 规范规约是最规约。
4. 语法分析器的输入是,其输出是语法单位。
5. 语法分析的有效工具是。
6. 一个LR分析器包括两部分:一个总控程序和。
7. 中间代码产生是依据语言的规则进行的。
8. 编译方式与解释方式的根本区别在于。
9. 编译程序的工作过程一般划分为5个阶段:词法分析、、语义分析与中间代码生成,代码优化及目标代码生成。
10. 扫描器的任务是从源程序中识别出一个个。
11. 词法分析基于文法进行,即识别的单词是该类文法的句子。
12. 语法分析的有效工具是。
13. 语法分析最常用的两类方法是和自下而上分析法。
14. 分析句型时,应用算符优先分析技术时,每步被直接归约的是。
三.判断题
1.一个有限状态自动机中,有且仅有一个唯一的终态。
()
2. 正规文法产生的语言都可以用上下文无关文法来描述。
()
3. 确定的自动机以及不确定的自动机都能正确地识别正规集。
()
4. 如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。
()
5. 综合属性是用于“自上而下”传递信息。
()
6. 递归下降分析法是自顶向上分析方法。
()
7. 一个算符优先文法可能不存在算符优先函数与之对应。
()
8. LR法是自顶向下语法分析方法。
()
9.产生式是用于定义词法成分的一种书写规则。
()
10. 一个句型的句柄一定是文法某产生式的右部。
()
11. 每个文法都能改写为LL(1)文法。
()
12. 语法分析时必须先消除文法中的左递归。
()
13. 规范归约和规范推导是互逆的两个过程。
()
14. 算符优先关系表不一定存在对应的优先函数。
()
15. LR法是自顶向下语法分析方法。
()
16. 对中间代码的优化依赖于具体的计算机。
()四.简答题
1. 写一个文法,使其语言是奇数集,且每个奇数不以0开头。
2. 已知文法G[S]为
S→aSb|Sb|b,
试证明文法G[S]为二义文法。
3. 文法G(S)
S→dAB
A→aA|a
B→Bb|ε
描述的语言是什么?
4. 写一个文法使其语言为偶数集,且每个偶数不以0开头。
5. 证明文法G(S)
S→SaS|ε
是二义性的。
五、程序设计题
1. 已知文法G(S):
S→a|∧|(T)
T→T,S|S
写出句子((a,a),a)的规范归约过程及每一步的句柄。
2. 已知文法G[E]:
E→ETE|(E)|i
T→*|+
1)将文法G改造成LL(1)文法;
2)构造文法G中每个非终结符的FIRST集合及FOLLOW集合;
3)构造LL(1)分析表。
参考答案:
一.单项选择题
1. 类型
2. 终态
3. 左
4. 单词符号串
5. 语法树
6. 一张分析表
7. 语义
8. 是否生成目标代码
9. 语法分析10. 单词符号11. 正则12. 语法树13. 自上而下14. 最左素短语
四. 简答题
1. 文法G(N):
N→AB|B
A→AC|D
B→1|3|5|7|9
D→B|2|4|6|8
C→0|D
2. 证明:
由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:
因此,文法G[S]为二义文法。
3.L(G)={da n b m |n>0, m≥0}
4. 文法G(S):
S→AB|B|A0
A→AD|C
B→2|4|6|8
C→1|3|5|7|9|B
D→0|C
5. 证明:
因为文法G[S]存在句子aa有两个不同的最左推导,所以文法G[S]是是二义性的。
S=>SaS=>SaSaS=>aSaS=>aaS=>aa
S=>SaS=>aS=>aSaS=>aaS=>aa
五. 程序设计题
1.
句型归约规则句柄
((a,a),a) S→a a
((S,a),a) T→S S
((T,a),a) S→a a
((T,S),a) T→T,S T,S
((T),a) S→(T) (T)
(S,a) T→S S
(T,a) S→a a
(T,S) T→T,S T,S
(T) S→(T) (T)
S
2.
1)文法存在左递归,消除左递归后的文法为:
E→(E)E…|iE…
E‘→TEE‘|ε
T→*|+
2)FIRST(E)={(,i}
FIRST(E‘)={*,+, ε}
FIRST(T)={*,+}
FOLLOW(E)={),*,+,#}
FOWLLOW(E‘)= {),*,+,#}
FOLLOW(T)={(,i}
3)。