编译原理模拟试题

合集下载

编译-模拟试卷一

编译-模拟试卷一

编译原理模拟试卷一一.填空题(每空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)*。

编译原理试题与答案

编译原理试题与答案

编译原理试题与答案第1讲绪论本讲模拟练习题(不计分)1. 编译是对( )。

A. 机器语⾔的执⾏B. 汇编语⾔的翻译C. ⾼级语⾔的翻译D. ⾼级语⾔程序的解释执⾏正确答案:C你选对了2. ⽤⾼级语⾔编写的程序经编译后产⽣的程序叫( )。

A. 源程序B. ⽬标程序C. 连接程序D. 解释程序正确答案:B你选对了3. ( )不是编译程序的组成部分。

A. 词法分析程序B. 代码⽣成程序C. 设备管理程序D. 语法分析程序正确答案:C你选对了4. 源程序是句⼦的集合,( )可以较好地反映句⼦的结构。

A. 线性表B. 树C. 完全图D. 堆栈正确答案:B你选对了5. 编译程序是⼀种( )。

A. 汇编程序B. 翻译程序C. 解释程序D. ⽬标程序正确答案:B你选对了6. 按逻辑上划分,编译程序第三步⼯作是( )。

A. 语义分析B. 词法分析C. 语法分析D. 代码⽣成正确答案:A你选对了7. 编译程序中语法分析器接收以( )为单位的输⼊。

A. 单词B. 表达式C. 产⽣式D. 句⼦正确答案:A你选对了8. 编译过程中,语法分析器的任务就是( )。

A. 分析单词是怎样构成的B. 分析单词串是如何构成语句和声明的C. 分析语句和声明是如何构成程序的D. 分析程序的结构正确答案:B你选对了9. 语法分析时所依据的是( )A. 语法规则B. 词法规则C. 语义规则D. 等价变换规则正确答案:A你选对了第1讲测验(计分)把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由( )完成的。

1. 单选(1分) 把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由A. 编译器B. 解释器C. 预处理器D. 汇编器正确答案:D你选对了2. 单选(1分) ( )不是编译程序的组成部分。

A. 词法分析程序B. 语法分析程序C. 代码⽣成程序D. 设备管理程序正确答案:D你选对了3. 单选(1分) 通常⼀个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码⽣成,代码优化,⽬标代码⽣成等六个部分,还应包括( )。

编译原理试题汇总 编译原理期末试题(8套含答案 大题集)

编译原理试题汇总 编译原理期末试题(8套含答案 大题集)

编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。

A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。

A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。

C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。

A.语法规则 B.词法规则 C.语义规则 D.等价变换规则4.后缀式 ab+cd+/可用表达式__B_来表示。

A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。

A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析7.词法分析器用于识别__C___。

A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符8.语法分析器则可以发现源程序中的___D__。

A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正 D.( ) 语法错误9.下面关于解释程序的描述正确的是__B___。

(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3)10.解释程序处理语言时 , 大多数采用的是__B___方法。

A.( ) 源程序命令被逐个直接解释执行B.( ) 先将源程序转化为中间代码 , 再解释执行C.( ) 先将源程序解释转化为目标程序 , 再执行D.( ) 以上方法都可以11.编译过程中 , 语法分析器的任务就是__B___。

编译原理与技术1

编译原理与技术1

编译原理与技术模拟试题一一、填空题(20分,每空2分)1.1编译程序的工作过程可划分为词法分析、语法分析、、中间代码生成、代码优化、等阶段,一般在阶段对表达式中运算对象的类型进行检查。

答案:语义分析、目标代码生成、语义分析解释:要求掌握编译器的工作原理和特点。

编译和解释方式是翻译高级程序设计语言的两种基本方式。

解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

编译过程包含词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,以及符号表管理和出错处理。

表达式的类型信息属于语义信息,所以在语义分析阶段进行类型检查。

1.2 和预测分析法是自上而下的语法分析方法。

答案:递归下降法解释:语法分析的任务是根据语言的语法规则,分析单词串是否构成短语和句子,即表达式、语句和程序等基本语言结构,同时检查和处理程序中的语法错误。

