编译原理2011复习

合集下载

编译原理复习题

编译原理复习题

编译原理复习题一、填空题1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码优化,代码优化等几个基本阶段。

2.若源程序是用高级语言编写的,目标程序是汇编程序或机器语言程序,则其翻译程序称为编译程序.3.编译方式与解释方式的根本区别在于是否生成目标代码.5.对编译程序而言,输入数据是源程序,输出结果是目标程序 .7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格管理和出错处理。

其中,词法分析器用于识别单词。

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

12.产生式是用于定义语法成分的一种书写规则。

13.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x|Sx,x∈VT*}。

14.设G是一个给定的文法,S是文法的开始符号,如果S*⇒x(其中x∈V*),则称x是文法的一个句型。

15.设G是一个给定的文法,S是文法的开始符号,如果S*⇒x(其中x∈V T*),则称x是文法的一个句子。

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

17.语法分析最常用的两类方法是自顶向下和自底向上分析法。

18.语法分析的任务是识别给定的终结符串是否为给定文法的句子。

19.递归下降法不允许任一非终结符是直接左递归的。

20.自顶向下的语法分析方法的关键是如何选择候选式的问题。

21.递归下降分析法是自顶向下分析方法。

22.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

23.自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

编译原理复习材料

编译原理复习材料
a+b=5 a=7 x=5 y=3 b=3 z=7
(4) 所谓传名是在进入调用段之前不对实在参数预先进行计值,而 是过程中每当使用到相应的形参时才对它实行计值。因序),每当过程体中使用到相应 形参时就调用这个子程序。 因此,过程体执行y:=y+1;语句,实现时处理成为: a=a+1; 过程体执行z:=z+x;语句,实现时处理成为: a=a+(a+b); 执行上述两语句后,a的值是 9。因此,程序执行后输出 a的值是 9。 综上所述程序执行时a的输出: (1)传值:2 (2)传地址:8 (3)得结果:7 (4)传名:9 5、几个基本概念 考虑一个有穷字母表∑字符集,其中每一个元素称为一个符号,∑上的
程序是由函数或过程构成的,程序的任务是通过函数或过程之间的 协作(相互调用)l来完成的,函数或过程的调用有以下4种方式:传地 址(call-by-reference)、得结果(call by result)、传值(call-byvalue)和传名(call by name)。 定义函数Swap,其中M、N是形式参数,简称形参。 Void Swap(int M,int N) { int t; t=N; N=M; M=t; } 函数调用: Swap(I,J);其中I和J是实在参数,简称实参。下面我们以下面的 程序为例分别讨论4种参数传递的方式。
(2)这种类型的数据对象可以具有的值; (3)可以作用于这种类型的数据对象的操作。 一个程序语言必须提供一定的初等数据类型,包括这些数据类型上能 进行的运算的定义。不同的语言含有不同的初等数据成分。常见的初等 数据类型有: (1)数值类型:整型、实型、复数、双精度, 运算:+,-,*,/等 (2)逻辑类型:布尔运算:∨,∧,┑ (3)字符类型:符号处理 (4)指针类型:指针式把内存地址作为其值的数据类型,通过指针可 以操作内存空间。 程序语言中的各种名字都是用标识符表示的。标识符是指由字母、 下划线和数字组成的,以字母或下划线为开头的一个字符串。名字和标 识符在形式上难于区别,标识符是一个没有意义的的字符序列,而名字 则有明确的意义和属性。用计算机术语来说,每个名字可看成是代表一 个抽象的存储单元,这个单元可含有一位、一字节或相继的多个字节。 该单元的内容则被认为是名字的值。仅把名字看成代表一定的存储单元 还是不够的,我们还必须同时指出它的属性(数据类型)。只有指定了 属性的存储单元,其值才是可以理解的。 一个名字的属性包括类型和作用域。名字的类型决定了它能具有什 么样的值, 值在计算机内部的表示方式,以及对它能施加什么运算。 名字的作用域规定了它的值的存在范围。 除了初等数据类型外,有些语言还提供了由初等数据构造复杂数据 的手段。常见的复杂数据类型有: (1)数组。一个数组是由同一类型数据所组成的某种n维矩形结 构。数组在内存中占有一块连续的空间,系统采用基地址加偏移量的方 式来访问数组元素。 (2)记录。从逻辑上讲,记录是由已知的数据组合起来的一种结 构。一个记录通常含有若干个分量,每个分量称为记录的一个栏(或域 field)。每个分量都是一个确定类型的数据,不同的分量的数据类型可 以不同。 (3)字符串、表格、栈和队列。 (4)抽象数据类型。抽象数据类型封装了数据和操作,在面向对象 程序设计语言中,Ada通过程序包(package)提供了数据封装的支持, Smalltalk、C++和Java语言则通过类(class)对抽象数据类型提供支 持。 4、函数调用的方式

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)一、单项选择题1.将编译程序分成若干个“遍”是为了( B )A.提高程序的执行效率B. 使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.不可能是目标代码的是( D )A.汇编指令代码 B.可重定位指令代码C.绝对指令代码 D.中间代码3.词法分析器的输入是( B )A.单词符号串 B.源程序C.语法单位 D.目标程序4.中间代码生成时所遵循的是( C )A.语法规则 B.词法规则C.语义规则 D.等价变换规则5.编译程序是对( D )A.汇编程序的翻译 B.高级语言程序的解释执行C.机器语言的执行 D.高级语言的翻译6.词法分析应遵循( C )A.语义规则 B.语法规则C.构词规则 D.等价变换规则7.词法分析器的输出结果是( C )A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和属性值 D.单词属性值8.正规式M1和M2等价是指( C )A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等C.M1和M2所识别的语言集相等 D.M1和M2状态数和有向弧条数相等9.词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此,( B ) A.词法分析器应作为独立的一遍B.词法分析器作为子程序较好C.词法分析器分解为多个过程,由语法分析器选择使用.D.词法分析器并不作为一个独立的阶段10.如果L(M1)=L(M2),则M1与M2( A )A .等价B .都是二义的C .都是无二义的D .它们的状态数相等 11.文法G :S →xSx|y 所识别的语言是( C )A .xyxB .(xyx)* c .x n yx n (n ≥0) d .x *yx *12.文法G 描述的语言L(G)是指( A ) A.⎭⎬⎫⎩⎨⎧∈⇒=+*,|)(T V S G L αααB .⎭⎬⎫⎩⎨⎧⋃∈⇒=+*)(,|)(N T V V S G L ααα C .⎭⎬⎫⎩⎨⎧∈⇒=**,|)(T V S G L αααD .⎭⎬⎫⎩⎨⎧⋃∈⇒=**)(,|)(N T V V S G L ααα 13.有限状态自动机能识别( C )A .上下文无关文法B .上下文有关文法C .正规文法D .短语文法14.如果文法G 是无二义的,则它的任何句子( A ) A .最左推导和最右推导对应的语法树必定相同 B .最左推导和最右推导对应的语法树可能不同 C .最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同 15.由文法的开始符经0步或多步推导产生的文法符号序列是( C ) A .短语 B .句柄 C .句型 D .句子 16.文法G :E →E+T|T T →T*P|P P →(E)|i则句型P+T+i 的句柄为( B )A .P+TB .PC .P+T+iD .i 17.文法G :S →b|∧|(T) T →T ∨S|S 则FIRSTVT(T)=( C )A .{ b ,∧,( }B .{ b ,∧,) }C .{ b ,∧,(,∨ }D .{ b ,∧,),∨ } 18.产生正规语言的文法为( D )A .0型B .1型C .2型D .3型19.任何算符优先文法( D )优先函数。

编译原理全复习(完整版)

编译原理全复习(完整版)

1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。

(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。

(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。

(4)优化器,对中间代码进行优化处理。

(5)目标代码生成器,把中间代码翻译成目标程序。

(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。

(7)出错管理,把错误信息报告给用户。

编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。

(2)。

语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。

(3)语义分析与中间代码产生。

任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。

(4)优化。

任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。

(5)目标代码生成。

任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。

2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。

b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。

编译原理期末复习题(含答案2011-5)

编译原理期末复习题(含答案2011-5)

编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。

2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。

3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。

6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),‚k‛的含义是(向输入串中查看K个输入符号)。

7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),‚1‛的含义是(向输入串中查看1个输入符号)。

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。

10、LR(0)分析法的名字中,‚L‛的含义是(从左到右进行分析),‚R‛的含义是(采用最右推导的逆过程---最左归约),‚0‛的含义是(向貌似句柄的符号串后查看0个输入符号)。

11、LR(1)分析法的名字中,‚L‛的含义是(从左到右进行分析),‚R‛的含义是(采用最右推导的逆过程---最左归约),‚1‛的含义是(向貌似句柄的符号串后查看1个输入符号)。

12、SLR(1)分析法的名字中,‚S‛的含义是(简单的),‚L‛的含义是(从左到右进行分析),‚R‛的含义是(采用最右推导的逆过程---最左归约),‚1‛的含义是(向貌似句柄的符号串后查看1个输入符号)。

13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。

编译原理复习

编译原理复习

1、编译程序:能够把用各种高级语言书写的源程序翻译成某种等价的目标程序的翻译程序。

2、遍:指编译程序对源程序或中间代码程序从头到尾扫描一次。

3、静态分配:在编译时就能够安排好目标程序运行时的全部数据空间。

4、编译程序包括词法分析、语法分析、中间代码生成、优化,目标代码产生五个阶段,上述各阶段中还要进行表格处理和出错处理的工作。

5、编译程序可分为五个阶段:词法分析、语法分析、中间代码生成、优化、目标代码生成。

上述五个阶段之间每个阶段输出为作下一阶段的输入,第一阶段的输入是源程序,最后阶段的输出是目标代码。

6、程序语言是由语法和语义两方面定义的。

语法指可以形成和产生一个合式的程序的一组规则,语义是定义一个程序的意义的一组规则。

7、一个名字的属性包括类型和作用域。

8、目标代码一般有三种形式:能够立即执行的机器语言代码,待装配的机器语言模块和汇编语言代码。

9、2型文法又称为(上下文无关文法),3型文法又为(正规文法)。

10、虽然名字都是用标识符表示的,但名字和标识符有着本质的区别。

11、词法分析器的任务是从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成单词符号串的中间程序。

12、执行词法分析的程序称为词法分析器或扫描器。

13、词法分析器所输出的单词符号常常表示成如下二元关系:(单词种别,单词自身值)。

14、词法分析器:是一种程序,它能将字符串形式的源程序改造成单词符号串形式的中间程序。

15、程序语言的单词符号包括:(标识符)、(运算符)、(常数)、(基本字)、界符等。

16、超前搜索:在词法分析过程中,有时为了确定词性,需要超前扫描若干个字符,这个动作为超前搜索。

17、状态转换图是一张有限方向图,其中结点代表状态,状态之间用箭弧连接,箭弧上的标记代表在射出结点状态下可能出现的输入字符或字符类,状态中有一个初态,至少有一个终态。

18、自上而下分析的主旨是,对任何输入串,试图用一切可能的办法,从文法开始符号(根结)出发,自上而下地为输入串建立一颗语法树。

《编译原理》复习题及答案

《编译原理》复习题及答案

《编译原理》课程复习资料一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

[ ]2.一个句型的直接短语是唯一的。

[ ]3.已经证明文法的二义性是可判定的。

[ ]4.每个基本块可用一个DAG表示。

[ ]5.每个过程的活动记录的体积在编译时可静态确定。

[ ]6.2型文法一定是3 型文法。

[ ]7.一个句型一定句子。

[ ]8.算符优先分析法每次都是对句柄进行归约。

[ ]9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

[ ]10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

[ ]11.一个优先表一定存在相应的优先函数。

[ ]12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

[ ]13.递归下降分析法是一种自下而上分析法。

[ ]14.并不是每个文法都能改写成 LL(1)文法。

[ ]15.每个基本块只有一个入口和一个出口。

[ ]16.一个 LL(1)文法一定是无二义的。

[ ]17.逆波兰法表示的表达试亦称前缀式。

[ ]18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

[ ]19.正规文法产生的语言都可以用上下文无关文法来描述。

[ ]20.一个优先表一定存在相应的优先函数。

[ ]21.3型文法一定是2 型文法。

[ ]22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

[ ]二、填空题:1. 称为规范推导。

2.编译过程可分为,,,和五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是。

4.从功能上说,程序语言的语句大体可分为语句和语句两大类。

5.语法分析器的输入是,其输出是。

6.扫描器的任务是从中识别出一个个。

7.符号表中的信息栏中登记了每个名字的有关的性质,如等等。

8.一个过程相应的DISPLAY表的内容为。

9.一个句型的最左直接短语称为句型的。

10.常用的两种动态存贮分配办法是动态分配和动态分配。

编译原理复习题(含试卷)

编译原理复习题(含试卷)

*编译原理复习题一.简答题:1) 什么是句子? 什么是语言?解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

语言——语言是句子的集合。

或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │Sx,x ∈V T *} 。

