编译原理模拟试卷

合集下载

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。

答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。

2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。

它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。

三、论述题1. 论述编译器中的代码优化技术及其重要性。

答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。

常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。

代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。

四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。

编译原理模拟题

编译原理模拟题

编译原理一、单选题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分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码解释C. 代码翻译D. 代码调试答案:C2. 编译过程中的语法分析阶段主要解决什么问题?A. 词法问题B. 语法问题C. 语义问题D. 代码生成问题答案:B3. 在编译原理中,哪些技术用于处理程序中的递归结构?A. 正则表达式B. 有限自动机C. 上下文无关文法D. 属性文法答案:C4. 编译器的哪个部分负责将中间代码转换为目标代码?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:D5. 编译器中的词法分析器主要使用哪种数据结构来存储输入的源代码?A. 栈B. 队列C. 链表D. 哈希表答案:C6. 在编译原理中,哪个概念用于描述程序语言的语法结构?A. 语法树B. 抽象语法树C. 控制流图D. 数据流图答案:B7. 编译器的哪个阶段负责检查变量是否被正确声明和使用?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:C8. 编译器在哪个阶段会进行代码优化?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D9. 在编译原理中,哪些技术用于生成有效的目标代码?A. 语法分析B. 语义分析C. 代码优化D. 目标代码生成答案:D10. 编译器的哪个部分负责将源代码中的注释和空白字符去除?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:A二、填空题(每题2分,共20分)1. 编译器的前端包括词法分析、语法分析和______。

答案:语义分析2. 编译器的后端包括中间代码生成、______和目标代码生成。

答案:代码优化3. 编译原理中的______用于描述词法单元。

答案:词法规则4. 编译原理中的______用于描述程序语言的语法结构。

答案:上下文无关文法5. 编译原理中的______用于描述程序语言的语义。

答案:属性文法6. 编译原理中的______用于描述程序控制流。

编译原理考试试卷

编译原理考试试卷

编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理:A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 链式文法5. 语义分析的目的是:A. 检查源代码的语法是否正确B. 检查源代码的语义是否正确C. 将源代码转换为目标代码D. 优化源代码6. 代码生成阶段,编译器将抽象语法树转换成:A. 目标代码B. 源代码C. 汇编代码D. 机器代码7. 编译优化中,常量折叠是一种:A. 局部优化B. 全局优化C. 过程间优化D. 模块内优化8. 编译器的前端主要负责:A. 源代码的输入B. 目标代码的生成C. 源代码的解析和翻译D. 运行时错误检测9. 编译器的后端主要负责:A. 词法分析B. 语法分析C. 代码优化D. 目标代码的生成和链接10. 以下哪个是编译原理中常用的数据结构?A. 栈B. 队列C. 链表D. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。

2. 描述语法分析中自顶向下分析和自底向上分析的区别。

3. 解释编译优化的重要性,并给出一个优化的例子。

三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。

2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。

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

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。

答案:语义分析2. 编译器的后端主要负责________和目标代码生成。

答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。

答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。

答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。

答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。

2. 解释一下什么是语法制导翻译。

答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。

3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。

四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。

答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。

2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。

编译原理与技术期末考试模拟试题2及答案

编译原理与技术期末考试模拟试题2及答案

编译原理与技术模拟试题二一、填空题(20分,每空2分)1.1LR(1)分析法中,L的含义是,R的含义是。

答案:自左至右扫描输入串,最右推导的逆解释:若为文法G构造的移进-归约分析表中不含多重定义的条目,则称G为LR(k)文法,分析器被称为是LR(k)分析器,它所识别的语言被称为LR(k)语言。

L表示从左到右扫描输入序列,R表示逆序的最右推导,k表示为确定下一动作向前看的终结符个数,一般情况下k<=1。

当k=1时,简称LR。

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一个文法产生的_______________________称为该文法的语言。

编译原理考试试卷

编译原理考试试卷

