2022年《编译原理》期末考试复习题 .pdf

上传人:Che****ry 文档编号:35295523 上传时间:2022-08-21 格式:PDF 页数:34 大小:431.59KB
返回 下载 相关 举报
2022年《编译原理》期末考试复习题 .pdf_第1页
第1页 / 共34页
2022年《编译原理》期末考试复习题 .pdf_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《2022年《编译原理》期末考试复习题 .pdf》由会员分享,可在线阅读,更多相关《2022年《编译原理》期末考试复习题 .pdf(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1 编译原理期末考试复习题一、是非题(请在括号内,正确的划,错误的划)(每个2 分,共 20 分)1计算机高级语言翻译成低级语言只有解释一种方式。() 2在编译中进行语法检查的目的是为了发现程序中所有错误。() 3 甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 () 4正则文法其产生式为 A-a , A-Bb, A,BVN , a 、 bVT 。 () 5每个文法都能改写为 LL(1) 文法。 () 6递归下降法允许任一非终极符是直接左递归的。 () 7算符优先关系表不一定存在对应的优先函数。 () 8自底而上语法分析方法的主要问题是候选式的选择。 ()

2、9LR 法是自顶向下语法分析方法。 () 10简单优先文法允许任意两个产生式具有相同右部。 () 三、填空题 ( 每空 1 分,共 10 分) 1 编译程序的工作过程一般可以划分为词法分析, 语法分析 , 语义分析 , 中间代码生成 , 代码优化等几个基本阶段 , 同时还会伴有 _ _和 _ _ _ 。表格管理出错处理_2若源程序是用高级语言编写的,_ _ 是机器语言程序或汇编程序, 则其翻译程序称为 _ _ 。_目标程序_编译程序3编译方式与解释方式的根本区别在于_ _。是否生成目标代码 _ 4对编译程序而言 , 输入数据是 _ _, 输出结果是 _ _。_源程序目标程序名师资料总结 - -

3、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 34 页 - - - - - - - - - 2 5产生式是用于定义 _ _ 的一种书写规则。_语法成分6语法分析最常用的两类方法是_ _ 和_ _分析法。自上而下_自下而上四、简答题( 20 分)1. 什么是句子?什么是语言 ? 答: (1)设 G 是一个给定的文法,S 是文法的开始符号,如果S x(其中 xVT*), 则称 x 是文法的一个句子。(2)设 GS是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G) x S x,x V

4、T* 。一、是非题(请在括号内,正确的划 ,错误的划 )(每个 2 分,共 20 分) 1对于数据空间的存贮分配,FORTRAN 采用动态贮存分配策略。() 2甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。() 3递归下降分析法是自顶向上分析方法。() 4产生式是用于定义词法成分的一种书写规则。() 5LR 法是自顶向下语法分析方法。() 6在SLR ( 1 )分析法的名称中,S 的含义是简单的。() 7综合属性是用于“ 自上而下” 传递信息。 () 8符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。() 9程序

5、语言的语言处理程序是一种应用软件。() 10解释程序适用于COBOL 和 FORTRAN 语言。() 三、填空题 (每空 1 分,共 10 分 ) 1一个句型中的最左简单短语称为该句型的_句柄 _。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 34 页 - - - - - - - - - 3 2对于文法的每个产生式都配备了一组属性的计算规则,称为_语义规则 _ 。3一个典型的编译程序中,不仅包括_词法分析 _、_语法分析 _、_中间代码生成 _、代码优化、目标代码生成等

6、五个部分,还应包括表格处理和出错处理。4 从功能上说,程序语言的语句大体可分为_执行性 _语句和 _说明性 _语句两大类。5 扫描器的任务是从_源程序 _中识别出一个个_单词符号 _。6 产生式是用于定义_语法范畴 _的一种书写规则。一、是非题(请在括号内,正确的划 ,错误的划 )(每个 2 分,共 20 分) 1编译程序是对高级语言程序的解释执行。() 2一个有限状态自动机中,有且仅有一个唯一的终态。() 3一个算符优先文法可能不存在算符优先函数与之对应。() 4语法分析时必须先消除文法中的左递归。 () 5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。() 6逆