2) DFA 与NFA 有何区别 ?解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个开始状态。

另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。

3) 自顶向下的语法分析方法的基本思想是什么?解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

4) 自底向上的语法分析方法的基本思想是什么?解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

5) 一个上下文无关文法G 包括哪四个组成部分?解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。

6) 在自底向上的语法分析方法中,分析的关键是什么?解答:关键是寻找句柄。

7)在自顶向下的语法分析方法中,分析的关键是什么?解答:关键是选择候选式。

8)什么是属性文法?答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。

在语法分析过程中,完成语义规则所描述的动作,从而实现语义处理。

一个属性文法形式的定义为一个三元组AG,AG=(G,V,E)。

其中G为一个上下文无关文法;V为属性的有穷集;E为一组语义规则。

9)语法制导翻译语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。

编译原理复习资料,基本概念.doc

编译原理复习资料,基本概念.doc

第一章1.编译的5个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成2.翻译程序:能够把某种语言转换成另一种语言的程序,而两者在逻辑上是等价的3.解释程序:以源程序为输入,不产生目标程序,而是边解释边执行源程序本身的程序。

4.诊断编译程序:帮助程序开发和调试的程序。

5.优化编译程序:提高目标代码效率的程序。

6.运行编译程序的是宿主机,运行目标代码的是目标机。

