收藏 分享(赏)

《编译原理》期末考试复习题.doc

上传人:精品资料 文档编号:10847369 上传时间:2020-01-14 格式:DOC 页数:35 大小:257.71KB
下载 相关 举报
《编译原理》期末考试复习题.doc_第1页
第1页 / 共35页
《编译原理》期末考试复习题.doc_第2页
第2页 / 共35页
《编译原理》期末考试复习题.doc_第3页
第3页 / 共35页
《编译原理》期末考试复习题.doc_第4页
第4页 / 共35页
《编译原理》期末考试复习题.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

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

3、 _和_ _分析法。 自上而下 _自下而上四、简答题(20 分)1. 什么是句子? 什么是语言 ? 答:(1)设 G 是一个给定的文法,S 是文法的开始符号,如果 S x(其中 xVT*),则称 x 是文法的一个句子。(2)设 GS是给定文法,则由文法 G 所定义的语言 L(G)可描述为: L(G)xS x,xVT* 。一、是非题(请在括号内,正确的划,错误的划)(每个 2 分,共 20 分)1对于数据空间的存贮分配,FORTRAN 采用动态贮存分配策略。()2甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。()3递归下降分析法是自顶向上分析方法。()4产生式

4、是用于定义词法成分 的一种书写规则。 ()5LR 法是自顶向下语法分析方法。 ()6在 SLR ( 1 )分析法的名称中, S 的含义是简单的。()7综合属性是用于 “ 自上而下 ” 传递信息。()8符号表中的信息栏中登记了每个名字的 属性和特征等有关信息 ,如类型、种属、所占单元大小、地址等等。 ()9程序语言的语言处理程序是一种应用软件。 ()10解释程序适用于 COBOL 和 FORTRAN 语言。 ()三、填空题(每空 1 分,共 10 分)31一个句型中的最左简单短语称为该句型的_句柄_。 2对于文法的每个产生式都配备了一组属性的计算规则,称为 _语义规则_ 。3一个典型的编译程序中

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

6、右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()6逆波兰表示法表示表达式时无须使用括号。 ()7静态数组的存储空间可以在编译时确定。 ()8进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。 () 9两个正规集相等的必要条件是他们对应的正规式等价。 ()10一个语义子程序描述了一个文法所对应的翻译工作。 ()三、填空题(每空 1 分,共 10 分)1计算机执行用高级语言编写的程序主要有两种途径:_ _和_ _。4解释_编译2扫描器是_ _,它接受输入的_ _,对源程序进行_ _并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。词法分析器 源程

7、序 词法分析3自上而下分析法采用_ _、归约、错误处理、_ _等四种操作。移进_接受4一个 LR 分析器包括两部分:一个总控程序和 _ _。一张分析表5后缀式 abc-/所代表的表达式是_。 _a/(b-c)6局部优化是在_范围内进行的一种优化。_基本块_一、是非题(请在括号内,正确的划,错误的划)(每个 2 分,共 20 分)1设 r 和 s 分别是正规式,则有 L(r|s)=L(r)L(s)。()2确定的自动机以及不确定的自动机都能正确地识别正规集。()3词法分析作为单独的一遍来处理较好。 ( )4构造 LR 分析器的任务就是产生 LR 分析表。 ()5规范归约和规范推导是互逆的两个过程。

8、 ( )6同心集的合并有可能产生新的“移进”/“ 归约”冲突。 ( )7LR 分析技术无法适用二义文法。 ( )58树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。 ()9程序中的表达式语句在语义翻译时不需要回填技术。 ()10对中间代码的优化依赖于具体的计算机。 ( )三、填空题(每空 1 分,共 10 分)1词法分析基于_正则_文法进行,即识别的单词是该类文法的句子。 2语法分析基于_上下文无关_文法进行,即识别的是该类文法的句子。语法分析的有效工具是_语法树_。3分析句型时,应用算符优先分析技术时,每步被直接归约的是_最左素短语_,而应用 LR 分析技术时,每步被直接归约的是