编译原理考试试卷一、选择题(每题2分,共20分)1. 下列哪个选项不是编译器的主要功能?A. 词法分析B. 语法分析C. 语义分析D. 运行程序2. 编译过程中,词法分析器的作用是:A. 将源代码转换为中间代码B. 将源代码分解为一系列的标记C. 检查源代码的语法正确性D. 优化生成的目标代码3. 在编译原理中,自底向上的语法分析方法通常指的是:A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析4. 下列哪个选项不是编译器的优化技术?A. 常量传播B. 死码消除C. 循环不变代码外提D. 动态链接5. 在编译器的语义分析阶段,主要进行的工作是:A. 检查标识符的拼写是否正确B. 检查语法结构是否符合语言规则C. 检查类型是否一致,进行类型转换D. 生成目标代码6. 编译器中,用于存储变量信息的数据结构通常是:A. 符号表B. 语法树C. 控制流图D. 抽象语法树7. 编译器在处理数组时,通常采用的地址计算方法是:A. 偏移量计算B. 直接地址计算C. 间接地址计算D. 基址加偏移量计算8. 在编译原理中,哪种类型的文法不是上下文无关文法?A. 正则文法B. 上下文有关文法C. 上下文无关文法D. 无限制文法9. 编译器在生成目标代码时,通常需要考虑的是:A. 源代码的可读性B. 目标代码的可执行性C. 源代码的语法正确性D. 目标代码的可移植性10. 在编译原理中,下列哪个选项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 二进制代码二、填空题(每空1分,共10分)1. 编译器在进行语法分析时,通常使用________文法来描述程序设计语言的语法规则。

2. 编译器的________阶段负责将源代码中的标识符替换为内存地址。

3. 在编译原理中,________文法可以用来描述正则表达式。

4. 编译器在进行语义分析时,需要检查变量的________和________。

编译原理考试及答案

编译原理考试及答案

编译原理考试及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码翻译成目标代码,以下哪个选项不属于编译器的主要功能?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D2. 在编译原理中,BNF(巴科斯-诺尔范式)是一种用于描述哪种结构的记号?A. 语法结构B. 词法结构C. 语义结构D. 控制结构答案:A3. 编译过程中的哪个阶段负责检查变量是否被正确声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 下列哪个选项不是编译器前端处理的一部分?A. 预处理B. 词法分析C. 语法分析D. 目标代码生成答案:D5. 在编译原理中,自底向上的解析方法通常指的是哪种分析方法?A. LL(1)分析B. LR(1)分析C. LALR(1)分析D. SLR(1)分析答案:B6. 编译器中的语义分析阶段主要负责什么?A. 识别标识符B. 检查语法结构C. 构建抽象语法树D. 生成中间代码答案:C7. 编译器中的错误恢复机制主要在哪个阶段进行?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:B8. 编译器中的代码优化通常发生在哪个阶段?A. 语义分析B. 中间代码生成C. 目标代码生成D. 机器无关代码优化答案:D9. 在编译原理中,哪些技术用于处理左递归?A. 直接左递归消除B. 间接左递归消除C. 直接和间接左递归消除D. 只有直接左递归消除答案:C10. 编译器中的哪些技术用于处理冲突?A. 预测分析表B. 状态转换图C. 优先级规则D. 所有选项答案:D二、填空题(每题2分,共20分)1. 编译器的前端主要负责源程序的______和______。

答案:词法分析;语法分析2. 编译器的后端主要负责______和______。

答案:代码优化;目标代码生成3. 在编译原理中,一个文法的产生式规则形式为:A → α,其中A是非终结符,α是终结符和非终结符的有限序列,这种产生式规则被称为______产生式。

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

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

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

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析的主要任务是什么?A. 将源程序代码转换为中间代码B. 识别源程序中的词法单位并生成词法单元C. 检查源程序的语法正确性D. 优化生成的代码答案:B2. 下列哪个不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 代码生成器D. 运行时库答案:D3. 在编译过程中,语义分析的主要作用是什么?A. 识别词法错误B. 检查语法错误C. 检查类型错误D. 生成目标代码答案:C4. 编译器中的中间代码表示通常采用哪种形式?A. 三地址代码B. 后缀表达式C. 抽象语法树D. 逆波兰表示答案:A5. 编译器优化的主要目标是什么?A. 增加程序的可读性B. 提高程序的执行效率C. 减少程序的存储空间D. 以上都是答案:D二、填空题(每题2分,共10分)1. 编译器的前端主要包括词法分析、______和语义分析。