7.交叉编译:编译程序产生不同于宿主机的目标代码。

8.可变编译程序:不需要重写编译程序中与机器无关的部分就能改变目标机。

9.程序语言由语法和语义两方面定义。

10.语句包括:说明性语句、执行性语句11.子程序传参方式:传值、传地址、传名12.空间分配分方式:静态存储分配、动态存储分配13.表格管理:对各种表格进行管理,包括表格的构造、查找、修改、删除、插入等;词法分析14.词法分析:把源程序作为字符串进行扫描,根据单词词法,识别出所有单词,过滤无用符,并检查是否为合法的单词。

15.词法分析的工具:正规式、有限自动机。

16.单词一般分为如下几种:基本字,标识符,常数,算符,界符。

17.词法规则:规定了形成单词的规则;如常数,标识符,基本字,算符等。

18.识别单词符号的方法:超前搜索19.源程序的预处理:过滤无关的符号。

20.状态图由三种结构构成:分支结构、循环结构、终结点21.LEX语言源程序由两部分组成:正规式辅助定义式、识别规则语法分析22.语法分析:根据语言的语法规则,从单词符号串中识别出各种语法单位,进行句子分析,并检查整个输入字串是否为合法的程序。

23.语法=词法规则+语法规则24.语法规则:规定了由单词构造更大语法单位的规则;如表达式,短语,语句,程序等。

