ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:217KB ,
资源ID:6993856      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6993856.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理期末考试复习.doc)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

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

1、第一章:1.编译程序的步骤和任务:1) 词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。2) 语法分析:是在词法分析基础上将单词序列分解成各类语法短语(比如程序、语句、表达式等) ,通过语法分析确定整个输入串是否构成一个语法上正确的程序。3) 语义分析:是审查源程序有无语义错误,为代码生成阶段收集类型信息。4) 中间代码产生:将源程序变成一种易于翻译成目标代码的内部表示形式。5) 代码优化:对前阶段生成的中间代码进行变换或改造,使生成的目标代码更为高效6) 目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编

2、指令代码。2. 前端和后端的概念,试问前端通常包括那些阶段,后端包括那些阶段? 答:前端只依赖于源语言,与目标机无关。编译程序的前端通常包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序及相关的表格管理程序和出错处理程序。后端是指编译器中依赖于目标机器的部分,只与中间代码有关。通常包括目标代码生成程序、代码优化程序以及相关的表格管理程序和出错处理程序。遍(PASS):对输入文件(源程序或其等价的中间语言程序)从头到尾扫视,完成预定处理的过程。 一个多遍的编译程序较之一遍的编译程序可能少占内存,逻辑结构可能清晰些,但效率相对可能差点3.程序的正确与否:结构上的语法规则,语义上的语义规

3、则。翻译程序:汇编,解释,编译。4.解释程序及其与编译程序的比较解释程序功能:源程序+初始数据=计算结果解释与编译的区别:工作模式:这是根本区别,编译把源程序翻译成目标代码,而解释直接得到计算结果,不生成目标代码。 存储区内容:编译方式翻译和执行分开,解释方式翻译和执行同时并允许修改源程序,因此二者存储组织不同。效率:解释慢于编译,很多语言两种方式都有。标识符:=表达式第三章:文法和语言1.文法的直观概念:一组判定规则。在实践中,文法不包含多余产生式。2.文法 G 定义为四元组(VT,VN ,S, P ) ,其中: VT 是一个非空有穷终结符号集合;VN 是一个非空有穷的非终结符号集合, 且

4、VTVN;P 是一个产生式的非空有穷集合(注意:产生式左部至少含有一个非终结符) ;S VN ,称为开始符号,且 S 至少必须在某个产生式的左部出现一次 。通常用 V 表示 VN VT,V 称为文法 G 的字母表或字汇表.3.句型、句子:设文法 G,如果符号串 x 是从识别符号推导出来的,即 Sx,xV*,则称x 是一个句型。仅含终结符号的句型是一个句子。4.语言:语言:语言 L(G)是由文法 G 产生的所有句子所组成的集合。5 文法的类型:逐渐对产生式施加限制 四种类型:0 型,1 型,2 型,3 型0 型:G=(VT,VN,S,P),规则形式 : , (VTVN)*, 中至少有一个非终结符

5、1 型(上下文有关) :,仅 S- 除外 规则形式 : A A VN, , (VTVN)*, 2 型(上下文无关):规则形式 : A A VN, (VTVN)* 3 型正规文法(右线性): A aB 或 A a A,B VN(左线性) A Ba 或 A a a VT6.最左(最右)推导在推导的任何一步 ,其中 、 是句型,都是对 中的最左(右)非终结符进行替换规范推导:即最右推导。规范句型:由规范推导所得的句型。7.文法的二义性如果一个文法存在某个句子对应两棵不同的语法树,或者说,若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则说这个文法是二义的. 如果产生上下文无关语言的每一个文

6、法都是二义的,则说此语言是先天二义的。8.自上而下的分析方法:自上而下分析法,是从文法开始符号出发,反复使用各种产生式,逐步进行推导,直至推导出输入符号串。过程:自上而下方法是从文法识别符号开始,将它作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串。关键问题:假定要被代换的最左非终结符号是 A,且有 n 条产生式:A a1|a2|an,那么如何确定用哪个产生式右部去替代 A? 9.自下而上的分析方法:自下而上分析法,是从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。 过程:自下而上方法是从输入符号串开始,以它作为语法树的末端结点,自底向上地构造语法树,使语

7、法树的根结点正好是文法的开始符号。关键问题:因为分析工作的每一步都是从当前串中选择一个子串,将它归约到某个非终结符,暂且把这个子串称为可归约串,问题是,每一步如何确定这个可归约串? 10.短语:若 S* A 且 A +,则称 是句型 相对于非终结符 A 的短语。直接短语:若 S * A 且 A,则称 是句型 相对于非终结符 A 的直接短语。句柄:一个句型的最左直接短语。 (产生式的右部)11.子树:一棵语法树中一个特有的结点连同它的全部后裔,连接这些后裔的边以及这些结点的标记,称为子树。子树与短语的关系(1) 短语:子树的末端结点(即树叶)组成的符号串;(2) 直接短语:简单子树的末端结点组成

