当前位置:文档之家› 程序设计语言编译原理_考试重点(终)

程序设计语言编译原理_考试重点(终)

1 2 3 开410 111 0 13 0 1 2 a a a ,ab bb 第一章 引论1.编译程序分几个阶段,每个阶段的任务是什么?五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。

(如基本字,标识符,常数,算符和界符)。

语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。

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

代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码 。

目标代码生成任务:将中间代码变换成特定机器上的低级语言代码2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。

一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。

源程序中的错误通常分为 :语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配 ... 语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配 ...3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。

编译后端包括编译程序中与目标机有关的那些部分。

4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。

遍可以和阶段相对应,也可无关。

单遍代码不太有效。

遍 是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。

5.“运算符与运算对象类型不符”属于语义错误6.算法逻辑上的错误属于语义错误7.编译程序:能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的一种程序。

通常是从高级语言转换成为低级语言。

8.解释程序:它以该语言写的源程序作为输入,但是不产生目标代码,而是边解释边执行源程序本身。

9.诊断编译程序:专门用于帮助程序开发和调试的编译程序。

10.优化编译程序:着重于提高目标代码效率的编译程序。

11.宿主机:运行编译程序的计算机。

12.目标机:运行编译程序所产生目标代码的计算机。

13.交叉编译程序:一个程序产生不同于宿主机的机器代码的程序。

14.可变目标编译程序:如果不需要重新编译程序中与机器无关的部分就能改变目标机,则该编译程序就叫做可变目标编译程序。

PS :世界上第一个编译程序——FORTRAN 编译程序——20世纪50年代 15.编译过程第一阶段:词法分析——词法分析器 1)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),标示符,常熟,算符和界符。

2)单词符号是语言的基本组成成分,是人们理解和编程的基本要素。

3)描述词法规则的有效工具是:正规式和有限自动机 第二阶段:语法分析——(词法)分析器1)任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位,如“短语”、“子句”、“句子”、“程序段”和“程序”等。

通过语法分析,确定整个输入串是否构成语法上正确的“程序”。

2)语法分析所依据的是语言的语法规则。

通常是上下文无关文法描述、3)词法分析是一种线性分析,而语法分析是一种层次结构分析。

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

2)对每种语法范畴进行静态语义检查—>进行中间代码的翻译。

3)语义分析所依据的是语言的语义规则,通常使用属性文法描述语义规则。

4)中间代码:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。

5)中间代码的四元式表示形式。

此外还有三元式、间接三元式、逆波兰记号和树。

第四阶段:优化——优化器1)任务:在于前段产生的中间代码进行加工交换,,以期在最后阶段能产生更为高效(省时间和空间)的目标代码。

2)优化的主要方面有:公共字表达式、优化循环、删除无用代码等等。

3)优化所依据的原则:程序的等价变化原则。

第五阶段:目标代码生成——目标代码生成器1)任务:吧中间代码(或经优化处理后)变换成特定机器上的低级语言代码。

2)形式:绝对指令代码或可重定位的指令代码或汇编指令代码。

16.编译程序的结构语法错误:指源程序中不符合语法(或词法)规则的错误,他们可在词法分析和语法分析时检测出来语法错误:指源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的要在运行时才能检测出来。

通常有:说明错误、作用域错误、类型不一致等遍:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。

编译前段:由与源程序有关但与目标程序无关的那些部分组成。

包括词法分析、语法分析、语义分析与中间代码和一些优化工作。

编译后端:编译程序中与目标机有关的那些部分,后端不依赖于源语言而仅仅依赖于中间语言。

集成化的程序设计环境的特点:它将相互独立的程序设计工具集成起来,以使为程序员提供完整的、一体化的支持,从而进一步提高程序开放效率,改善程序质量。

17.T 形图第二章 高级语言及其语法描述 1. 程序语言是由语法和语义两方面定义的。

2.上下文无关文法的定义:四个组成部分:一组终结符号、一组非终结符号、一个开始符号、一组产生式。

一个上下文无关文法G 是一个四元式(VT,VN,S, P ),其中: VT :是非空有限集,它的每个元素是终结符号;VN :是非空有限集,它的每个元素是非终结符号,VT ∩VN=Φ,VT ∪VN=V;S :S ∈VN ,称为开始符号;P :产生式集合(有限),每个产生式形式是{ P->α| P ∈VN , α∈(VT ∪VN)*,S 至少一次为P }; 3.推导、最左推导、最右推导:1、推导:如两个串u0、un ,存在一个串序列u0=>u1=>…=>un ,则我们称这个序列是从u0到un 的一个推导。