7、波兰表示法表示表达式时无须使用括号。() 7静态数组的存储空间可以在编译时确定。() 8进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。() 9两个正规集相等的必要条件是他们对应的正规式等价。() 10一个语义子程序描述了一个文法所对应的翻译工作。() 三、填空题 (每空 1 分,共 10 分 ) 1计算机执行用高级语言编写的程序主要有两种途径:_ _和_ _。解释 _编译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 34 页 - - - -

8、 - - - - - 4 2扫描器是 _ _,它接受输入的_ _,对源程序进行_ _并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。词法分析器源程序词法分析3自上而下分析法采用_ _、归约、错误处理、_ _等四种操作。移进 _接受4一个 LR 分析器包括两部分:一个总控程序和_ _。一张分析表5后缀式abc-/所代表的表达式是_。_a/(b-c)6局部优化是在_范围内进行的一种优化。_基本块 _ 一、是非题(请在括号内,正确的划 ,错误的划 )(每个 2 分,共 20 分)1设 r 和 s 分别是正规式,则有L(r|s)=L(r)L(s) 。( ) 2确定的自动机以及不确定的自

9、动机都能正确地识别正规集。( )3词法分析作为单独的一遍来处理较好。( ) 4构造 LR 分析器的任务就是产生LR 分析表。( )5规范归约和规范推导是互逆的两个过程。( ) 6同心集的合并有可能产生新的“ 移进 ” / “归约 ” 冲突。( ) 7LR 分析技术无法适用二义文法。( ) 8树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。( ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 34 页 - - - - - - - - - 5 9程序中的表达式语

10、句在语义翻译时不需要回填技术。( )10对中间代码的优化依赖于具体的计算机。( ) 三、填空题 (每空 1 分,共 10 分 ) 1词法分析基于_正则 _文法进行,即识别的单词是该类文法的句子。2语法分析基于_上下文无关 _文法进行,即识别的是该类文法的句子。语法分析的有效工具是_语法树_。3分析句型时,应用算符优先分析技术时,每步被直接归约的是_最左素短语 _,而应用 LR 分析技术时,每步被直接归约的是_句柄 _。4语义分析阶段所生成的与源程序等价的中间表示形式可以有_逆波兰 _、_四无式表示 _与_三元式表示 _等。一、是非题(请在括号内,正确的划,错误的划)(每个2 分,共 20 分)

11、1一个LL(l) 文法一定是无二义的。( ) 7LR 法是自顶向下语法分析方法。( ) 2正规文法产生的语言都可以用上下文无关文法来描述。( ) 3一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。( )4目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。( ) 5逆波兰法表示的表达式亦称前缀式。 ( )6如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。( )8数组元素的地址计算与数组的存储方式有关。( ) 9算符优先关系表不一定存在对应的优先函数。( ) 10对于数据空间的存贮分配,FORTRAN 采用动态贮存分配策略。( ) 三、填空题 (每空

12、 1 分,共 10 分 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 34 页 - - - - - - - - - 6 1语法分析是依据语言的_语法 _规则进行的,中间代码产生是依据语言的_语义 _规进行的。2语法分析器的输入是_单词符号串 _,其输出是 _语法单位 _。3一个名字的属性包括_类型 _和_作用域 _。4产生式是用于定义_语法成分 _的一种书写规则。5逆波兰式ab+c+ d*e- 所表达的表达式为_(a+b+c)*d-e _ 。6语法分析最常用的两类方

13、法是_自上而下 _和_自下而上 _分析法。二、填空题(每空2 分,共 22 分)1已知文法GS:S(A)|a ,AAcS|S|b ;该文法的开始符号是S,非终结符号集合为S,A,终结符号集合为 a,b,c,(,)。2描述源程序中的单词结构有3 种方法:有穷自动机,正规式和正规文法。3自上而下的语法分析方法有LL(1) 和递归下降方法。4 设有文法 GS: SSa|a , 构造它的拓广文法, 引入一个产生式: S S ; 则 I 。 =Closure( S S, )= S S, , SSa,/a, Sa,/a 。5在 LR(0)项目集规范族中,若有项目:AA bB,其中TbV,称该项目为移进项目

14、。6. LL(1) 语法分析方法中应解决的主要问题是消除回溯;LR 语法分析方法中应解决的主要问题是项目冲突。三、判断题(判断下列各题的正错,若正确,在括号中写“正”;否则写“错”。每题 2 分,共16分)1一个文法有二义性,则由它描述的语言一定具有二义性。(错 )2若一个语言有无穷多个句子,则定义该语言的文法一定是递归的。(正 )3若有正规式a*b,则与之等价的文法应该是GA:AaA|b 。 (正)4设有文法 GA:AaB ,BbB|b,则该文法是 LL(1) 文法。 (错)5由文法法 G 的开始符号 S 推导出来的符号串,称为文法G 的句子。 (错)6最左素短语是句型最左边的短语。 (错

15、)7LR 语法分析法是一种规范规约的分析方法。(正 )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 34 页 - - - - - - - - - 7 8存在能够被确定的有穷自动机DFA 识别,却不能用正规式表示的语言。 (错)1. 文法 G 的一个句子对应于多个推导,则G 是二义性的。()2. 动态的存储分配是指在运行阶段为源程序中的数据对象分配存储单元。( )3. 算符优先文法采用“移进规约”技术,其规约过程是规范的。()4. 删除归纳变量是在强度削弱以后进行。 (

16、)5. 在目标代码生成阶段,符号表用于目标代码生成。()一填空题 (每空 2 分,共 20 分)1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。2. 规范规约是最(3)规约。3. 编译程序的工作过程一般划分为5 个阶段:词法分析、 (4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有( 6)和出错处理。4表达式 x+y*z/(a+b)的后缀式为(7) 。5文法符号的属性有综合属性和(8) 。6假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a1.15,1.20某个元

17、素ai ,j的地址计算公式为(9) 。7局部优化是局限于一个(10)范围内的一种优化。答案:(1) 栈式动态存储分配(2) 堆式动态存储分配(3) 左(4) 语法分析(5) 目标代码生成(6) 表格管理(7) xyz*ab+/+ (8) 继承属性名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 34 页 - - - - - - - - - 8 (9) a+(i-1)*20+j-1 (10)基本块一、填空题(每空2分,共 20分)1 目标程序(target code)语法分析

18、( syntax analyzer)代码优化器( code optimizer )代码产生器( code generator )符号表管理( symbol table manager )2 继承属性( inherited attribute)3 局部优化( local optimization)4 四元式( quatriple)5 E + * ( ) id 二、填空题(本大题共5 小题,每小题 2 分,共 10 分)1编译程序首先要识别出源程序中每个(单词 ),然后再分析每个(句子 )并翻译其意义。2编译器常用的语法分析方法有(自底向上 )和(自顶向下 )两种。3通常把编译过程分为分析前端与综

19、合后端两大阶段。词法、语法和语义分析是对源程序的(分析 ),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合 )。4程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配 )方案和(动态存储分配 )方案。5对编译程序而言,输入数据是(源程序 ),输出结果是 (目标程序 )。三、名词解释题 (共 5 小题,每小题 4 分,共 20 分) 1词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。2LL(1) 文法若文法的任何

20、两个产生式A | 都满足下面两个条件:(1) FIRST() FIRST( ) = ;(2)若* ,那么 FIRST() FOLLOW( A ) = 。我们把满足这两个条件的文法叫做LL(1) 文法 ,其中的第一个L 代表从左向右扫描输入,第二个L 表示产生最左推导,1 代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1) 文法还有一些明显的性质,它不是二义的,也不含左递归。3语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。给定文法 G=(VN,VT,P,S),对于 G 的任何句型都能构造与之关联的名师资料总结 - - -精品资料欢迎下载 - - -

