编译原理模拟题

合集下载

编译原理模拟题2

编译原理模拟题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套含答案

编译原理》模拟期末试题汇总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 _______。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题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一个文法产生的_______________________称为该文法的语言。

编译原理试题及答案

编译原理试题及答案

《编译原理》模拟题一.单选题1.()是两类程序语言处理程序.A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序[答案]:B2.解释程序处理语言时,大多数采用的是()方法.A.源程序命令被逐个直接解释执行B.先将源程序转化为中间代码,再解释执行C.先将源程序解释转化为目标程序,再执行D.以上方法都可以[答案]:A3.()是一种典型的解释型语言.A.BASICB.CC.FORTRAND.PASCAL[答案]:A4.与编译系统相比,解释系统().A.比较简单,可移植性好,执行速度快B.比较复杂,可移植性好,执行速度快C.比较简单,可移植性差,执行速度慢D.比较简单,可移植性好,执行速度慢[答案]:D5.编译程序是一种().A.汇编程序B.翻译程序C.解释程序D.目标程序[答案]:B6.编译程序是对().A.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译[答案]:D7.用高级语言编写的程序经编译后产生的程序叫().A.源程序B.目标程序C.连接程序D.解释程序[答案]:B8.将编译程序分成若干个“遍”是为了().A.提高程序的执行效率B.使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率[答案]:B9.构造编译程序应掌握().A.源程序B.目标语言C.编译方法D.以上三项都是[答案]:D10.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括().A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器[答案]:C11.编译程序绝大多数时间花在()上.A.出错处理B.词法分析C.目标代码生成D.管理表格[答案]:D12.程序的基本块是指().A.一个子程序B.一个仅有一个入口和一个出口的语句C.一个没有嵌套的程序段D.一组顺序执行的程序段,仅有一个入口和一个出口[答案]:D13.变量应当().B.持有右值C.既持有左值又持有右值D.既不持有左值也不持有右值[答案]:C14.数组的内情向量中肯定不含有数组的()的信息.A.维数B.类型C.维上下界D.各维的界差[答案]:A15.一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组().A.字符串B.产生式C.非开始符号D.文法[答案]:B16.一个文法所描述的语言是().A.唯一的B.不唯一的C.可能唯一,也可能不唯一D.都不对[答案]:A17.文法G产生的()的全体是该文法描述的语言.A.句型B.终结符集C.非终结符集D.句子[答案]:D18.若文法G定义的语言是无限集,则文法必然是().A.递归的B.前后文无关的C.二义性的D.无二义性的[答案]:A19.文法分为四种类型,即0型,1型,2型,3型.其中2型文法是().A.短语文法C.上下文有关文法D.上下文无关文法[答案]:C20.四种形式语言文法中,1型文法又称为()文法.A.短语文法B.正则文法C.上下文有关文法D.上下文无关文法[答案]:D21.正规式M1和M2等价是指().A.M1和M2的状态数相等B.Ml和M2的有向弧条数相等C.M1和M2所识别的语言集相等D.Ml和M2状态数和有向弧条数相等[答案]:C22.词法分析器的输出结果是().A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值[答案]:C23.词法分析器用于识别().A.字符串B.语句C.单词D.标识符[答案]:C24.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即().A.字符B.单词C.句子D.句型[答案]:B25.一个句型中称为句柄的是该句型的最左().A.非终结符号B.短语D.直接短语[答案]:D26.下推自动机识别的语言是().A.0型语言B.1型语言C.2型语言D.3型语言[答案]:C27.如果文法G是无二义的,则它的任何句子α().A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同[答案]:A28.采用自上而下分析,必须().A.消除左递归B.消除右递归C.消除回溯D.提取公共左因子[答案]:C29.在规范归约中,用()来刻画可归约串.A.直接短语B.句柄C.最左素短语D.素短语[答案]:B30.若a为终结符,则A->α·aβ为()项目.A.归约B.移进C.接受D.待约[答案]:B31.高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法.A.自左向右B.自顶向下C.自底向上D.自右向左32.在通常的语法分析方法中,()特别适用于表达式的分析.A.算符优先分析法B.LR分析法C.递归下降分析法D.LL(1)分析法[答案]:A33.语法分析器则可以发现源程序中的().A.语义错误B.语法和语义错误C.错误并校正D.语法错误[答案]:D34.后缀式ab+cd+/可用表达式()来表示.A.a+b/c+dB.(a+b)/(c+d)C.a+b/(c+d)D.a+b+c/d[答案]:B35.中间代码生成时所依据的是().A.语法规则B.词法规则C.语义规则D.等价变换规则[答案]:C36.()和代码优化部分不是每个编译程序都必需的.A.语法分析B.中间代码生成C.词法分析D.目标代码生成[答案]:B37.常用的中间代码形式不含().A.三元式B.四元式C.逆波兰式D.语法树[答案]:D38.代码优化的目的是().A.节省时间B.节省空间C.节省时间和空间把编译程序进行等价交换[答案]:C39.优化可生成()的目标代码.A.运行时间较短B.占用存储空间较小C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小[答案]:D40.下列()优化方法不是针对循环优化进行的.A.强度削弱B.删除归纳变量C.删除多余运算D.代码外提[答案]:C41.基本块内的优化为().A.代码外提,删除归纳变量B.删除多余运算,删除无用赋值C.强度削弱,代码外提D.循环展开,循环合并[答案]:B42.代码生成阶段的主要任务是().A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言[答案]:C43.在目标代码生成阶段,符号表用于().A.目标代码生成B.语义检查C.语法检查D.地址分配[答案]:D44.程序所需的数据空间在程序运行前就可确定,称为()管理技术.A.动态存储B.栈式存储C.静态存储D.堆式存储[答案]:C45.堆式动态分配申请和释放存储空间遵守()原则.A.先请先放B.先请后放C.后请先放D.任意[答案]:D46.编译程序使用()区别标识符的作用域.A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号[答案]:B47.生成能被5整除的正整数的文法G[Z]是().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|5[答案]:C48.符号串ab1b2是给定文法G[A]:A→aB,B→bB|b的句子,该句子的句柄是().A.b1B.b2C.cD..b1b2[答案]:B49.一般程序设计语言的定义都涉及()三个方面.①语法②语义③语用④程序基本符号的确定A.①,②和③B.①,②和④C.①,③和④D.②,③和④[答案]:B50.下述语句类中,()在编译阶段通常不产生可执行代码.A.赋值语句B.流程控制语句C.说明语句D.输入输出语句[答案]:C51.算符文法是指()的文法.①没有形如U→...VW...的规则(U,V,W错误!未找到引用源。

《编译原理》模拟试题六

《编译原理》模拟试题六

《编译原理》期末模拟试题六一、是非题(请在括号内,正确的划√,错误的划×)(每个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.基本块内的优化为_____。

《编译原理》模拟试题五.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),该文法所描述的语言是。

编译原理模拟题

编译原理模拟题

《编译原理》模拟题(补)一.单项选择题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包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。

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

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

<编译原理>历年试题及答案一.(每项选择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. 语义分析器答案:C3. 编译器的哪个阶段负责检查变量是否已经声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 在编译原理中,哪些技术常用于错误恢复?A. 预测分析表和LR分析B. 递归下降分析和LR分析C. 预测分析表和递归下降分析D. 预测分析表和错误恢复算法答案:D5. 编译器中用于优化代码的阶段是哪一个?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D二、填空题(每题2分,共10分)1. 编译器的前端包括词法分析、语法分析和________。

答案:语义分析2. 在编译过程中,________分析器负责将源代码的逻辑结构转换为一种内部表示形式。

答案:语法3. 编译器的后端包括________、寄存器分配和代码生成。

答案:中间代码生成4. 编译器中的________分析用于检查程序中的类型错误。

答案:语义5. 编译器的________阶段负责将高级语言代码转换为目标机器代码。

答案:代码生成三、简答题(每题10分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源代码转换成目标机器可以执行的机器代码,同时进行错误检测、代码优化等。

它通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

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

答案:语法分析阶段的主要任务是检查源代码是否符合语言的语法规则,构建抽象语法树(AST),并进行语法制导的语义分析。

这一阶段使用诸如自顶向下的递归下降分析、自底向上的移进-规约分析等技术来识别语言结构,并为后续的语义分析和代码生成打下基础。

模拟题-编译原理

模拟题-编译原理

、选择. ( 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个方面。

①语法是指由程序语言基本符号 组成程序中的各个语法成分(包括程序)的一组规则,不涉及语法成分的特定含义,也不涉及使用者。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

编译原理与技术期末考试模拟试题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套-含答案资料

最新《编译原理》模拟期末试题汇总-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)翻译成四元式序列划分基本块并做出流图。

编译原理模拟题

编译原理模拟题

编译原理模拟题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 的效率。

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

1、算符优先关系表不一定存在对应的优先函数。

( 错 )2、数组元素的地址计算与数组的存储方式有关。

( 错 )3、仅考虑一个基本块,不能确定一个赋值是否真是无用的。

( 正确 )4、每个文法都能改写为LL(1)文法。

( 正确 )。

5、对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。

( 错 )二、填空题1、从功能上说,程序语言的语句大体可分为执行性语句和说明性语句两大类。

2、扫描器的任务是从源程序中识别出一个个单词符号。

3、所谓最右推导是指:任何一步αβ都是对α中最右非终结符进行替换的。

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

5、一个上下文无关文法所含四个组成部分是一组终结符号,一组非终结符号、一个开始符号、一组产生式。

6、所谓语法制导翻译方法是为每个产生式配上一个翻译子程序,并在语法分析的同时执行这些子程序。

7、符号表中的信息栏中登记了每个名字的有关的性质,如类型、种属、所占单元大小、地址等等。

8、一个过程相应的DISPLAY表的内容为现行活动记录地址和所有外层最新活动记录的地址。

9、常用的两种动态存贮分配办法是栈式动态分配和堆式动态分配10、产生式是用于定义语法范畴的一种书写规则。

三、名词解释1.遍--指编译程序对源程序或中间代码程序从头到尾扫描一次并作有关的加工处理,生成新的中间结果或目标程序。

2.无环路有向图(DAG)--如果有向图中任一通路都不是环路,则称庐有向图为无环路有向图,简称DAG。

3.语法分析--按文法的产生式识别输入的符号串是否为一个句子的分析过程。

4.短语--令G是一个文法。

S划文法的开始符号,假定αβδ是文法G的一个句型,如果有SαAδ且AB,则称β是句型αβ相对非终结符A的短语。

5.后缀式--一种把运算量写在前面,把算符写在后面的表示表达式的方法。

四、简述题1、考虑下面程序…………Var a:integer;Procedure S(X);Var X:integer;Begina:=a+1;X:=a+XEnd;Begina:=5;S(a);Print(a)End.试问:若参数传递方式分别采取传名和传值时,程序执行后输出a的值是什么?答:传名:a=12 传值:a=62、画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

3、写出表达式(a+b*c)/(a+b)-d的逆波兰表示及三元式序列。

逆波兰表示:abc*+ab+/d-三元式序列:①(*,b,c)②(+,a,①)③(+,a,b)④(/,②,③)⑤(-,④,d)4、已知文法G(S)S→a|∧|(T)T→T,S|S写出句子((a,a),a)的规范归约过程及每一步的句柄。

句型归约规则句柄((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((S),a) T→S S((T),a) S→S(T)(T)(S,a) T→S S(T,a) S→a a(T,S) T→T,S T,S(T) S→(T)(T)S5、何谓优化?按所涉及的程序范围可分为哪几级优化?答:优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。

三种级别:局部优化、循环优化、全局优化。

6、目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?答:目标代码通常采用三种形式:机器语言,汇编语言,待装配机器语言模块。

应着重考虑的问题:(1)如何使生成的目标代码较短;(2)如何充分利用寄存器,以减少访问内存次数;(3)如何充分利用指仅系统的的特点。

五、计算题1、写一个文法,使其语言是奇数集,且每个奇数不以0开头。

解:文法G(N):N→AB|BA→AC|DB→1|3|5|7|9D→B|2|4|6|8C→0|D2、设文法G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2) 计算每个非终结符的FIRST和FOLLOW;(3) 构造预测分析表。

解:(1)S→(L)|aS’S’→S|εL→SL’L’→SL’|ε评分细则:消除左递归2分,提公共因子2分。

(2)FIRST)S)={(,a} FOLLOW(S)={#,,,)}FIRST(S’)={,a,ε}FOLLOW(S’)={#,,,)}FIRST(L)={(,a} FOLLOW(L)={ )}FIRST(L’)={,,ε}FOLLOW(L’〕={ )}3、While a>0 ∨b<0 doBeginX:=X+1;if a>0 then a:=a-1else b:=b+1End;翻译成四元式序列。

解:(1) (j>,a,0,5)(2) (j,-,-,3)(3) (j<,b,0,5)(4) (j,-,-,15)(5) (+,×,1,T1)(6) (:=,T1,-,×)(7) (j≥,a,0,9)(8) (j,-,-,12)(9) (-,a,1,T2)(10) (:=,T2,-,a)(11) (j,-,-,1)(12) (+,b,1,T3)(13) (:=,T3,-,b)(14) (j,-,-,1)(15)评分细则:控制结构4分,其它3分。

4、已知文法G(E)E→T|E+TT→F|T * FF→(E)|i(1) 给出句型(T * F+i)的最右推导及画出语法树;(2) 给出句型(T * F+i)的短语、素短语。

解:(1) 最右推导:ETF(E)(E+T)(E+F)(E+i)(T+i)(T*F+i)(2) 短语:(T*F+i),T*F+i,T*F,i素短语:T*F,i5、设布尔表达式的文法为E →E(1)∨E(2)E →E(1)∧E(2)E →i假定它们将用于条件控制语句中,请(1) 改写文法,使之适合进行语法制导翻译和实现回填;(2) 写出改写后的短个产生式的语义动作。

解:(1) E0→E(1)E→E0E(2)EA→E(1)E→EAE(2)E→i(2) E→E(1){BACKPATCH(E(1)·FC,NXQ);E0·TC:=E(1)·TC}E→E0E(2){E·FC:=E(2)·FC;E·TC:=MERG(E0·TC,E(2)·TC)}EA→E(1){BACKPATCH(E(1)·TC,NXQ);E0·FC:=E(1)·FC}E→EAE(2){E·TC:=E(2)·TC;E·FC:=MERG(EA·FC,E(2)·FC)E→i{E·TC:=NXQ;E·FC:=NXQ+1;GEN(jn2,entry(i),-0);GEN(j,-,-,0)6、设有基本块T1:=2T2:=10/TT3:=S-RT4:=S+RA:=T2 * T4B:AT5:=S+RT6:=T3 * T5B:=T6(1) 画出DAG图;(2) 假设基本块出口时只有A,B还被引用,请写出优化后的四元序列。

解:(1)DAG:(2) 优化后的四元式T3:=S-RT4:=S+RA:=5*T4B:=T3+T4模拟题一一、选择题(每个选择题 2 分,共 20 分)1 .文法 G 产生的 ( D )的全体是该文法描述的语言。

A .句型 B. 终结符集 C. 非终结符集 D. 句子2 .若文法 G 定义的语言是无限集,则文法必然是 ( A ):A .递归的B 前后文无关的C 二义性的D 无二义性的3 . Chomsky 定义的四种形式语言文法中, 0 型文法又称为 ( A )文法; 1 型文法又称为 ( C )文法; 2 型语言可由 ( G )识别。

A .短语结构文法B 前后文无关文法C 前后文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4 .一个文法所描述的语言是 ( A );描述一个语言的文法是 ( B )。

A .唯一的B 不唯一的C 可能唯一,好可能不唯一5 .数组的内情向量中肯定不含有数组的 ( A )的信息A.维数 B.类型 C.维上下界 D.各维的界差6 .在下述的编译方法中,自底向上的方法有 ( F ),自顶向下的分析方法有( A )。

①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥SLR(k)分析⑦LL(k)分析⑧LALR(K)分析A.③④⑦B. ③④⑧C.①②⑧D.③④⑤⑥⑦E.①②⑤⑥⑦F. ①②⑤⑥⑧二、简答题(每小题 5 分,共 20 分)1 . LL ( 1 )分析法对文法有哪些要求?对于 G 中的每个产生式A →γ 1 | γ 2 | … | γ m ,其各候选式均应满足:(1)不同的候选式不能推出以同一终结符号打头的符号串,即FIRST( γ i ) ∩ FIRST( γ j )= φ(1 ≤ i ,j ≤ m ;i ≠ j )(2)若有γ jε,则其余候选式γ i 所能推出的符号串不能以 FOLLOW(A) 中的终结符号开始,即有FIRST( γ i ) ∩ FOLLOW(A)= φ(i ≤ 1,2, … ,m ;i ≠ j )2 .常见的存储分配策略有几种?它们都适合于什么性质的语言?有三种分配存储空间的方式:( 1 )静态分配若在编译阶段就能确定源程序中各个数据实体的存储空间大小,则可以采用较简单的静态存储管理。

适合静态管理的语言应具备条件:数组上下界是常数、过程调用不允许递归、不允许动态建立数据实体。

( 2)栈式分配适用于允许递归调用的程序设计语言;( 3 )堆式分配对于允许程序在运行时为变量动态申请和释放存储空间的语言,采用堆式分配是最有效的解决方案。

3 .常见循环优化都有哪些项目?不变运算外提;运算强度削弱;消除归纳变量;下标变量地址计算优化4 .什么是活动记录?它主要由哪些内容构成?一个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的。

活动记录的主要内容有:( 1)临时变量域存放目标程序临时变量的值;( 2 )局部数据域存放过程本次执行时的局部数据、简单变量及数组内情向量等;( 3 )机器状态域保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;( 4 )存取链为访问其它活动记录中所存放的非局部数据所提供的链地址;( 5 )控制链指向主调过程的活动记录;( 6 )实参存放主调过程为被调用过程所提供的实参信息;( 6 )返回值为主调过程存放被调过程的返回值三、( 8 分)化简文法 G[S] :S → ASe | BCaD | aD | ACA → Cb | DBSC → bC | dB → AcD → Ad化简后:S → ASe|AC A → Cb C → bC | d四、( 12 分)设L í {a,b,c}* 是满足下述条件的符号串构成的语言:(1)若出现 a ,则其后至少紧跟两个 c ;(2)若出现 b ,其后至少紧跟一个 c 。

相关文档
最新文档