U1un :表示从u0出发,经一步或若干步,可推导出un. U1un :表示从u0出发,经0步或若干步,可推导出un.最左推导是指,任何一步α=>β都是对α中的最左非终结符进行替换的。

最右推导是指,任何一步α=>β都是对α中的最右非终结符进行替换的。

4.语法树:在编译中产生语法树是为了语法分析。

5、什么是句型?什么是句子?什么是语言?假定G 是一个文法,S 是它的开始符号。

如果S=> α,则称α是一个句型。

仅含终结符的句型是一个句子。

文法G 所产生的句子的全体是一个语言。

语言是由句子组成的集合,是由一组记号所构成的集合。

6.乔姆斯基把文法分成4种类型,即0型文法、1型文法、2型文法和3型文法。

0型文法也称为短语文法。

1型文法也称为上下文有关文法。

2型文法也称为上下文无关文法。

3型文法也称为正规文法。

与程序语言语法有关的文法是上下文无关文法。

第三章 词法分析1.状态转换图:使用状态转换图是设计词法分析程序的一种好途径,状态转换图是一张有限方向图。

在状态转换图中,结点代表状态,用圆圈表示。

一个状态转换图可用于识别(或接受)一定的字符串。

2.确定的有限自动机(DFA )、非确定有限自动机(NFA )。

五元式:有限状态集合、有穷字母表、转换函数、唯一的初始状态、终止状态集合。

一个确定有限自动机(DFA ) M 是一个五元式:M = (S,∑,δ,s0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑至S 的单值部分映射。

δ(s,a)=s ´意味着:当现行状态为、输入字符为a 时,将转换到下一状态s ´。

我们称s ´为s 的一个后继状s0∈S 是唯一的初态F 是一个终态集(可空)。

一个非确定有限自动机(NFA ) M 是一个五元式:M = (S,∑,δ,S0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑*至S 的子集的映射,即δ: S ×∑* → 2s ,S0∈S 是唯一的初态,F 是一个终态集(可空)。

3.设有确定的有限自动机DFA M = ({0,1,2,3},{a,b},δ,0,{3}),其中δ为:δ(0,a)=1 δ(0,b)=2 δ(1,a)=3 δ(1,b)=2 δ(2,a)=1 δ(2,b)=3 δ(3,a)=3 δ(3,b)=3 请画出状态转换矩阵和状态转化图。

相应的状态转换矩阵如下表: 对应的状态转换图4.设计一个DFA,要求能够识别∑={0,1}上能被5整除的二 进制数。

5.词法分析的流程 第四章 语法分析——自上而下分析 1.语法分析器的功能:识别语法成分,并作语法检查.2.自上而下语法分析方法遇到的主要问题是回溯和左递归。

3.把一个文法改造成任何非终结符的所有候选式首符集两两不相交的方法是提取公共左因子。

4.LL (1)分析法中,第一个L 表示从左到右扫描输入串,第二个L 表示最左推导。

1表示分析时每步只需向前看一个符号。

5.LL (1)文法的条件:1文法不含左递归2)FIRST(α)∩ FIRST(β) = φ3)对文法中的每个非终结符A ,若它存在算符 左操作数右操作数结果状态 a b 0 1 2 1 3 2 2 1 3 333某个候选首符集包含ε,则 FIRST(A)∩ FOLLOW(A)=Φ。

6. 对下文法,计算每个非终结符的FIRST集合和FOLLOW集合。

E→TE’ E’→+E|ε T→FT’ T’→T|ε F→PF’F’→*F’|ε P→(E)|a|b|∧First(E)= First(T)= First(F)={(,a,b, ∧}First(E’)={+, ε},First(T’)={(,a,b, ∧, ε}First(F’)={*, ε} ,Follow(E)= Follow(E’)={#, )}Follow(T)= Follow(T’)={+,#, )}Follow(F)= Follow(F’)={(,a,b, ∧,+,),#}Follow(P)={*, (,a,b, ∧,+,),#}7.两种实现方法:递归下降分析法、预测分析程序。

第五章语法分析——自下而上分析1. 简述自下而上的语法分析方法:就是从输入串开始,逐步进行“规约”,直至规约到文法的开始符号;或者说从语法树的树叶开始,逐步向上规约,直至规约到根节点。

相关主题