21、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 34 页 - - - - - - - - - 9 语法树。这棵树具有下列特征:(1)根节点的标记是开始符号S。(2)每个节点的标记都是V 中的一个符号。(3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列次序为 A1A2AR,那么 AA1A2AR一定是 P 中的一条产生式。(4)若一标记为A 的节点至少有一个除它以外的子孙,则AVN。(5)若树的所有叶节点上的标记从左到右排列为字符串w,则 w 是文法 G 的句型;若w 中仅含终结符号,则w 为文法 G 所产生的句

22、子。4LR(0) 分析器所谓 LR(0) 分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作(是移进还是按某一产生式进行归约等)。5语言和文法文法就是语言结构的定义和描述,是有穷非空的产生式集合。文法 G 定义为四元组的形式: G=(VN,VT, P,S) 其中: VN是非空有穷集合,称为非终结符号集合;VT是非空有穷集合,称为终结符号集合;P 是产生式的集合(非空 );S 是开始符号 (或识别符号 )。

23、这里, VNVT=,SVN。V=VN VT,称为文法G 的字母表,它是出现文法产生式中的一切符号的集合。文法 G 所描述的语言用L(G) 表示,它由文法G 所产生的全部句子组成,即L(G)=x| S*x,其中 S为文法开始符号,且TVx 简单的说,文法描述的语言是该文法一切句子的集合。四、简答题 (共 4 小题,每小题 5 分,共 20分) 1编译程序和高级语言有什么区别? 用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器语言表示的目标程序(这个过程即编译),才能由计算机执行。执行转换过程的程序叫编译程序。汇编程序是指没有编译过的汇编语言源文件。编译程序转换过的叫目标程序,也

24、就是机器语言。编译程序的工作情况有三种:汇编型、解释型和编译型。汇编型编译程序用来将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序止。用解释型编译程序,执行速度很慢,但可以进行人和计算机的对话 ,随时可以修改高级语言的程序。BASIC 语言就是解释型高级语言。编译型编译程序将级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,在过程中,不能进行人机对话修改。FORTRAN语言就是编译型高级语言。名师资料总结 - -

25、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 34 页 - - - - - - - - - 10 2编译程序的工作分为那几个阶段? 词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。3简述自下而上的分析方法。所谓自下而上分析法就是从输入串开始,逐步进行“ 归约” ,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“ 归

26、约 ” ,直到根节点。4简述代码优化的目的和意义。代码优化是尽量生成“ 好” 的代码的编译阶段。也就是要对程序代码进行一种等价变换,在保证变换前后代码执行结果相同的前提下,尽量使目标程序运行时所需要的时间短,同时所占用的存储空间少。一、是非题(请在括号内,正确的划 ,错误的划 )(每个 2 分,共 20 分)1编译程序是对高级语言程序的解释执行。( ) 2一个有限状态自动机中,有且仅有一个唯一的终态。( ) 3一个算符优先文法可能不存在算符优先函数与之对应。( )4语法分析时必须先消除文法中的左递归。 ( ) 5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。( )6

27、逆波兰表示法表示表达式时无须使用括号。( )7静态数组的存储空间可以在编译时确定。( ) 8进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。( ) 9两个正规集相等的必要条件是他们对应的正规式等价。( ) 10一个语义子程序描述了一个文法所对应的翻译工作。( ) 三、填空题 (每空 1 分,共 10 分 ) 1计算机执行用高级语言编写的程序主要有两种途径:_解释 _和_编译 _。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 34 页 - -

28、 - - - - - - - 11 2扫描器是 _词法分析器 _,它接受输入的_源程序 _,对源程序进行_词法分析 _并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。3自上而下分析法采用_移进 _、归约、错误处理、_接受 _等四种操作。4一个 LR 分析器包括两部分:一个总控程序和_一张分析表 _。5后缀式abc-/所代表的表达式是_a/(b-c)_。6局部优化是在_基本块 _范围内进行的一种优化。一、是非题:1. 一个上下文无关文法的开始符,可以是终结符或非终结符。 ( ) 2. 一个句型的直接短语是唯一的。()3. 已经证明文法的二义性是可判定的。()4. 每个基本块可用一

29、个DAG 表示。()5. 每个过程的活动记录的体积在编译时可静态确定。()6.2 型文法一定是3 型文法。()7. 一个句型一定句子。 ( ) 8. 算符优先分析法每次都是对句柄进行归约。 X ( ) 9. 采用三元式实现三地址代码时,不利于对中间代码进行优化。()10. 编译过程中,语法分析器的任务是分析单词是怎样构成的。 ( ) 11. 一个优先表一定存在相应的优先函数。 X ( ) 12. 目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 13. 递归下降分析法是一种自下而上分析法。 ( ) 14. 并不是每个文法都能改写成LL(1) 文法。 ( ) 15. 每个基本块只

30、有一个入口和一个出口。 ( ) 16. 一个 LL(1) 文法一定是无二义的。 ( ) 17. 逆波兰法表示的表达试亦称前缀式。 ( ) 18. 目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 19. 正规文法产生的语言都可以用上下文无关文法来描述。 ( ) 20. 一个优先表一定存在相应的优先函数。 ( ) 21.3 型文法一定是2 型文法。 ( ) 22. 如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。 ( ) 答案: 1. 2. 3. 4. 5. 6. 7. 8. 9.10. 11. 12. 13. 14. 15. 16. 17. 18.19. 20.

31、21. 22. 二、填空题:2. 编译过程可分为( 词法分析), (语法分析) , (语义分析与中间代码生成) , (优化)和(目标代码生成)五个阶段。3. 如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的) 。4. 从功能上说, 程序语言的语句大体可分为(执行性)语句和 (说明性)语句两大类。5. 语法分析器的输入是(单词符号) ,其输出是(语法单位) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 34 页 - - - - - - - - -