9、_句柄_。4语义分析阶段所生成的与源程序等价的中间表示形式可以有_逆波兰_、_四无式表示_与_三元式表示_等。一、是非题(请在括号内,正确的划,错误的划)(每个 2 分,共 20 分)1一个 LL(l)文法一定是无二义的。 ( ) 7LR 法是自顶向下语法分析方法。 ( )2正规文法产生的语言都可以用上下文无关文法来描述。 ( )3一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。 ()4目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( )5逆波兰法表示的表达式亦称前缀式 。 ( )6如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。 ( )8

10、数组元素的地址计算与数组的存储方式有关。( )9算符优先关系表不一定存在对应的优先函数。 ()10对于数据空间的存贮分配, FORTRAN 采用动态贮存分配策略。 ()6三、填空题(每空 1 分,共 10 分)1语法分析是依据语言的_语法_规则进行的,中间代码产生是依据语言的_语义_规进行的。2语法分析器的输入是_单词符号串_,其输出是_语法单位_。3一个名字的属性包括_类型_和_作用域_。4产生式是用于定义_语法成分_的一种书写规则。5逆波兰式 ab+c+ d*e- 所表达的表达式为_(a+b+c)*d-e_ 。 6语法分析最常用的两类方法是_自上而下_和_自下而上_分析法。 二、填空题(每

11、空 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 ,构造它的拓广文法,引入一个产生式:SS ;则I。=Closure(S S ,)= SS,, SSa,/a, S a,/a。5在 LR(0)项目集规范族中,若有项目: ,其中 ,称该项目为移进项目。AbBTV6.LL(1)语法分析方法中应解决的主要问题是消除回溯;LR 语法分析方法

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

13、。 ( 正 )8存在能够被确定的有穷自动机 DFA 识别,却不能用正规式表示的语言。 ( 错 )1. 文法 G 的一个句子对应于多个推导,则 G 是二义性的。 ( )2. 动态的存储分配是指在运行阶段为源程序中的数据对象分配存储单元。 ( )3. 算符优先文法采用“移进规约”技术,其规约过程是规范的。 ( )4. 删除归纳变量是在强度削弱以后进行。 ( )5. 在目标代码生成阶段,符号表用于目标代码生成。 ( )一 填空题(每空 2 分,共 20 分)1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1)

14、和 (2) 。2. 规范规约是最(3)规约。3. 编译程序的工作过程一般划分为 5 个阶段:词法分析、 (4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。4表达式 x+y*z/(a+b)的后缀式为 (7) 。5文法符号的属性有综合属性和 (8) 。6假设二位数组按行存放,而且每个元素占用一个存储单元,则数组 a115,120某个元素 ai,j的地址计算公式为(9) 。7局部优化是局限于一个(10)范围内的一种优化。答案:(1) 栈式动态存储分配(2) 堆式动态存储分配(3) 左8(4) 语法分析(5) 目标代码生成(6) 表格管理(7)xyz*ab+/+(8) 继

15、承属性(9)a+(i-1)*20+j-1(10) 基本块一、填空题(每空 2 分,共 20 分)1 目标程序 (target code) 语法分析(syntax analyzer) 代码优化器(code optimizer) 代码产生器(code generator) 符号表管理(symbol table manager)2 继承属性(inherited attribute)3 局部优化(local optimization)4 四元式(quatriple)5 E + * ( ) id二、填空题(本大题共 5 小题,每小题 2 分,共 10 分)1编译程序首先要识别出源程序中每个(单词) ,然

16、后再分析每个 (句子)并翻译其意义。 2编译器常用的语法分析方法有(自底向上) 和(自顶向下)两种。3通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析) ,中间代码生成、代码优化与目标代码的生成则是对源程序的(综合) 。4程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配) 方案和(动态存储分配)方案。5对编译程序而言,输入数据是(源程序) ,输出结果是(目标程序)。三、名词解释题(共 5 小题,每小题 4 分,共 20 分)1词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别

17、出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。2LL(1)文法若文法的任何两个产生式 A | 都满足下面两个条件:(1)FIRST( ) FIRST( ) = ;(2)若 * ,那么 FIRST( ) FOLLOW( A ) = 。我们把满足这两个条件的文法叫做 LL(1)文法,其中的第一个 L 代表从左向右扫描输入,第二个 L 表示产生最左推导,1 代表在决定分析器的每步9动作时向前看一个输入符号。除了没有公共左因子外,LL(1) 文法还有一些明显的性质,它不是二义的,也不含左递归。3语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)