25.语法分析方法:自上而下(算符优先)、自下而上(递归下降)26.重要的语法单位:程序,子程序,语句,短语,表达式等27.上下文无关文法组成:终结符号、非终结符号、开始符号、产生式28.句柄.:一个句型的最左直接短语。

编译原理知识点汇总

编译原理知识点汇总

编译原理的复习提纲1.编译原理=形式语言+编译技术2.汇编程序:把汇编语言程序翻译成等价的机器语言程序3.编译程序:把高级语言程序翻译成等价的低级语言程序4.解释执行方式:解释程序,逐个语句地模拟执行翻译执行方式:翻译程序,把程序设计语言程序翻译成等价的目标程序5.计算机程序的编译过程类似,一般分为五个阶段:词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成词法分析的任务:扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等)语法分析是:在词法分析的基础上的,语法分析不考虑语义。

语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。

语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。

语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。

所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序编译程序结构包括五个基本功能模块和两个辅助模块6.编译划分成前端和后端。

编译前端的工作包括词法分析、语法分析、语义分析。

编译前端只依赖于源程序,独立于目标计算机。

前端进行分析编译后端的工作主要是目标代码的生成和优化后端进行综合。

独立于源程序,完全依赖于目标机器和中间代码。

把编译程序分为前端和后端的优点是:可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。

7.汇编器把汇编语言代码翻译成一个特定的机器指令序列第二章1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn,2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0={ε}3.重写规则,简称规则。

编译原理复习资料

编译原理复习资料

编译原理复习资料一、填空题.1.编译程序是一种程序,能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,它们在逻辑上等价,完成相同的工作。

2.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是_二义性的__。

3.词法分析程序的功能是从左到右扫描源程序字符串,根据语言的词法规则识别出各类单词符号,并以__单词符号或单词符号表示的源程序_的形式输出。

4.编译程序一般划分为词法分析、语法分析、语义分析、中间代码生成、和代码优化目标代码生成六个阶段;除此以外,还有两个重要的基本工作,它们是表格管理和出错处理。

5.目前,语法分析方法有两大类,分别为自上向下的分析方法和__自下而上_分析方法。

自上而下的分析方法是从___文法的开始符号__出发,根据文法规则正向推导出给定句子的方法。

6.属性文法是编译技术中用来说明程序设计语言的___语义__的工具。

7.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序,则其翻译程序称为 ____编译程序___。

8.扫描器(程序)的任务是从_字符串__中识别出一个个_单词符号_。

9.一个LR分析器包括三部分:总控程序、_分析表_和分析栈。

10.自顶向下的语法分析方法的基本思想是:从文法的_开始符号_出发,根据给定的输入串并按照文法的产生式一步一步的向下进行__正向推导_,试图推导出文法的给力句子__,使之与给定的输入串匹配。