32、 12 6. 扫描器的任务是从(源程序中)中识别出一个个(单词符号) 。7. 符号表中的信息栏中登记了每个名字的有关的性质,如( 类型、种属、所占单元大小、地址)等等。8. 一个过程相应的DISPLAY表的内容为 ( 现行活动记录地址和所有外层最新活动记录的地址) 10. 常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。11. 一个名字的属性包括( 类型 ) 和( 作用域 )。12. 常用的参数传递方式有( 传地址), (传值), (传名)13. 根据优化所涉及的程序范围,可将优化分成为( 局部优化), (循环优化) , (全局优化)三个级别。14. 语法分析的方法大致可分为两

33、类,一类是 ( 自上而下)分析法, 另一类是 ( 自下而上)分析法。15. 预测分析程序是使用一张(分析表)和一个(符号栈)进行联合控制的。17. 一张转换图只包含有限个状态, 其中有一个被认为是(初)态; 而且实际上至少要有一个(终)态。19. 语法分析是依据语言的(语法)规则进行。中间代码产生是依据语言的(语义)规则进行的。21. 一个文法G,若它的预测分析表M不含多重定义,则该文法是(LL(1) 文法)文法。22. 对于数据空间的存贮分配, FORTRAN 采用 ( 静态策略, PASCAL采用 ( 动态 )策略。24. 最右推导亦称为(规范推导),由此得到的句型称为(规范)句型。26.

34、 对于文法G,仅含终结符号的句型称为 ( 句子 ) 。27. 所谓自上而下分析法是指( 从开始符号出发,向下推导,推出句子)29. 局限于基本块范围的优化称(局部优化)。31.2 型文法又称为(上下文无关)文法;3 型文法又称为(正则)文法。32. 每条指令的执行代价定义为( 指令访问主存次数加1)33. 算符优先分析法每次都是对( 最左素短语)进行归约。三、名词解释题:1. 局部优化 -局限于基本块范围的优化称。2. 二义性文法 -如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。3.DISPLAY 表-过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地

35、址。5. 最左推导 -任何一步 = 都是对 中的最右非终结符替换。6. 语法 -一组规则,用它可形成和产生一组合式的程序。7. 文法 -描述语言的语法结构的形式规则。8. 基本块 -指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。9. 语法制导翻译-在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。10. 短语 -令 G是一个文法, S划文法的开始符号,假定 是文法 G的一个句型,如果有S A 且 A,则称 是句型 相对非终结符A的短语。11. 待用信息 -如果在一个基本块中,四元式i 对 A定值,

36、四元式j 要引用 A值,而从 i 到 j 之间没有 A的其它定值,则称j 是四元式 i 的变量 A的待用信息。12. 规范句型 -由规范推导所得到的句型。13. 扫描器 -执行词法分析的程序。14. 超前搜索 -在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。15. 句柄 -一个句型的最左直接短语。16. 语法制导翻译 -在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的方法叫做语法制导翻译。17. 规范句型 -由规范推导所得到的句型。18. 素短语 -素短语是指这样一个短语,至少含有一个终结符,并且,除它自身外不再含任何更小的素短语。19. 语法 -是组规则,用它可形成和产

37、生一个合式的程序。20. 待用信息 -如果在一个基本块中,四元式i 对 A定值,四元式j 要引用 A值,而从 i 到 j 之间没有 A的其它定值,则称j 是四元式 i 的变量 A的待用信息。21. 语义 -定义程序的意义的一组规则。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 34 页 - - - - - - - - - 13 1编译程序首先要识别出源程序中每个(单词 ),然后再分析每个(句子 )并翻译其意义。2编译器常用的语法分析方法有(自底向上 )和(自顶向下 )

38、两种。3通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析 ),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合 )。4程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配 )方案和(动态存储分配 )方案。5对编译程序而言,输入数据是(源程序 ),输出结果是 (目标程序 )。三、名词解释题 (共 5 小题,每小题 4 分,共 20 分) 1词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分