18、。给定文法 G=(VN,V T,P,S),对于 G 的任何句型都能构造与之关联的语法树。这棵树具有下列特征:(1)根节点的标记是开始符号 S。(2)每个节点的标记都是 V 中的一个符号。(3)若一棵子树的根节点为 A,且其所有直接子孙的标记从左向右的排列次序为 A1A2AR,那么 AA1A2AR 一定是 P 中的一条产生式。(4)若一标记为 A 的节点至少有一个除它以外的子孙,则 A VN。(5)若树的所有叶节点上的标记从左到右排列为字符串 w,则 w 是文法 G的句型;若 w 中仅含终结符号,则 w 为文法 G 所产生的句子。4LR(0)分析器所谓 LR(0)分析,是指从左至右扫描和自底向上

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

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

21、译型。汇编型编译程序用来将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,10然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序止。用解释型编译程序,执行速度很慢,但可以进行人和计算机的“对话“ ,随时可以修改高级语言的程序。BASIC 语言就是解释型高级语言。编译型编译程序将级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,在过程中,不能进行人机对话修改。FORTRAN 语言就是编译型高级语言。2编译程序的工作分为那几个阶段?词法分析、语法分析和语义分析是对源程

22、序进行的分析(称为编译程序的前端) ,而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。3简述自下而上的分析方法。所谓自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“归约”,直到根节点。4简述代码优化的目的和意义。代码优化是尽量生成“好”的代码的编译阶段。也就是要对程序代码进行一种等价变换,在保证变换前后代码执行结果相同的前提下,尽量使目标程序运行时所需要的时间短,同时所占用的存储空间少。一、是非题(请在括号内,正确的划,错误的划)(每个 2

23、 分,共 20 分)1编译程序是对高级语言程序的解释执行。( )2一个有限状态自动机中,有且仅有一个唯一的终态。()3一个算符优先文法可能不存在算符优先函数与之对应。 ( )4语法分析时必须先消除文法中的左递归 。 ()5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()6逆波兰表示法表示表达式时无须使用括号。 ( )7静态数组的存储空间可以在编译时确定。 ()8进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。 ()9两个正规集相等的必要条件是他们对应的正规式等价。 ( )10一个语义子程序描述了一个文法所对应的翻译工作。 ()11三、

24、填空题(每空 1 分,共 10 分)1计算机执行用高级语言编写的程序主要有两种途径:_解释_和_编译_。 2扫描器是_词法分析器_,它接受输入的_源程序_,对源程序进行_词法分析_并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。3自上而下分析法采用_移进_、归约、错误处理、_接受_等四种操作。4一个 LR 分析器包括两部分:一个总控程序和 _一张分析表_。5后缀式 abc-/所代表的表达式是_a/(b-c)_。 6局部优化是在_基本块_范围内进行的一种优化。一、是非题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( )2.一个句型的直接短语是唯一的。 ( )3.已

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

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

27、8. 19. 20. 21. 22.二、填空题:2.编译过程可分为 ( 词法分析) , (语法分析) , (语义分析与中间代码生成 ) , (优化)和(目标代码生成 )五个阶段。3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的 ) 。 4.从功能上说,程序语言的语句大体可分为( 执行性 )语句和(说明性 )语句两大类。5.语法分析器的输入是( 单词符号 ) ,其输出是( 语法单位 ) 。6.扫描器的任务是从( 源程序中 )中识别出一个个( 单词符号 ) 。7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。8.一个过程相应的

28、DISPLAY 表的内容为(现行活动记录地址和所有外层最新活动记录的地址)10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。11.一个名字的属性包括( 类型)和(作用域 )。12.常用的参数传递方式有(传地址) , (传值) , (传名)13.根据优化所涉及的程序范围,可将优化分成为(局部优化) , (循环优化) , (全局优化)三个级别。14.语法分析的方法大致可分为两类,一类是( 自上而下 )分析法,另一类是( 自下而上 )分析法。15.预测分析程序是使用一张( 分析表 )和一个( 符号栈 )进行联合控制的。17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;