8、的符号串; (3) 句柄:最左简单子树的末端结点组成的符号串;左图所示的关于句型 E+E*i 的语法树来说:它有 3 棵子树,即 3 个短语分别为 i、E*i 和E+E*i;34251X6ababab2Y直接短语、句柄均为 i。从语法树中可以看出,所有树叶的组合就是其相对应的父结点的短语。句型 i+i*i 的语法树有 5 棵子树,短语和直接短语如下:直接短语:i1, i2 , i3短语:i1,i2,i3,i1*i2,i1*i2+i3句柄:i1注意:i2+i3 不是短语不是某棵子树的结果12.有关文法的实用限制:有害规则是指形为 U-U 的产生式。会引起文法二义性。多余规则是指文法中那些任何句子

9、推导都用不到的规则,包括两种规则,即不可到达的和不可终止的。不可达到的:不在文法的任何规则右部出现的非终结符。不可终止的:文法中那些不能从其推出终结符号串的非终结符。第四章:词法分析1.任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析2、接口方式:(1)词法分析工作可以组织成独立的一遍,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件作为语法分析程序的输入而继续编译过程。(2)将词法分析程序设计成一个子程序,当语法分析程序需要一个单词时,则调用该子程序,从源程序中读入一些字符,直到识别出一个单词,或说直到下一个单词的第一个字符为止,这种设计方案是把词法分析

10、和语法分析程序放在同一遍,省掉了中间文件。单词符号的输出形式:二元组:(单词种别,单词自身的值)单词符号的分类:关键字,标识符 ,常数,运算符,界符等(这种分类不是唯一的)3. 正规文法与正规式的转换(若两个正规式 x 和 y 所表示的正规集相同,则说 x 和 y 等价,写作 x=y。 )4.NFA 转换为 DFA:DFA 的表示(1)用转换函数;(2)状态转换矩阵;(3)状态转换图NFA 与 DFA 的主要区别:允许有多个初始状态。允许状态在其输出边上有相同的符号(多值映射)。允许输出边上有空串符号 。NFA 特点:在给定状态和符号的情况下,不能唯一的确定下一个状态。NFA 的确定化基本方法

11、 基本方法: 边合并 ,符号合并 (NFA 转化成的 DFA 不是唯一的) 【 例 】 NFA M 如右图所示,试将其确定化为 DFA M。【解答】(1)用子集法将图所示的 NFA M 确定化为表 1。(2)对表 1 中的所有子集重新命名得到表 2 的状态转换矩阵_closure(S0)5.DFA 化简:通过消除多余状态和合并等价状态将一个 DFA M 转换成一个最小的与之等价的 DFA M多余状态是指,从该自动机的开始状态出发,任何输入串都不能到达的那个状态。在有穷自动机中,两个状态 s 和 t 等价的条件是:1)一致性条件:即 s 和 t 必须同为终态或同为非终态2)蔓延性条件:即对所有输

12、入符号,s 和 t 必须转换到等价的状态里。有穷自动机的状态 s 和 t 不等价,则称这两个状态是可区别的。 6.正规式转换为有穷自动机:r=s|tx yN(t)N(s) r=s*x yN(s)第五章:自顶向下语法分析方法求 FIRST 集,FOLLOW 集LL(1)文法判定1、语法分析是编译程序的核心部分:在词法分析的基础上,识别单词符号序列是否是给定文法的正确句子(程序) 。自上而下分析的前提:消除左递规和消除回溯。自顶向下分析法就是从文法的开始符号出发,试图推导出与输入的单词串完全匹配的句子。如果能够推导出,则该输入串是给定文法的句子。如果不能推导出,则该输入串不是给定文法的句子。2.自

13、顶向下分析法分两种:不确定的自顶向下分析法:是带有回溯的分析方法,效率低,代价高,极少使用。确定的自顶向下分析法:对文法有一定的限制,但实现简单直观,便于手工或自动构造。3.确定的自顶向下分析思想:判定是否为 LL(1)文法首符号 FIRST 集: 设设 G=( VT , VN, S, P)是上下文无关文法)是上下文无关文法FIRST()=a| a ,a VT, , V*若若 ,则规定,则规定 FIRST().后跟符号 FOLLOW 集: FOLLOW(A)=aS Aa,a VT, A VN 若若 S .A, 则规定则规定 # Follow(A).选择集合选择集合 SELECT 集:给定上下文