39、析程序。2LL(1) 文法若文法的任何两个产生式A | 都满足下面两个条件:(1) FIRST() FIRST( ) = ;(2)若* ,那么 FIRST() FOLLOW( A ) = 。我们把满足这两个条件的文法叫做LL(1) 文法 ,其中的第一个L 代表从左向右扫描输入,第二个L 表示产生最左推导,1 代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1) 文法还有一些明显的性质,它不是二义的,也不含左递归。3语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。给定文法 G=(VN,VT,P,S),对于 G 的任何句型都能构造与之关联的语法树。这棵树具

40、有下列特征:(1)根节点的标记是开始符号S。(2)每个节点的标记都是V 中的一个符号。(3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列次序为 A1A2AR,那么 AA1A2AR一定是 P 中的一条产生式。(4)若一标记为A 的节点至少有一个除它以外的子孙,则AVN。(5)若树的所有叶节点上的标记从左到右排列为字符串w,则 w 是文法 G 的句型;若w 中仅含终结符号,则w 为文法 G 所产生的句子。4LR(0) 分析器所谓 LR(0) 分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再向前查看0个输入符号,就

41、能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作(是移进还是按某一产生式进行归约等)。5语言和文法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 34 页 - - - - - - - - - 14 文法就是语言结构的定义和描述,是有穷非空的产生式集合。文法 G 定义为四元组的形式:G=(VN, VT,P,S) 其中: VN是非空有穷集合,称为非终结符号集合;VT是非空有穷集合,称为终结符号集合;P 是产生式的集合(非空

42、 );S 是开始符号 (或识别符号 )。这里, VNVT=,SVN。 V=VN VT,称为文法G 的字母表,它是出现文法产生式中的一切符号的集合。文法 G 所描述的语言用L(G) 表示,它由文法G 所产生的全部句子组成,即L(G)=x| S*x,其中 S为文法开始符号,且TVx 简单的说,文法描述的语言是该文法一切句子的集合。四、简答题 (共 4 小题,每小题 5 分,共 20分) 1编译程序和高级语言有什么区别? 用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器语言表示的目标程序(这个过程即编译),才能由计算机执行。执行转换过程的程序叫编译程序。汇编程序是指没有编译过的汇编

43、语言源文件。编译程序转换过的叫目标程序,也就是机器语言。编译程序的工作情况有三种:汇编型、解释型和编译型。汇编型编译程序用来将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序止。用解释型编译程序,执行速度很慢,但可以进行人和计算机的对话 ,随时可以修改高级语言的程序。BASIC 语言就是解释型高级语言。编译型编译程序将级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,在过程中,不能进行人机对话修改。FORTRAN语

44、言就是编译型高级语言。2编译程序的工作分为那几个阶段? 词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。3简述自下而上的分析方法。所谓自下而上分析法就是从输入串开始,逐步进行“ 归约 ” ,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“ 归约 ” ,直到根节点。4简述代码优化的目的和意义。代码优化是尽量生成“ 好” 的代码的编译阶段。也就是要对程序代码进行一种等价变换,在保证变换前后代码执行结果相同的前提下,尽量使目

45、标程序运行时所需要的时间短,同时所占用的存储空间少。3对于文法 G1 和 G2,若有L(G1)=L(G2) (或G1 和 G2 的语言相同),则称文法 G1 和 G2 是等价的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 34 页 - - - - - - - - - 15 4 对于文法 GE : ET|E+T T F|T*F F P F|P P (E)|i, 句型 T+T*F+i的句柄是T ,最左素短语是T*F。5最右推导的逆过程称为规范归约,也称为最左归约。6规范

46、规约中的可规约串是句柄,算符优先分析中的可规约串是最左素短语7(A B ) (C ?D E ) 的逆波兰式是 ?。8在属性文法中文法符号的两种属性分别称为继承属性和综合属性(次序可换)。9符号表的每一项是由名字栏和地址分配两个栏目组成。在目标代码生成阶段,符号表是地址分配的依据。10 一个过程的 DISPLAY 表的内容是它的直接外层的 DISPLAY 表的内容加上本过程的 SP的地址1什么是 S-属性文法?什么是L-属性文法?它们之间有什么关系?解答:S-属性文法是只含有综合属性的属性文法。(2 分)L-属性文法要求对于每个产生式AX1X2Xn,其每个语义规则中的每个属性或者是综合属性,或者

47、是 Xj的一个继承属性,且该属性仅依赖于:(1) 产生式 Xj的左边符号 X1,X2Xj-1的属性;(2) A的继承属性。(2分)S-属性文法是 L-属性文法的特例。(2 分)2什么是句柄?什么是素短语?一个句型的最左直接短语称为该句型的句柄。(3 分)素短语是这样的一个短语,它至少包含一个终结符并且不包含更小的素短语。 (3 分)3划分程序的基本块时,确定基本块的入口语句的条件是什么?解答:(1)程序第一个语句,或(2)能由条件转移语句或无条件转移语句转移到的语句,或(3)紧跟在条件转移语句后面的语句。4(6 分)运行时的 DISPLAY 表的内容是什么?它的作用是什么?答:DISPLAY

48、表是嵌套层次显示表。 每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i ,则它的 diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、 、直至最外层 ( 主程序, 0层) 等每层过程的最新活动记录的起始地址。通过DISPLAY 表可以访问其外层过程的变量。二、判断1计算机高级语言翻译成低级语言只有解释一种方式。() 2在编译中进行语法检查的目的是为了发现程序中所有错误。()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

49、- - - - - 第 15 页,共 34 页 - - - - - - - - - 16 3甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 ( )4正则文法其产生式为 A-a , A-Bb, A,B VN , a 、 b VT 。 ()5每个文法都能改写为 LL(1) 文法。 () 6递归下降法不允许任一非终极符是直接左递归的。() 7算符优先关系表不一定存在对应的优先函数。() 8自底而上语法分析方法的主要问题是候选式的选择。()9LR 法是自顶向下语法分析方法。()10简单优先文法允许任意两个产生式具有相同右部。() 11“ 用高级语言书写的源程序都必须

50、通过编译, 产生目标代码后才能投入运行”这种说法。 ( )12若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。( )13一个句型的句柄一定是文法某产生式的右部。( )14在程序中标识符的出现仅为使用性的。( )15仅考虑一个基本块,不能确定一个赋值是否真是无用的。( )16削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。( )17在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。( )18数组元素的地址计算与数组的存储方式有关。( )19编译程序与具体的机器有关, 与具体的语言无关。( )20递归下降分析法是自顶向上分析方法。( )21产生式是用于定义词法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com