29、而且实际上至少要有一个(终 )态。19.语法分析是依据语言的(语法 )规则进行。中间代码产生是依据语言的(语义)规则进行的。21.一个文法 G,若它的预测分析表 M 不含多重定义,则该文法是(LL(1) 文法)文法。22.对于数据空间的存贮分配, FORTRAN 采用( 静态策略, PASCAL 采用( 动态)策略。24.最右推导亦称为(规范推导) ,由此得到的句型称为(规范)句型。26.对于文法 G,仅含终结符号的句型称为 ( 句子 )。27.所谓自上而下分析法是指(从开始符号出发,向下推导,推出句子)29.局限于基本块范围的优化称( 局部优化 ) 。31.2 型文法又称为(上下文无关)文法

30、;3 型文法又称为(正则 )文法。32.每条指令的执行代价定义为(指令访问主存次数加 1)33.算符优先分析法每次都是对(最左素短语)进行归约。三、名词解释题:1.局部优化-局限于基本块范围的优化称。2.二义性文法-如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。3.DISPLAY 表-过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地址。5.最左推导-任何一步 = 都是对 中的最右非终结符替换。6.语法-一组规则,用它可形成和产生一组合式的程序。7.文法-描述语言的语法结构的形式规则。8.基本块-指程序中一顺序执行的语句序列,其中只有一个入口和一个出口

31、,入口就是其中的第一个语句,出口就是其中的最后一个语句。9.语法制导翻译-在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。10.短语-令 G 是一个文法,S 划文法的开始符号,假定 是文法 G 的一个句型,如果有 SA 且 A ,则称 是句型 相对非终结符 A 的短语。11.待用信息-如果在一个基本块中,四元式 i 对 A 定值,四元式 j 要引用 A 值,而从 i 到 j 之间没有 A 的其它定值,则称 j 是四元式 i 的变量 A 的待用信息。1312.规范句型-由规范推导所得到的句型。13.扫描器-执行词法分析的程序。14.超前搜索-在词法分析过程中,有

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

33、首先要识别出源程序中每个(单词) ,然后再分析每个 (句子)并翻译其意义。 2编译器常用的语法分析方法有(自底向上) 和(自顶向下)两种。3通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析) ,中间代码生成、代码优化与目标代码的生成则是对源程序的(综合) 。4程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配) 方案和(动态存储分配)方案。5对编译程序而言,输入数据是(源程序) ,输出结果是(目标程序)。三、名词解释题(共 5 小题,每小题 4 分,共 20 分)1词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,

34、按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。2LL(1)文法若文法的任何两个产生式 A | 都满足下面两个条件:(1)FIRST( ) FIRST( ) = ;(2)若 * ,那么 FIRST( ) FOLLOW( A ) = 。我们把满足这两个条件的文法叫做 LL(1)文法,其中的第一个 L 代表从左向右扫描输入,第二个 L 表示产生最左推导,1 代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1) 文法还有一些明显的性质,它不是二义的,也不含左递归。3语法树句子的树结构表示法称

35、为语法树(语法分析树或语法推导树) 。给定文法 G=(VN,V T,P,S),对于 G 的任何句型都能构造与之关联的语法树。这棵树具有下列特征:(1)根节点的标记是开始符号 S。(2)每个节点的标记都是 V 中的一个符号。(3)若一棵子树的根节点为 A,且其所有直接子孙的标记从左向右的排列次序为 A1A2AR,那么 AA1A2AR 一定是 P 中的一条产生式。14(4)若一标记为 A 的节点至少有一个除它以外的子孙,则 A VN。(5)若树的所有叶节点上的标记从左到右排列为字符串 w,则 w 是文法 G的句型;若 w 中仅含终结符号,则 w 为文法 G 所产生的句子。4LR(0)分析器所谓 L

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

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

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

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