11.按Chomsky分类法,文法被分成___4(0~3型文法)__类。

12.局部优化是在__基本块___范围内进行的一种优化。

13.编译程序是一种_翻译_程序,它将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,源程序和目标程序在逻辑上等价,完成相同的工作。

14.编译程序与解释程序的根本区别为__解释程序在执行中不产生目标程序_。

15.语法分析的任务是识别给定的终结符号串是否为给定文法的___句子__。

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

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

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

编译原理复习(有答案)

编译原理复习(有答案)

第一章引论1.编译过程的阶段由词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段2.编译程序的概念3.编译程序的结构例:(B)不是编译程序的组成部分。

A. 词法分析器;B. 设备管理程序C. 语法分析程序;D. 代码生成程序4.遍的概念对源程序(或其中间形式)从头至尾扫描一次并进行有关加工处理,生成新的中间形式或最终目标程序,称为一遍。

5.编译程序与解释程序的区别例:解释程序和编译程序是两类程序语言处理程序,它们的主要区别在于(D)。

A. 单用户与多用户的差别B. 对用户程序的差错能力C. 机器执行效率D. 是否生成目标代码第三章文法和语言文法的概念字母表、符号串和集合的概念及运算例:(ab|b)*c 与下面的那些串匹配?(ACD)A. ababbc;B. abab;C. c;D. babc;E. aaabc例:ab*c*(a|b)c 与后面的那些串匹配?(BC)A.acbbcB.abbcacC.abcD.acc例:(a|b)a+(ba)*与后面的那些串匹配? (ADE)A.baB.bbaC.ababaD.aaE.baa文法的定义(四元组表示)文法G定义为四元组(V N,V T,P,S)V N:非终结符集V T:终结符集P:产生式(规则)集合S:开始符号(或识别符号)例:给定文法,A::= bA | cc,下面哪些符号串可由其推导出(①② ⑤)。

①cc ②b*cc ③b*cbcc ④bccbcc ⑤bbbcc什么是推导例:已知文法G:E->E+T|E-T|TT->T*F|T/F|FF->(E)|i试给出下述表达式的推导:i*i+i 推导过程:E->E+T->T+T->T*F+T->F*F+T->i*F+T->i*i+T->i*i+F->i*i+i●句型、句子的概念例:假设G一个文法,S是文法的开始符号,如果S=>*x,则称x是句型。

编译原理复习题及答案

编译原理复习题及答案

编译原理复习题及答案一、选择题1.一个正规语言只能对应(B)A 一个正规文法B 一个最小有限状态自动机2.文法G[A]:A→εA→aB B→Ab B→a是(A)A 正规文法B 二型文法3.下面说法正确的是(A)A 一个SLR(1)文法一定也是LALR(1)文法B 一个LR(1)文法一定也是LALR(1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)A 必要条件B 充分必要条件5.下面说法正确的是(B)A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是(A)A 归约速度快B 对文法限制少7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(A)A Lex是一个词法分析器的生成器B Yacc是一个语法分析器9.下面说法正确的是(A)A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C)。

A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL 12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。