根据语法树(或分析树)的建立方式,语法分析可分为自上而下分析和自下而上分析两类,递归下降分析和预测分析属于自上而下的语法分析方法。

1.3常用的存储分配策略有存储分配和动态存储分配,其中,动态存储分配策略包括分配和分配。

答案:静态、栈、堆解释:编译器怎样对存储空间进行组织和采用什么样的存储分配策略,很大程度上取决于程序设计语言中所采用的机制。

编译器具体实现时,根据语言机制的特性,采用静态分配策略、栈分配策略和堆分配策略三种方式的其中若干种。

静态分配策略是指编译时安排所有数据对象的存储,即绑定是静态确定的;栈分配策略是指按栈的方式管理运行时的存储;堆分配策略是指在运行时根据要求从堆数据区动态地分配和释放存储。

1.4移进、归约是分析中的典型操作。

答案:自下而上或LR解释:自下而上分析的一般思路是从句子ω开始,从左到右扫描ω,反复用产生式的左部替换产生式的右部、谋求对ω的匹配,最终得到文法的开始符号,或者发现一个错误。

编译原理》模拟期末试题汇总6套含答案

编译原理》模拟期末试题汇总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.编译过程中,语法剖析器的任务就是_____。

编译原理编译原理考试卷模拟考试题.docx

编译原理编译原理考试卷模拟考试题.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

《编译原理》模拟试题五.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版)编译原理练习题

(完整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),该文法所描述的语言是。