14、无关文法的产生式集:给定上下文无关文法的产生式 A-, A VN, V* ,若,若 ,则,则 SELECT( A- ) =FIRST( )如果如果 ,则,则 SELECT(A- )=(FIRST( )- )FOLLOW(A)4.LL(1)的含义:LL(1)文法是无二义的、LL(1)文法不含左递归第 1 个 L:从左到右扫描输入串 第 2 个 L:生成的是最左推导1 :向右看 1 个输入符号便可决定选择哪个产生式一个上下文无关文法是 LL(1)文法的充分必要条件是:对每个非终结符 A 的任两个不同产生式 A,A,满足:Select(A )Select(A)= ,其中:、 不同时推导出 注:对 L

15、L(1)文法进行语法分析时不会产生回溯。5.某些非 LL(1)文法到 LL(1)文法的等价变换:1. 提取左公因子2. 消除左递归(如果一个文法是左递归时,则不能采用自顶向下分析法。 )(1)左递归的定义 (含有左递归的文法绝对不是 LL(1)文法)一个文法含有下列形式的产生式时, AA AVN , V* 直接左递归 AB B A A, BVN , , V * 间接左递归(2)直接左递归的消除 (改为右递归)形如: A A a|(a 非 , 不以 A 打头)改写为: A A A aA | 形如: AA a1 | Aa2 | . . . | Aan | b1 | b2 | . . . | bm

16、其中,每个 a 都不等于 ,b1 , . . . , bm 均不以 A 开头。改写为: A b 1 A | b2 A | . . . | bm A A a 1 A | a2 A | . . . | an A | SSa Sb SbS SaS| E E + TT T T * FFF ( E )i E T EE + T ET F TT * F TF ( E )i 6不确定性分析思想:(1)由于相同左部的产生式的右部 FIRST 集交集不为空而引起回塑。 S-xAy A-ab|a(2)由于相同左部产生式的右部存在能 的,且非终结符 FOLLOW 集中含有其他产生式右部 FIRST 集的元素。1)S-

17、aAS 2)S-b 3) A-bAS 4)A- FOLLOW(A)=a,b(3)由于文法含有左递归而引起回溯7.确定的自顶向下分析方法:递归子程序法、预测分析法。8.预测分析法基本思想 :从左到右扫描源程序,直接根据:预测分析器构成:预测分析程序,先进后出栈,预测分析表与文法有关第七章:LR 分析LR(0)分析表识别活前缀的 DFA分析过程对输入串的分析过程(已知文法的分析表)LR 分析法:是一种规范规约过程LR(k)含义L :从左到右扫描输入符号R :最右推导对应的最左归约 (反序完成最右推导)k :超前读入 k 个符号,以便确定归约用的产生式LR(0)项目分类移进项目,形如 A a,a 是

18、终结符, , V * 以下同 【例】 S bBB 待约项目,形如 A B 【例】 Sb BB SbB B 归约项目,形如 A 【例】 SbBB 接受项目,形如 S S 第八章:1.语义处理的两个功能:(1)审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。(2)执行真正的翻译,生成中间代码或目标代码。2.属性文法:一个属性文法包含一个上下文无关文法和一系列语义规则,这些语义规则附在每个产生式上。文法符号的属性:单词的含义,即与文法符号相关的一些信息。如,类型、值、存储地址等。一个属性文法是一个三元组 A=(G, V, F)G:上下文无关文法。V:属性的有穷集。每个属性与文法的