答案:语法分析2. 编译器的后端主要包括代码优化、______和目标代码生成。

答案:代码生成3. 词法分析器通常使用______来识别词法单位。

答案:有限自动机4. 语法分析器可以使用______文法来描述语言的语法结构。

答案:上下5. 编译器优化中,______优化可以减少程序的运行时间。

答案:时间三、简答题(每题5分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源程序转换成等价的目标程序,同时进行语法、语义和运行时错误检查,以及代码优化以提高程序的执行效率。

2. 描述编译过程中的词法分析阶段的主要任务。

答案:词法分析阶段的主要任务是将源程序的字符序列分割成一系列的标记(token),这些标记是源程序中最小的有意义的单位,如关键字、标识符、常量等,并为后续的语法分析阶段提供输入。

3. 什么是语法分析?它在编译过程中的作用是什么?答案:语法分析是编译过程中的一个阶段,其任务是根据语言的语法规则检查源程序是否符合语法结构,并构建出抽象语法树(AST)。

编译原理与技术期末考试模拟试题1及答案

编译原理与技术期末考试模拟试题1及答案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、单项选择题(每题2分,共20分)1. 编译器的主要功能是将()转换成目标代码。

A. 汇编语言B. 高级语言C. 机器语言D. 伪代码答案:B2. 语法分析阶段的任务是()。

A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:B3. 下列哪个算法是用于构建语法分析树的?()A. LL(1)分析B. LR(1)分析C. 语法制导翻译D. 语法制导翻译方案答案:A4. 在编译原理中,一个文法的产生式A→α表示()。

A. A可以被α替换B. A可以被α推导C. A可以被α翻译D. A可以被α解释答案:B5. 一个语言的语法分析树的根节点对应于()。

A. 程序B. 程序的输入C. 程序的输出D. 程序的语法答案:D6. 编译器的语义分析阶段主要处理()。

A. 词法分析B. 语法分析C. 类型检查D. 代码优化答案:C7. 编译器的代码优化阶段主要进行()。

A. 词法分析B. 语法分析C. 类型检查D. 指令选择答案:D8. 编译器的代码生成阶段主要进行()。

A. 词法分析B. 语法分析C. 类型检查D. 指令序列生成答案:D9. 编译器的哪个阶段负责处理变量的存储分配?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D10. 编译器的哪个阶段负责处理宏展开?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:A二、多项选择题(每题3分,共15分)1. 编译器的前端包括()。

A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:ABC2. 编译器的后端包括()。

A. 词法分析B. 语法分析C. 代码优化D. 代码生成答案:CD3. 编译器的语义分析阶段可能包括()。

A. 类型检查B. 作用域解析C. 存储分配D. 代码优化答案:ABC4. 编译器的代码优化阶段可能包括()。

A. 常量折叠B. 死代码消除C. 循环不变代码外提D. 词法分析答案:ABC5. 编译器的代码生成阶段可能包括()。

编译原理模拟试卷及答案

编译原理模拟试卷及答案

模拟试题三发表日期:2009年6月14日出处:admin 作者:编译原理课程小组编辑:admin 阅读数:276编译原理模拟题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 的属性值。

最新《编译原理》模拟期末试题汇总-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. 正规文法、正规式、确定有限自动机和非确定有限自动机在接收语言的能力上是互相等价的。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将高级语言源程序转换成机器语言目标程序。

(对/错)答案:对2. 编译过程中,词法分析器的主要任务是识别源程序中的各种词法单位。

(对/错)答案:对3. 在语法分析阶段,编译器使用的数据结构是栈。

(对/错)答案:错4. 语义分析的主要目的是检查程序的语法结构是否正确。

(对/错)答案:错5. 编译器的优化阶段可以提高目标程序的执行效率。

(对/错)答案:对6. 编译器的代码生成阶段负责将中间代码转换为目标代码。

(对/错)答案:对7. 编译器的运行时系统包括内存管理、输入输出处理等功能。

(对/错)答案:对8. 编译器的前端主要负责源程序的分析,后端负责目标代码的生成。

(对/错)答案:对9. 编译器的词法分析阶段不涉及对标识符的识别。

(对/错)答案:错10. 编译器的语法分析阶段可以识别出所有的语法错误。

(对/错)答案:对二、填空题(每题2分,共20分)1. 编译器在进行语法分析时,通常采用________算法。

答案:LL(1)或LR(1)2. 编译器在语义分析阶段,需要对变量的________进行检查。

答案:作用域和生命周期3. 编译器在代码优化阶段,常用的优化技术包括________和循环优化。

答案:常量传播4. 编译器在目标代码生成阶段,需要考虑________的约束。

答案:目标机器5. 编译器的运行时系统包括________、内存管理、输入输出处理等。

答案:程序启动和异常处理6. 编译器在词法分析阶段,需要识别的词法单位包括________、标识符、常量等。

答案:关键字7. 编译器在语法分析阶段,使用的分析表可以是________表或ACTION 表。

答案:GOTO8. 编译器在语义分析阶段,需要对表达式的________进行计算。

答案:类型9. 编译器的代码生成阶段,需要将中间代码转换为________代码。

答案:目标机器10. 编译器的运行时系统在内存管理中,需要处理________和垃圾收集。

编译原理模拟考题

编译原理模拟考题

编译原理模拟考题一、选择题(每题2分,共10分)1.文法G产生的的全体是该文法描述的语言。

A.句型 B. 终结符集 C. 非终结符集 D.句子2.描述一个语言的文法是()A.唯一的B.不唯一的C.可能唯一,也可能不唯一3.一个文法所描述的语言是;描述一个语言的文法是。

A.唯一的 B不唯一的 C 可能唯一,也可能不唯一3.以下选项中关于确定的有穷自动机(DFA)M1=(K,∑,f,S,Z)与不确定的有穷自动机(NFA)M2=(K,∑,f,S,Z)描述不正确的是()A.二者K均是状态元素的有穷集B.二者的∑均是有穷字母表C.M1的S是唯一的一个初态,M2 的S是非空初态集D.M1、M2的转换函数f均是单值转换函数5.已知有穷自动机的状态的转换图如图所示,与该有穷自动机等价的是正二、简答题(1、2、3、6每题10分,4、5每题15分,共70分)1、已知文法G(E)E→T|E+TT→F|T *FF→(E)|i(1)给出句型(T *F+i)的最右推导及画出语法树;(2)给出句型(T *F+i)的短语、直接短语、句柄、素短语2、已知文法G的产生式为:S->ABA->aA|εB->bBc|bc(1)求文法G识别的语言L。

(2)试构造识别L的最小化的DFA。

3、设文法G(S):S→(L)|a S|aL→L,S|S(1)消除左递归;(2)判断G[S]是否为LL(1)文法,若是,请构造相应的LL(1)预测分析表。

4、给定文法S→a|∧|(T)T→T,S|S(1)计算文法G[S]的FIRSTVT和LASTVT。

(2)构造G[S]的算符优先关系表,并判断其是否为算符优先文法。

(3)给出输入串(a,a)#的算符优先分析过程。

5、给定文法G[S]:S→AS|bA→SA|a(1)列出这个文法的所有LR(0)项目。

(2)写出这个文法的LR(0)规范族。

(3)判断这个文法是SLR的吗?6、如下三地址代码序列,给出两个寄存器R0、R1,写出该代码序列的最优机器指令序列t=a-bu=a+cv=a-tw=v+u三、综合题(20分)1、While a>0 ∨b<0 doBeginX:=X+1;if a>0 then a:=a-1else b:=b+1End;(1)翻译成四元式序列划分基本块并做出流图。

编译原理第一套模拟卷

编译原理第一套模拟卷

编译原理第一套模拟卷总分: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.一个有限状态自动机中,有且仅有一个唯一的终态。

编译原理考试试题

编译原理考试试题

编译原理考试试题一、选择题(每题 2 分,共 20 分)1、编译程序是一种()。

A 系统软件B 应用软件C 实时系统D 分布式系统2、词法分析器的输出结果是()。

A 单词的种别编码和自身值B 单词在符号表中的位置C 单词的语法属性D 单词的语义信息3、正规式(ab|c)表示的语言是()。

A 以 ab 或 c 开头的字符串B 以 ab 或 c 结尾的字符串C 包含 ab 或 c 的字符串D 由 ab 或 c 组成的任意字符串4、设有文法 GS:S→aS|b,该文法描述的语言是()。

A {anb|n≥0}B {ambn|m,n≥0}C {an|n≥1}D {ambm|m,n≥0}5、在自底向上的语法分析中,分析的关键是()。

A 寻找句柄B 寻找句型C 消除左递归D 消除回溯6、代码优化的目的是()。

A 提高程序的运行速度B 节省存储空间C 提高目标代码的质量D 以上都是7、以下中间代码形式中,()更便于优化。

A 三元式B 四元式C 逆波兰式D 树形表示8、数据空间的分配策略中,()适用于过程调用次数较多的情况。

A 静态分配B 动态分配C 栈式分配D 堆式分配9、目标代码生成时,应考虑如何充分利用计算机的寄存器,这是()方面的问题。

A 指令选择B 寄存器分配C 指令调度D 以上都是10、下面关于解释程序和编译程序的论述中,正确的是()。

A 解释程序不生成目标代码,编译程序生成目标代码B 解释程序和编译程序都不生成目标代码C 解释程序生成目标代码,编译程序不生成目标代码D 解释程序和编译程序都生成目标代码二、填空题(每题 2 分,共 20 分)1、编译程序的工作过程一般可以划分为 5 个阶段,分别是、、、和。

2、词法分析的任务是从中识别出一个个。

3、确定的有穷自动机是一个元组,通常表示为。

4、语法分析最常用的两类方法是和。

5、常见的存储分配策略有、和。

6、局部优化的对象通常是。

7、基本块是指。

8、符号表的作用是。

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

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

你可以假定所有的整数都不为零,这样就不用担心零的符号。

E→E *E | +E | -E | unsigned_integer四、一个C语言程序如下:func(i1,i2,i3)long i1,i2,i3;{long j1,j2,j3;printf("Addresses of i1,i2,i3 = %o,%o,%o\n",&i1,&i2,&i3);printf("Addresses of j1,j2,j3 = %o,%o,%o\n",&j1,&j2,&j3);}main(){long i1,i2,i3;func(i1,i2,i3);}该程序在某种机器的Linux上的运行结果如下:Addresses of i1,i2,i3 = 27777775460,27777775464,27777775470 Addresses of j1,j2,j3 = 27777775444,27777775440,27777775434从上面的结果可以看出,func 函数的3个形式参数的地址依次升高,而3个局部变量的地址依次降低。

试说明为什么会有这个区别。

五、考虑下面的三地址语句序列:b := 1b := 2if w <= x goto L2e := bgoto L2L1: goto L3L2: c := 3b := 4c := 6L3: if y <= z goto L4goto L5L4: g := g + 1h := 8goto L1L5: h := 9(1)在该代码中用水平的横线将代码分成基本块,并给每个基本块一个序号。

(2)画出该代码的控制流图,每个基本块就用(1)的序号表示。

(3)若有循环的话,列出构成每个循环的结点。

模拟试卷C一、下面是用正规式表示的变量声明:( int | float ) id (, id )* ;请改用上下文无关文法表示,也就是写一个上下文无关文法,它和该正规式等价。

二、下面的文法产生代表正二进制数的0和1的串集:B → B 0 | B 1 | 1下面的翻译方案计算这种正二进制数的十进制值:B → B1 0 {B.va l := B1.val⨯ 2 }| B1 1 {B.val := B1.val⨯ 2 +1}| 1 {B.val := 1 }请消除该基础文法的左递归,再重写一个翻译方案,它仍然计算这种正二进制数的十进制值。

三、为下面文法写一个语法制导的定义,用S的综合属性val给出下面文法中S 产生的二进制数的值。

例如,输入101.101时,S. val := 5.625。

(不得修改文法。

)S → L . R | LL → L B | BR → B R | BB → 0 | 1四、对于下面C语言文件s.cf1(int x){long x;x = 1;}f2(int x){{long x;x = 1;}}某编译器编译时报错如下:s.c: In function ‘f1’:s.c:3: warning: declaration of ‘x’ shadows a parameter请回答,对函数f2为什么没有类似的警告错误。

五、考虑一个简单语言,其中所有的变量都是整型(不需要显式声明),并且仅包含赋值语句、读语句和写语句。

下面的产生式定义了该语言的语法(其中lit 表示整型常量;OP的产生式没有给出,因为它和下面讨论的问题无关)。

Program →StmtListStmtList →Stmt StmtList | StmtStmt →id := Exp; | read (id ); | write ( Exp );Exp →id | lit | Exp OP Exp我们把不影响write语句输出值的赋值(包括通过read语句来赋值)称为无用赋值,写一个语法指导定义,它确定一个程序中出现过赋予无用值的变量集合(不需要知道无用赋值的位置)和没有置初值的变量集合(不影响write语句输出值的未置初值变量不在考虑之中)。

非终结符StmtList和Stmt用下面3个属性(你根据需要来定义其它文法符号的属性):(1)uses_in:在本语句表或语句入口点的引用变量集合,它们的值影响在该程序点后的输出。

(2)uses_out:在本语句表或语句出口点的引用变量集合,它们的值影响在该程序点后的输出。

(3)useless:本语句表或语句中出现的无用赋值变量集合。

模拟试卷D一、描述由正规式b*(abb*)*(a| ε)定义的语言,并画出接受该语言的最简DFA。

二、证明文法E → E + id | id是SLR(1)文法。

三、考虑一个类Pascal的语言,其中所有的变量都是整型(不需要显式声明),并且仅包含赋值语句、读语句、写语句,条件语句和循环语句。

下面的产生式定义了该语言的语法(其中lit表示整型常量;OP的产生式没有给出,因为它和下面讨论的问题无关)。

定义Stmt的两个属性:MayDef表示它可能定值的变量集合,MayUse表示它可能引用的变量集合。

写一个语法制导定义或翻译方案,它计算Stmt的MayDef和MayUse属性。

Program →StmtStmt →id := ExpStmt →read (id )Stmt →write ( Exp )Stmt →Stmt ; StmtStmt →if ( Exp ) then begin Stmt end else begin Stmt endStmt →while ( Exp ) do begin Stmt endExp →idExp →litExp →Exp OP Exp四、在C语言中,3++和( id + id )++这样的表达式被编译时,编译器都会报告如下的错误:invalid lvalue in increment现有如下简化的C语言表达式文法:E → E + E | ( E ) | E ++ | id | num请写一个语法制导定义或翻译方案,它检查++的运算对象是否合法。

五、一个C语言程序如下:typedef struct _a{short i;short j;short k;}a;typedef struct _b{long i;short k;}b;main(){printf("Size of short, long, a and b = %d,%d,%d,%d\n",sizeof(short), sizeof(long),sizeof(a),sizeof(b));}该程序在X86/Linux机器上的运行结果如下:Size of short, long, a and b = 2, 4, 6, 8已知short类型和long类型分别对齐到2的倍数和4的倍数。

试问,为什么类型b的size会等于8?。

相关文档
最新文档