编译原理模拟试题和答案[编译原理模拟试题和答案.d

编译原理模拟试题和答案[编译原理模拟试题和答案.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是文法的一个句子。

编译原理模拟试卷及答案集

编译原理模拟试卷及答案集

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 )。

编译原理模拟题

编译原理模拟题

一、填空题(每空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]的句型。

8套《编译原理》期末模拟试卷+参考答案

8套《编译原理》期末模拟试卷+参考答案
10.按照教材上介绍的方法,函数的翻译结果如下: void zoom (GraphicalObj &obj, double zoom_factor, Point &center) { obj.vptr[0] (obj, center.x, center.y); // 将中心点移至原点(0, 0) obj.vptr[1] (obj, zoom_factor); // 缩放 }
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 &center) {
接受该语言的最简 DFA 是:
b
start
a
1a

编译原理试题及答案(期末复习版)

编译原理试题及答案(期末复习版)

<编译原理>历年试题及答案一.(每项选择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)构造预测分析表。

最新《编译原理》模拟期末试题汇总-6套-含答案资料

最新《编译原理》模拟期末试题汇总-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 的效率。

编译原理第一套模拟卷

编译原理第一套模拟卷

编译原理第一套模拟卷总分:100分时间:90分钟一、选择题(每小题2分,共20分)1.词法分析器的输出结果是_____。

A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式 M 1 和 M 2 等价是指_____。

A.M1和M2的状态数相等 B. M1和M2的有向边条数相等C. M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.xyx B.(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. 标识符的行号二、是非题(请在括号内,正确的划√,错误的划×)(每小题2分,共20分)1.编译程序是对高级语言程序的解释执行。

( )2.一个有限状态自动机中,有且仅有一个唯一的终态。

编译原理模拟题合集

编译原理模拟题合集

编译原理一、填空题(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__。

数组元素的地址计算公式由两部分组成,一部分是不变部分,它在__编译__时确定;另一部分是可变部分,它在__运行__时确定。

编译原理模拟试卷

编译原理模拟试卷

说明:向学生提供这门课程的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表示)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(10 分) else A:=A+2
(只给出最后结果,设 nextstat 当前值为 100) if A<0
-, -, 0 104 107 T1 A 100 T2 A 100
then A:=A+1
j< , A , C , 102
j< , A , 0 , j, -, -,
+ , A, 1, := , T1 , - , j, -, -,
} } } } } } } }
#
E '→ε
T'→ε
五、对于文法 G3,填写下列集合和 G 3 的优先关系表。 G3: E →E+T ∣T T→T*F ∣F F→(E )∣i + + * ( ) i # > > < > > < FIRSTVT (E ) ={ +, *, (, i } FIRSTVT(T )={ *, (, i FIRSTVT(F)={ (, i * < > < > > < < ( < < < ) > > = > > < i < < < > > = # > > } }
一、文法 1. 文法定义 G=(VN , V T, P, S)
V N:一组非终结符号 V T:一组终结符号 P: 一组产生式 S: 一个开始符号 2. 文法分类 按对产生式施加不同的限制把文法分成四种类型:
0 型:短语文法 1 型:上下文有关文法 2 型:上下文无关文法 3 型:正规文法(正则文法、线性文法) 3. 涉及的上下文无关文法:算符文法、算符优先文法、LL (1)文法、LR 文法 4. 文法的二义性 5. 文法的实用限制
直接短语:QbR 句柄:QbR
第2 页
四、对于文法 G 2,填写各产生式的选择集合和 G2 的预测分析表。 (15 分) G2:① E →TE' ② E'→+TE’ ③ E'→ε ④ T→FT' ⑤ T') ⑧ F→ i
+ E E' T T' F T'→ε T'→*FT’ F→(E) E'→+TE’ T→FT' T'→ε F→ i *
其它章节的内容比较单一,在复习的基础上重点思考下列问题:
1. 什么叫翻译程序?什么叫汇编程序?什么叫编译程序? 2. 编译过程分哪几个主要阶段?每个阶段的主要任务是什么? 3. 单词符号分哪几类?各举出例子。 4. 存储分配有哪几种?影响存储分配策略的主要因素是什么? 5. 通常参数传递有哪些主要方式?每种方式是如何实现的? 6. 中间代码通常有哪些类型?各有什么特点? 7. 什么叫语法制导翻译法? 8. 试述赋值语句、布尔表达式、IF 语句、WHILE 语句、REPEAT 语句的文法、语义、 翻译目标、文法改造及改造的理由? 9. 中间代码优化分哪几类?每一类有哪些主要优化技术? 10.什么叫基本块?如何把中间代码程序划分成基本块? 11.基本块目标代码生成算法? 12.目标代码生成中的寄存器分配算法?
第1 页
二、编译过程通常分为哪几个主要阶段?每个阶段的主要功能?(15 分) 答:编译过程通常分为词法分析、语法分析、语义分析、中间代码生成、代 码优化和目标代码生成六个主要阶段。各个阶段的主要功能如下: 词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分 解,识别出一个个单词,并表示成计算机内部的形式(TOKEN 字) 。 语法分析阶段:在词法分析的基础上,将单词序列分解成各类语法 短语,如“表达式” 、 “语句” 、 “程序”等,确定整个输入串是否构成语 法上正确的程序。 语义分析阶段:审查源程序有无语义错误,为代码生成阶段收集类 型信息。 中间代码生成阶段:将源程序翻译成一种复杂性介于源程序与目标 程序之间的内部形式(中间代码) 。 代码优化:对前阶段产生的中间代码进行等价变换,目的是使将来 生成的目标代码更为高效。 目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可 重定位的指令代码或汇编指令代码。 三、设有文法 G 1 (10 分) 1. 证明句型 QbRae 是规范句型 G1:S→SaQ ∣ Q Q→QbR ∣ R R→cSd ∣ e 证: 因为句型 QbRae 可由文法开始符 S 经过规范推导产生,推导过程如下: S =R> SaQ =R> SaR =R> Sae =R> Qae =R> QbRae 所以句型 QbRae 是规范句型。 2.给出句型 QbRae 的短语,直接短语和句柄: 短语:QbR e QbRae e
--
AVALUE T1 在 R1 中 T2 在 R2 中 T3 在 R1 中 T2 在 R2 中 T3 在 R1 中 T4 在 R2 中 T5 在 R1 中 W 在 R2 中
T5:= T3-T4 W:= T2/T5
T3 独占的 R1 空闲的 R2 释放 R2
第4 页
编译原理复习题
本门课程的重点是语法分析。它包含的内容广(第 3 章:文法;第 5、6、 7 章:分析方法) ,基本概念和基本方法多。为了便于大家复习,现把这四章 的内容归纳如下:
+ , A, 2, := , T2 , - , j, -, -,
七、用基本块代码生成算法生成目标代码。
(15 分)
(假定允许使用 R1 和 R2 寄存器,临时变量 Ti 出基本块后都不活跃) 四元式 T1:= A+B T2:= C-T1 T3:= D*E T4:= F+G 选取 R 空闲的 R1 空闲的 R2 空闲的 R1 释放 R2 目标代码 LD R1 , A ADD R1 , B LD R2 , C SUB R2 , R1 LD R1 , D MUL R1 , E ST R2 , T2 LD R2 , F ADD R2 , G SUB R1 , R2 LD R2 , T2 DIV R2 , R1 ST R2 , W RVALUE R1 中含有 T1 R2 中含有 T2 R1 中含有 T3 R2 中含有 T2 R1 中含有 T3 R2 中含有 T4 R1 中含有 T5 R2 中含有 W
《编译原理》考试卷( 120 分钟)
班级
一、 填空
学号
姓名
评分
(20 分,每空 1 分)
1.文法 G 包括四个组成部分:一组终结符号,一组非终结符号,一组产生 式,以及一个开始符号。 2.文法按产生式的形式分为四种类型,它们是:0 型文法,又称短语文法; 1 型文法,又称上下文有关文法;2 型文法,又称上下文无关文法;3 型 文法,又称正规文法。 3.最右推导称为规范推导,由规范推导产生的句型称为规范句型。 4. 设 G 是一个文法, S 是它的开始符号,如果 S= *>α, 则称α是一个句型。 仅由终结符号组成的句型是一个句子。 5 对于一个文法 G 而言, 如果 L(G) 中存在某个句子对应两棵不同的语法树, 那么该文法就称为是二义的。 6.通常程序设计语言的单词符号分为五种:基本字、标识符、常数、算符、 界限符。 7.在自底向上分析法中,LR 分析法把“可归约串”定义为句柄,算符优先 分析法把“可归约串”定义为最左素短语。 8.编译中常用的中间代码形式有逆波兰式、三元式、树代码和四元式等。 9.对中间代码优化按涉及的范围分为局部优化,循环优化和全局优化。 10. 局部优化主要包括合并已知量、 利用公共子表达式和删除无用赋值等内容。
三、基本概念(按概念的关联性分组记忆) 1. 直接推出、推导、句型、句子、语言、最左推导、最右推导(规范推导) 、规范 句型 2. 直接归约、归约、短语、直接短语、最左直接短语(句柄) 、素短语、最左素短 语、规范归约(最左归约)
四、基本方法(要求熟练做题) 1. 写递归下降子程序 2. 构造 LL(1)分析表(涉及消除左递归、提左因子、FIRST、FOLLOW、SELECT 集) 3. 构造算符优先分析表(涉及 FIRSTVT 、LASTVT 集)
(15 分) } }
LASTVT (E ) ={ +, *, ), i } LASTVT(T )={ *, ), i LASTVT(F)={ ), i
第3 页
六、把下面的语句翻译成四元式序列。 while A<C do
100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: S.CHAIN=101 j,
SELECT(①)={ ( , i SELECT(②)={ + SELECT(③)={ # , ) SELECT(④)={ ( , i SELECT(⑤)={ * SELECT(⑥)={ + , # , ) SELECT(⑦)={ ( SELECT(⑧)={ i
( E →TE' E '→ε T→FT' ) i E →TE'
二、分析方法 1. 自顶向下分析 递归下降法:分析 LL (1)文法产生的句子;由一组递归过程组成。 LL( 1)分析法(预则分析法) :分析 LL (1)文法产生的句子;由一个总控 程序和一个 LL (1)分析表组成。 2. 自底向上分析 算符优先分析法:非规范归约,用“最左素短语”定义“可归约串” ;分析算 符优先文法产生的句子;由一个总控程序和一个算符优先分析表组成。 LR 分析法:规范归约,用“句柄”定义“可归约串” ;分析 LR 文法产生的句 子;由一个总控程序和一个 LR 分析表组成。
相关文档
最新文档