40、和 G2,若有 L(G1)=L(G2) (或 G1 和 G2 的语言相同) ,则称文法 G1 和 G2 是等价的。4对于文法 GE:ET|E+T TF|T*F FPF|P P(E)|i,句型 T+T*F+i 的句柄是 T ,最左素短语是 T*F。 5最右推导的逆过程称为规范归约 ,也称为 最左归约。6规范规约中的可规约串是句柄 ,算符优先分析中的可规约串是 最左素短语7 ( A B)(C D E) 的逆波兰式是 。8在属性文法中文法符号的两种属性分别称为继承属性 和综合属性(次序可换) 。9符号表的每一项是由名字栏和 地址分配 两个栏目组成。在目标代码生成阶段,符号表是 地址分配 的依据。 1

41、0一个过程的 DISPLAY 表的内容是它的 直接外层 的 DISPLAY 表的内容加上本过程的SP 的地址1什么是 S-属性文法?什么是 L-属性文法?它们之间有什么关系?解答:S-属性文法是只含有综合属性的属性文法。 (2 分)L-属性文法要求对于每个产生式AX1X2Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:(1) 产生式Xj的左边符号X1,X2Xj-1的属性;(2) A的继承属性。 ( 2分)S-属性文法是 L-属性文法的特例。 (2 分)2什么是句柄?什么是素短语?一个句型的最左直接短语称为该句型的句柄。 (3 分)素短语是这样的一个短

42、语,它至少包含一个终结符并且不包含更小的素短语。 (3 分)3划分程序的基本块时,确定基本块的入口语句的条件是什么?解答:(1)程序第一个语句,或(2)能由条件转移语句或无条件转移语句转移到的语句,或16(3)紧跟在条件转移语句后面的语句。4(6 分 )运行时的 DISPLAY 表的内容是什么?它的作用是什么?答:DISPLAY 表是嵌套层次显示表 。每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表 diaplay.假定现在进入的过程层次为 i,则它的 diaplay 表含有 i+1 个单元,自顶向下每个单元依次存放着现行层、直接外层、直至最外层( 主程序,0 层)等每层过

43、程的最新活动记录的起始地址。 通过 DISPLAY 表可以访问其外层过程的变量。二、判断1计算机高级语言翻译成低级语言只有解释一种方式。() 2在编译中进行语法检查的目的是为了发现程序中所有错误。()3甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系 统功能完全相同。 ( )4正则文法其产生式为 A-a , A-Bb, A,BVN , a 、 bVT 。 ()5每个文法都能改写为 LL(1) 文法。 () 6递归下降法不允许任一非终极符是直接左递归的。 () 7算符优先关系表不一定存在对应的优先函数。 () 8自底而上语法分析方法的主要问题是候选式的选择。 ()9LR 法是自

44、顶向下语法分析方法。 ()10简单优先文法允许任意两个产生式具有相同右部。 () 11“ 用高级语言书写的源程序都必须通过编译, 产生目标代码后才能投入运行 ”这种说法。( )12若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。( )13一个句型的句柄一定是文法某产生式的右部。 ( )14在程序中标识符的出现仅为使用性的。 ( )15仅考虑一个基本块,不能确定一个赋值是否真是无用的。 ( )16削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。 ( )17在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。 ( )18数组元素的地址计算与数组的存储方式有关。

45、( )19编译程序与具体的机器有关,与具体的语言无关。 ( ) 20递归下降分析法是自顶向上分析方法。( )21产生式是用于定义词法成分 的一种书写规则。 ( )22LR 法是自顶向下语法分析方法。 ()23在 SLR ( 1 )分析法的名称中,S 的含义是简单的。( ) 24综合属性是用于 “ 自上而下 ” 传递信息。( )25符号表中的信息栏中登记了每个名字的 属性和特征等有关信息 ,如类型、种属、所占 单元大小、地址等等。 ( )26程序语言的语言处理程序是一种应用软件。 ( ) 27一个 LL(l)文法一定是无二义的。 ( ) 28正规文法产生的语言都可以用上下文无关文法来描述。 ( )29一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。 ( ) 30目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( )31逆波兰法表示的表达式亦称后缀式 。 ( )32如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。 ( )1733数组元素的地址计算与数组的存储方式有关。( )34对

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报