A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序B.目标程序C.连接程序D.解释程序14.(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。

编译原理复习题

编译原理复习题

编译原理复习题1. 定义和分类- 什么是编译原理?- 编译器的主要功能是什么?- 列举编译器的几种类型,并简要描述它们的特点。

2. 词法分析- 词法分析在编译过程中的作用是什么?- 描述词法分析器的工作原理。

- 举例说明如何使用正则表达式进行词法分析。

3. 语法分析- 语法分析的目的是什么?- 解释上下文无关文法和上下文有关文法的区别。

- 描述递归下降解析器的工作原理。

4. 语义分析- 语义分析的任务是什么?- 描述如何使用属性文法进行语义分析。

- 解释类型检查的重要性及其在语义分析中的应用。

5. 中间代码生成- 中间代码的作用是什么?- 列举常见的中间代码形式,并解释它们的优缺点。

- 描述如何从源代码生成三地址代码。

6. 代码优化- 代码优化的目标是什么?- 解释局部优化和全局优化的区别。

- 描述几种常见的代码优化技术。

7. 目标代码生成- 目标代码生成的重要性是什么?- 描述如何将中间代码转换成目标机器代码。

- 解释寄存器分配和指令调度的概念。

8. 符号表管理- 符号表在编译过程中的作用是什么?- 描述符号表的组织结构。

- 解释如何在编译过程中维护和更新符号表。

9. 错误处理- 编译过程中常见的错误类型有哪些?- 描述错误检测和报告的策略。

- 解释如何设计一个有效的错误恢复机制。

10. 编译原理的应用- 编译原理在现代软件开发中的重要性是什么?- 列举编译原理在不同领域的应用实例。

- 讨论编译原理在人工智能和机器学习领域的潜在应用。

结束语编译原理不仅仅是计算机科学中的一个理论领域,它在实际的软件开发和系统设计中扮演着至关重要的角色。

通过深入理解编译原理,我们可以更有效地编写和优化软件,提高程序的性能和可靠性。

希望这些复习题目能够帮助你更好地掌握编译原理的基础知识和应用技巧。

编译原理2011复习

编译原理2011复习

什么是编译器?请简述编译器的功能及其输入输出。
第一章 2008
以下对编译器(compiler)描述错误的是( )。
A 编译器的输入是由源语言编写的源程序,输出是由目标语 言编写的目标程序。 B 编译器是一个执行程序而不是一个转换程序。 C 编译器和编辑器以及其它程序经常被捆绑成一个与用户交 互的开发环境(IDE)中。 D 按照编译器扫描的遍数,可把编译器分为一遍扫描和多遍 扫描的编译器。
第六章 要点
属性文法 概念:
联编 联编时间 静态语义和动态语义
常见的静态语义 符号表的作用、内容 符号表存储的属性
第六章 2008-2010
下面不属于语义属性的是(
A. 变量的数据类型 C. 变量对应的内存地址

B. 表达式的值 D. 源程序文件名
第七章 要点
概念
运行时环境 过程活动记录 调用序列和返回序列
ቤተ መጻሕፍቲ ባይዱ对于给定的一个非确定性有限自动机(NFA),以 下正确的是()。
不存在与之等价的DFA。 存在一个唯一等价的DFA。 存在一个唯一的具有最少状态数的等价DFA。 存在等价DFA,但具有最少状态数的DFA不唯一。
第二章 2008
请写出下面各个字符串的正则表达式:
以a开头或者以b结尾的小写字母串; 以字母开头,后面是数字或字母的符号串;(即 标识符)
第8-10章 要点 章
中间代码的种类 后缀表示及其特点 三元码和四元码 代码生成的概念(要考虑机器的物理特性) 代码优化的分类
源代码优化的具体实例
第8-10章 2008-2010 章
后缀表示的特点是:()
A.操作数的顺序与原来相同; B.操作符的顺序就是计算发生的顺序; C C.后缀表示中无需括号; D.以上都是。

编译原理复习

编译原理复习
思考:
1、如何求一个状态子集的ε闭包?
2、DFA和NFA的区别是什么?
3、为正规式(a|b)*a(a|b)(a|b)构造DFA。
4、设计一个DFA,其输入字母表是{0,1},接受以0开始以1结尾的所有序列。
5、给出一个文法,写出对应的词法分析程序。
第四章语法Leabharlann 析主要内容:语法分析器的功能。
自上而下分析法
字母表,符号及符号串、闭包和正闭包,连接,空集,产生式,推导,直接推导,归约,句子,句型,句柄,,语法树,语言,最左推导,最右推导(规范推导),文法的递归等。
文法的定义:
文法是一个四元组:
(终结符号集,非终结符号集,开始符号、产生式集)。
用文法来描述语言及通过文法能分析该文法所描述的语言。
二义性的概念、能通过画语法树来分析一个文法描述的语言是否具有二义性。
2、编译方式与解释方式有什么异同?
编译方式和解释方式都对源程序进行了翻译,只是前者相当于实际生活中的笔译,而后者相当于口译。虽然有些解释程序对源程序进行了某些形式上的转换,但最终并没有生成目标代码。因此两者的根本区别在于是否生成目标代码,而不是是否进行了翻译。
第二章文法和语言
主要内容:
与文法相关的概念:
DFA的表示形式:
转换矩阵、状态转换图。
状态转换图的相关概念:
状态(结点)、初态、终态、接受(识别)。
非确定有限自动机(NFA)的定义及NFA与DFA的区别。
NFA到DFA的转换:
子集构造法(Subset)。
DFA的化简。
由正规表达式构造确定的有穷自动机的步骤。
由状态转换图编写词法分析程序的步骤。
1)画出状态转换图。
LL
(1)分析的条件:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对于给定的一个非确定性有限自动机(NFA),以 下正确的是()。
不存在与之等价的DFA。 存在一个唯一等价的DFA。 存在一个唯一的具有最少状态数的等价DFA。 存在等价DFA,但具有最少状态数的DFA不唯一。
第二章 2008
请写出下面各个字符串的正则表达式:
以a开头或者以b结尾的小写字母串; 以字母开头,后面是数字或字母的符号串;(即 标识符)
第一章 2010
以下对编译器(compiler)描述错误的是( )。
A. 编译器是将一种语言翻译成另一种语言的计算机 部件,包括软件部分和硬件部分; B. 输入编译器的源语言通常是高级语言,如C语言; 输出编译器的目标语言通常是低级语言,如01代码; C. 词法分析是编译器的一个处理阶段; D. 编译器和编辑器以及其它程序经常被捆绑成一 个与用户交互的开发环境(IDE)中。
几种运行时环境及其特点,举例。
完全静态的运行时环境 基于栈的运行时环境
第七章2008-2010 第七章
在编译方法中,动态存储分配的含义是__。
A、在运行阶段对源程序中的量进行分配 B、在编译阶段对源程序中的量进行分配 C、在编译阶段对源程序中的量进行分配,在运行时这些 量的地址可以根据需要改变 D、以上都不正确
①过程名 ②过程的静态层次 ③过程的入口地址 ④过程首部在源程序中的行号 ⑤有关过程参数的信息 A. ①②③ B. ①③④ C. ①③⑤ ④⑤
D. ①②③
第七章2008-2010 第七章
关于基于栈的运行时环境(runtime Байду номын сангаасnvironment),以下描述正确的是()
A. 不支持递归函数调用; B. 支持递归函数调用; C. 局部变量可用静态地址访问; D.一个函数对应唯一一个过程活动记录。
第8-10章 要点 章
中间代码的种类 后缀表示及其特点 三元码和四元码 代码生成的概念(要考虑机器的物理特性) 代码优化的分类
源代码优化的具体实例
第8-10章 2008-2010 章
后缀表示的特点是:()
A.操作数的顺序与原来相同; B.操作符的顺序就是计算发生的顺序; C C.后缀表示中无需括号; D.以上都是。
编译程序和解释程序有哪些区别?
第二章要点
扫描程序的功能及其输入输出。 正则表达式
什么是由r生成的语言,字母表,元符号 三种基本操作
有限自动机
定义 DFA NFA
第二章要点
※正则表达式=>NFA=>DFA=>程序
RE =>NFA Thompson’s construction NFA=>DFA 子集构造法 DFA的化简 DFA=>程序 三种方式+Lex
第二章 2009
表示“由a或b组成的含有偶数个b的字符串” 的正则表达式是( )
A.a*ba*ba* C.(abab)* B. (a*ba*ba*)* D. 以上都不对
请写出下面各个字符串的正则表达式
所有整数的数字串(包括负数) 字符串中至多含有一个A的大写字母串
请简述有限自动机的组成元素并解释DFA和 NFA的区别。
第一章 2010
汇编语言与机器语言相比,其主要优点在于 ( )。
A.汇编语言机器依赖性强; B.汇编程序的可执行程序的长度可以大幅下降; C.汇编语言的符号形式更易理解,也提高了编写 程序的准确性; D.以上都不对。
第一章 2010
一般的编译器中,语法分析的结果是生成源程 序的( )。
A.记号序列; C.语法树; B.分析树; D.注释树。
已知文法G[A]为
A→ (L)A | (x) L→ L,s | k 通过消除左递归和提取左因子(回溯),给出与 G[A]等价的文法G’[A]; 计算文法G’[A]非终结符的FIRST集合和FOLLOW 集合; 判断文法G’[A]是否为LL(1)文法; 如果文法G’[A]是LL(1)文法,构造G’[A]的分析表; 给出输入串(k,s,s)(x)的分析过程。
(1) 若采用自顶向下分析方法,对此文法来说,在分析过程中能否避免二义性? 为什么? (2) 分析符号串(bbaabab)是否为此文法的句子。
(20分)已知文法G[A]为 分 A::=aABe | a B::=Bb | d
(1) 通过消除左递归和提取左因子(回溯),给出与G[A]等价的文法G’[A]; (2) 计算文法G’[A]非终结符的FIRST集合和FOLLOW集合; (3) 判断文法G’[A]是否为LL(1)文法; (4) 如果文法G’[A]是LL(1)文法,构造G’[A]的分析表; (5) 给出输入串aade的分析过程。
第三章 2009
在文法中可能引起二义性的原因有:( )
A.运算的优先级 C.else的悬挂问题 B. 运算的结合性 D. 以上都有可能
第三章 2008
以下对于语法二义性的描述正确的是()。
A如果文法G的某个句子存在两棵或者两棵以上的语法树(或 分析树),则称该文法是存在二义性的; B如果文法G的某个文法存在两个或者两个以上的句子符合该 文法规则,则称该文法是存在二义性的; C消除文法二义性只能对文法进行修改,别无他法; D能够通过算法判别文法是否存在二义性 。
S为开始符号,请计算S和Q的FIRST集合和 FOLLOW集合。
第四章 2010
已知文法G[A]为
A→ a | <BP> B→ b | ε P→ P*A | Ak
通过消除左递归和提取左因子(回溯),给出与G[A]等 价的文法G’[A]; 计算文法G’[A]非终结符的FIRST集合和FOLLOW集合; 判断文法G’[A]是否为LL(1)文法; 如果文法G’[A]是LL(1)文法,构造G’[A]的分析表; 给出输入串<bak*a>的分析过程。
什么是编译器?请简述编译器的功能及其输入输出。
第一章 2008
以下对编译器(compiler)描述错误的是( )。
A 编译器的输入是由源语言编写的源程序,输出是由目标语 言编写的目标程序。 B 编译器是一个执行程序而不是一个转换程序。 C 编译器和编辑器以及其它程序经常被捆绑成一个与用户交 互的开发环境(IDE)中。 D 按照编译器扫描的遍数,可把编译器分为一遍扫描和多遍 扫描的编译器。
把汇编语言程序翻译成机器可执行的目标程序的工作 是由______完成的。
A、编译器 C、汇编器 B、解释器 D、预处理器
第一章 2008
编译器的工作可分为多个阶段,词法分析、语法分析、语义分析 阶段的结果分别是()。 A 分析树、语法树、语义树; B 分析树、语法树、注释树; C 记号序列、语法树、语义树; D 记号序列、分析树、注释树。 文法根据限定条件分为四种文法:0型文法、1型文法、2型文法、 3型文法。其中2型文法又叫做()文法,3型文法又叫做( ) 文法。 高级程序设计语言源程序有两种执行方式,即____和____。 什么是编译器? 什么是遍。 什么是扫描器?扫描器的功能是什么?
编译过程中,语法分析器的任务是_______。
①分析单词是怎样构成的 ②分析单词串是如何构成语句和说明的 ③分析语句和说明是如何构成程序的 ④分析程序的结构 A、②和③ B、④ C、②③④ D、①②③④
第三章 2008
已知文法G[S]: S::=a | (T) T::=T,S | S , 给出句子(a,(a,a))的最左推导并画出 语法树。
对于数据空间的存贮分配,FORTRAN采用____策 略。 下列对完全静态存储分配的含义描述错误的是( )。
A.每个过程只有一个活动记录; B.每个变量都有一个固定的存储地址; C.没有指针和动态分配; D.允许递归调用。
第七章2008-2010 第七章
过程信息表(过程活动记录)中至少应该包括 有____________。
第四章 2008
高级语言编译程序常用的语法分析方法中, 递归下降分析法属于______分析方法。
A、自左至右 C、自底向上 B.自顶向下 D.自右向左
LL(1)分析方法是这样得名的:第一个“L”指 的是___,第二个“L”指的是___,括号中的 数字1指的是___。
第四章 2008
(10分)设有文法G[Z]: Z::=(A) A::=a│bB B::=Aab
第四章 2009
设有文法G[S]:
S→ X S | ε X→ a S b | { S } | c 计算文法G[S]非终结符的FIRST集合和FOLLOW集 合; 若采用自顶向下分析方法,对此文法来说,在分析 过程中能否避免二义性?为什么? 分析符号串aababb是否为此文法的句子。
第四章 2009
第二章 2009
以下不是有限自动机的组成元素的是()
A.开始状态 C.正则表达式 B.结束状态 D.状态转换函数
已知正则表达式(ab)*(a|b)
1.构造该正则表达式所对应的NFA; 2.由NFA构造DFA; 3.对DFA进行最小化。
第二章 2008
以下对有穷自动机的图形表示描述错误的是()。
用带箭头的线表示一个状态到另一个状态的转换; 用圆圈表示状态; 用双线边界的圆圈表示接受状态。 一个有穷自动机里只能有唯一的一个接受状态;
※编译器的翻译过程
第一章 2009
编译器各处理阶段的正确顺序是( )
A.词法分析、语法分析、语义分析、代码生成; B.语法分析、词法分析、语义分析、代码生成; C.语义分析,语法分析、词法分析,代码生成; D.以上都不对。
编译器中语法分析的输入和输出分别是( )
A.字符串、记号串 C.记号串、语法树 B.记号串、注释树 D.语法树、注释树
复习
2011.4.26
第一章要点
编译器的概念。其输入和输出。 机器语言->汇编语言->高级语言。 乔姆斯基分层结构。
0型-无限制文法 0 1型-上下文相关文法 2型-上下文无关文法 3型-正则文法
相关文档
最新文档