19、一个终结符或非终结符相连。属性与变量一样,可以进行计算和传递。F:关于属性的断言或谓词(一组属性的计算规则 )的有穷集。断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性。综合属性:若产生式左部的单非终结符 A 的属性值由右部各非终结符的属性值决定 , 则 A的属性称为综合属性。 继承属性:若产生式右部符号 B 的属性值是根据左部非终结符的属性值或者右部其它符号的属性值决定的,则 B 的属性为 继承属性。在两种情况下,都说属性 b 依赖于属性 c1,c2,ck(1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。(2) 终结符只有综合属性,没

20、有继承属性,它们由词法程序提供。在计算时: 综合属性沿属性语法树向上传递;继承属性沿属性语法树向下传递。 3.语法制导翻译:是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。语法制导翻译实现:对单词符号串进行语法分析,构造语法分析树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各结点处按语义规则进行计算。4.中间代码:1、是复杂性介于源程序语言和机器语言的一种表示形式。2、一般,快速编译程序直接生成目标代码。3、为了使编译程序结构在逻辑上更为简单明确,常采用中间代码,这样可以将与机器相关的某些实现细节置于代码生成阶段仔细处理,并且可以在中间代码一级进行优化工作,使得代

21、码优化比较容易实现。何谓中间代码:源程序的一种内部表示,不依赖目标机的结构,易于代码的机械生成。为何要转换成中间代码逻辑结构清楚;利于不同目标机上实现同一种语言。便于移植,便于修改,便于进行与机器无关的优化。中间代码的几种形式:逆波兰记号 ,三元式和树形表示 ,四元式 逆波兰记号:把运算分量(操作数 )写在前面,把运算符写在后面的表示法,又称后缀表示法。中缀表达式向逆波兰表达式转换第十章:运行时的存储区为了使目标程序能够运行,编译程序要从操作系统中得到一块存储区,以使目标程序能够在其上运行。运行时的存储区划分目标区:存放目标代码。代码区(code)静态数据区(static data ):编译时

22、能确定所占用空间的数据。栈区和堆区(stack and heap):可变数据及管理过程活动的控制信息。存储分配方案策略:静态存储分配;动态存储分配:栈式、 堆式。 静态存储分配1、基本策略在编译时就安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址。2、适用的分配对象:子程序的目标代码段;全局数据目标(全局变量)3、静态存储分配的要求:不允许递归调用,不含有可变数组。FORTRAN 程序是段结构,不允许递归,数据名大小、性质固定。 是典型的静态分配动态存储分配 1、如果一个程序设计语言允许递归过程、可变数组或允许用户自由申请和释放空间,那么,就需要采用动态存储管理技术。2、两种动

23、态存储分配方式:栈式,堆式栈式动态存储分配分配策略:将整个程序的数据空间设计为一个栈。【例】在具有递归结构的语言程序中,每当调用一个过程时,它所需的数据空间就分配在栈顶,每当过程工作结束时就释放这部分空间。过程所需的数据空间包括两部分一部分是生存期在本过程这次活动中的数据对象。如局部变量、参数单元、临时变量等;另一部分则是用以管理过程活动的记录信息(连接数据) 。活动记录(AR)一个过程的一次执行所需要的信息使用一个连续的存储区来管理,这个区 (块)叫做一个活动记录。构成1、临时工作单元;2、局部变量;3、机器状态信息;4、存取链;5、控制链;6、实参;7、返回地址第十一章:什么是代码优化所谓

24、优化,就是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加快或占用存储空间减少。优化原则:等价原则:经过优化后不应改变程序运行的结果。 有效原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小。 合算原则:以尽可能低的代价取得较好的优化效果。优化分类:局部优化,循环优化,全局优化常见的优化技术(1) 删除多余运算(删除公共子表达式 ) (2) 代码外提: 是针对循环的(3)强度削弱; 把执行时间较长的运算替换为执行时间较短的运算(4)变换循环控制条件 (5)合并已知量与复写传播 (6)删除无用赋值基本块定义程序中只有一个入口和一个出口的一段顺序执行的

25、语句序列,称为程序的一个基本块。对四元式序列,各个基本块的入口语句是:(1)代码序列的第一个语句。 (2)转移语句的目标语句。 (3)转移语句的下一条语句。例子:(1) read (C)(2) A:= 0(3) B:= 1(4) L1: A:=A + B(5) if B= C goto L2(6) B:=B+1(7) goto L1(8) L2: write (A)(9) halt必经结点在程序流图中,对任意结点 m 和 n,如果从流图的首结点出发,到达 n 的任一通路都要经过 m,则称 m 是 n 的必经结点,记为 m DOM n。必经结点集:流图中结点 n 的所有必经结点的集合称为结点 n

26、 的必经结点集,记为 D(n)。回边:假设 a b 是流图中一条有向边,如果 b DOM a,则称 ab 是流图中的一条回边。循环(依据回边判断)1、给出一个回边 nd,定义这个边的( 自然)循环是 d 加上所有不经过 d 能到达 n 的结点;2、d 是这个循环的首结点。 【 例 】 求出左图的所有回边。【解答】(1) 66,因为 D(6)=1,2,4,6,所以 6 DOM 6,故 66 是回边;(2) 74,因为 D(7)=1,2,4,7,所以 4 DOM 7,故 74 是回边;(3) 42,因为 D(4)=1,2,4,所以 2 DOM 4,故 42 是回边。容易看出,其它有向边都不是回边。 例二:求回边和循环 回边 4 3(3 DOM 4)循环:3,4,5,6,7,8,10回边 7 4( 4 DOM 7 )循环:4,5,6,7,8,10回边 107 ( 7 DOM 10 )循环: 7,8,10回边 8 3 (3 DOM 8)循环:3,4,5,6,7,8,10 1243576

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


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

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

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