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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(《编译原理》重点知识总结.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《编译原理》重点知识总结.docx

1、编译原理重点知识总结编译原理知识点总结第一章 引论第二章 高级语言及其语法描述第三章 语法分析自上而下分析第四章 属性文法和语法制导翻译第五章 语义分析和中间代码产生第六章 优化第一章 引论一编译程序 (compiler):把某一种高级语言程序等价地转换成另一种低级语言程序 ( 如汇编语言或机 器语言程序 ) 的程序二编译程序的工作的五个阶段 :词法分析、语法分析、中间代码产生、优化、目标代码产生1.词法分析任务 : 输入源程序,对构成源程序的字符串进行扫描和分解, 识别出 一个个单词符号。依循的原则:构词规则描述工具:有限自动机FOR I := 1 TO 100 DO保留字 标识符 等符 整

2、常数 保留字 整常数 保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解 成各类语法单位。依循的原则:语法规则述工具:上下文无关文法3.语义分析与中间代码产生任务: 对各类不同语法范畴按语言的语义进行初步翻译。 (变量是否定 义、类型是否正确等)依循的原则:语义规则中间代码 : 三元式,四元式,逆波兰记号,树形结构等。是一种独立 于具体硬件的记号系统。例:将 Z:=X + * Y 翻译成四元式为(1)* Y T1(2)+ X T1 T2(3):= T2 _ Z4.优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产 生更高效的目标代码。依循的原则:程序的

3、等价变换规则FOR K:=1 TO 100 DOBEGINM := I + 10 * K;END4. 目标代码产生任务 : 把中间代码变换成特定机器上的目标代码。依赖于硬件系统结构和机器指令的含义目标代码三种形式 :a)绝对指令代码 : 可直接运行b)可重新定位指令代码 : 需要连接装配c)汇编指令代码 : 需要进行汇编第二章 高级语言及其语法描述语法词法规则:单词符号的形成规则。a)单词符号是语言中具有独立意义的最基本结构。 一般包括: 常数、标 识符、基本字、算符、界符等。b)描述工具:正规式和有限自动机语法规则:语法单位的形成规则。a)语法单位通常包括: 表达式、语句、分程序、过程、函数

4、、程序等 ;c)描述工具:上下文无关文法语义语义:一组规则,用它可以定义一个程序的意义。描述方法:a) 自然语言描述:隐藏错误、二义性和不完整性b) 形式描述:无二义性完整性多数语言中,算符的优先顺序如下:乘幕(*或T)一元负(-)乘、除力、减关系符(,=, )非(?, not)与(A, &, and )或(? ,|,or,)隐含( 或imp)等值( 或epui,或 )2.3程序语言的语法描述1.几个概念:a) 考虑一个有穷字母表刀字符集b) 其中每一个元素称为一个字符c) 刀上的字(也叫字符串) 是指由刀中的字符所构成的一个有穷序列d) 不包含任何字符的序列称为空字,记为&e) 用刀*表示刀

5、上的所有字的全体,包含空字&例女口 :设刀=a , b,贝U 刀*= ,a,b,aa,ab,ba,bb,aaa,.f) 刀*的子集U和V的连接(积)定义为UV= b | U & b V 例如:设:U= a, aa , V= b, bb 那么:UV= ab, abb, aab, aabb g) V自身的n次积记为V=VVTh) 规定V= ,令V=VU V1U V2U V3 U 称V是V的闭包;记v = vv,称V是V的正规闭包。例如:设:U a, aa 那E么: U = , a, aa, aaa, aaaa, U + = a, aa, aaa, aaaa, i) 0型(短语文法,图灵机):产生式

6、形如:其中: (V T Vn) *且至少含有一个非终结符; (V T任何0型语言都是递归可枚举的。j) 1型(上下文有关文法,线性界限自动机):产生式形如:其中:| | II,仅S 例外。意味着对非终结符进行替换时务必考虑上下文, 并且,一般不允许替换成空串k) 2型(上下文无关文法,非确定下推自动机):产生式形如:A其中:A Vn; (Vt Vn)非终结符的替换可以不必考虑上下文I) 3型(正规文法,有限自动机):产生式形如:AB或A其中:*Vt; A,B Vn产生式形如:A B或A其中:*Vt; A,B Vn正规文法的能力要比上下文无关文法弱得多。四种类型描述能力比较m)上下文无关文法的定

7、义:一个上下文无关文法G是一个四元式G=(V T,Vn,S,P),其中V:终结符集合(非空)Vn:非终结符集合(非空),且Vt Vn=S:文法的开始符号,S VnP:产生式集合(有限),每个产生式形式为P , P Vn, (Vt Vn)*开始符S至少必须在某个产生式的左部出现一次例:文法 G(A) : A c|AbG(A)的语言解:L(Gi)=c , cb, ebb, ,以c开头,后继若干个bn) 定义:如果一个文法存在某个句子对应两颗不同的语法树,则说 这个文法是二义的。G(E): E i|E+E|E*E|(E) 是二义文法。o) 语言的二义性:一个语言是二义性的,如果对它不存在无二义性的

8、文法。可能存在G和G,一个为二义的,一个为无二义的。但L(G)=L(G)2.状态转换图a)概念:状态转换图是一张有限方向图。b)结点代表状态,用圆圈表示。c)状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能 出现的输入字符或字符类。d)一张转换图只包含有限个状态,其中有一个为初态,至少要有一个 终态3.正规运算符优先顺序在不致混淆时,括号可以省去,但规定算符的优先顺序为:* (闭包) (连接)| (或)4. 3型文法-正规式G 的任何产生式为A B或A其中:*Vt; a,B Vn确定有限自动机(DFA)对状态图进行形式化,则可以下定义:自动机M是一个五元式M=(S, , f, S

9、o, F),其中:a) S:有穷状态集,b) :输入字母表(有穷),c) f:状态转换函数,为S S的单值部分映射,f(s,a)=s 表示:当现行状态为s,输入字符为a时,将状态转 换到下一状态s。我们把s称为s的一个后继状态。d) So S是唯一的一个初态;e) F S :终态集(可空)。例如:DFA M=(0,1, 2, 3,a, b,f,0, 3),其中:f 定义如 下:f(0,a)=1 f(0,b)=2f(1,a)=3 f(1,b)=2f(2,a)=1 f(2,b)=3f(3,a)=3 f(3,b)=3非确定有限自动机(NFA)定义:一个非确定有限自动机(NFA) M是一个五元式M=(

10、S, , f, S 0,F),其中:1S:有穷状态集;2:输入字母表(有穷);3f:状态转换函数,为S * 2s的部分映射(非单值);4So S是非空的初态集;5F S :终态集(可空)。从状态图中看NFA和DFA勺区别:1弧上的标记可以是 *中的一个字,而不一定是单个字符;2同一个字可能出现在同状态射出的多条弧上。DFA是 NFA的特例。定义:对于任何两个有限自动机 M和M,如果L(M)=L(M),则称M与M等 价。自动机理论中一个重要的结论:判定两个自动机等价性的算法是存在的。对于每个NFA M存在一个DFA M,使得 L(M)=L(M)。亦即DFA与NFA苗述能力相同。把上述NFA确定化

11、一一采用子集法.设I是M的状态集的一个子集,定义I的-闭包-closure(l) 为:i)若 s I,则 s -closure(I);ii)若s I,则从s出发经过任意条 弧而能到达的任何状态s都属于-closure(I)即 -closure(I)=I s |从某个s I出发经过任意条 弧能到达s例:设a是 中的一个字符,定义I a= -closure(J)其中,J为I中的某个状态出发经过一条a弧而到达的状态集合。正规文法与有限自动机的等价性定理:1.对每一个右线性正规文法G或左线性正规文法G,都存在一个有限自动机(FA) M,使得 L(M) = L(G)。2.对每一个FA M,都存在一个右线

12、性正规文法 G和左线性正规文法 G, 使得 L(M) = L(Gr) = L(Gl)。335正规式与有限自动机的等价性定理:1.对任何FA 都存在一个正规式r,使得L(r)=L(M)。2.对任何正规式r,都存在一个FA M,使得L(M)=L(r)。对转换图概念拓广,令每条弧可用一个正规式作标记。 (对一类输入符号)确定有限自动机的化简对DFA M的化简:寻找一个状态数比M少的DFA M,使得L(M)=L(M )假设s和t为M的两个状态,称s和t等价:如果从状态s出发能读出某 个字 而停止于终态,那么同样,从t出发也能读出 而停止于终态;反之亦然。两个状态不等价,则称它们是可区别的。对一个DFA

13、 M最少化的基本思想:把M的状态集划分为一些不相交的子集,使得任何两个不同子集的状态是可 区别的,而同一子集的任何两个状态是等价的。最后,让每个子集选出一个代 表,同时消去其他状态。I(1)=0, 1,2 I (2) =3, 4, 5, 6la=1, 3I (11) =0, 2 I (12) =1 I (2)=3, 4, 5, 6I )=0, 2I a)=1 I b(11) =2, 5I (111) =0 I 2) =2 I (12) =1 I (2) =3, 4, 5, 6I a=3, 6 I a=4, 5第三章语法分析一一自上而下分析语法分析的方法:自下而上分析法(Bottom-up)自上

14、而下分析法(Top-down)基本思想:它从文法的开始符号出发,反复使用各种产生式,寻找匹配的推导。递归下降分析法:对每一语法变量(非终结符)构造一个相 应的子程序,每个子程序识别一定的语法单位,通过子程 序间的信息反馈和联合作用实现对输入串的识别。预测分析程序优点:直观、简单和宜于手工实现。LL分析法构造不带回溯的自上而下分析算法要消除文法的左递归性克服回溯左递归的消除直接消除见诸于产生式中的左递归:假定关于非终结符 P的规则为其中不以P开头我们可以把P的规则等价地改写为如下的非直接左递归形式:i P一般而言,假定P关于的全部产生式是PTP i | P 2 | | P m | 1 | 2|

15、| n其中,每个 都不等于 ,每个 都不以P开头那么,消除P的直接左递归性就是把这些规则改写成:2PnImP提取公共左因子: 假定关于A的规则是AT 1 I中,每个不以开头)那么,可以把这些规则改写成At A I 1 I经过反复提取左因子,就能够把每个非终结符(包括新引进者)的所有候 选首符集变成为两两不相交。LL(1)分析条件假定S是文法G的开始符号,对于G的任何非终结符A,我们定义特别是,若S ? ? ? A,则规定# FOLLOW(A)构造不带回溯的自上而下分析的文法条件1.文法不含左递归,2.对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即,若 L 1| 2|丨n贝U

16、FIRST( i) n FIRST( j) = (i j)i=1,2,.,n3.对文法中的每个非终结符A,若它存在某个候选首符集包含 ,则FIRST(A) n FOLLOW(A)=如果一个文法G满足以上条件,则称该文法 G为LL(1)文法。第四章 语法分析一一自下而上分析语法分析的方法:自下而上分析法(Bottom-up)基本思想:从输入串开始,逐步进行“归约”,直到文法 的开始符号。即从树末端开始,构造语法树。所谓归约, 是指根据文法的产生式规则,把产生式的右部替换成左部 符号。算符优先分析法:按照算符的优先关系和结合性质进行语 法分析。适合分析表达式。LR分析法:规范归约5.1.2规范归约

17、1.定义:令G是一个文法,S是文法的开始符号,假定 是文法G的一个句型,如果有*且 S A ,A则称是句型 相对于非终结符A的短语。特别是,如果有A ,则称是句型 相对于规则A 的直接短语。一个句型的最左直接短语称为该句型的句柄。2.归约采用“移进-归约”思想进行自下而上分析。基本思想:用一个寄存符号的先进后出栈,把输入符号一个一个地移进 到栈里,当栈顶形成某个产生式的候选式时,即把栈顶的这一部分替换成 (归约为)该产生式的左部符号。算符优先分析四则运算的优先规则:先乘除后加减,同级从左到右考虑二义文法文法 G(E): G(E): E i| E+E|E-E|E*E|E/E|(E)它的句子有几种

18、不同的规范规约。归约即计算表达式的值。归约顺序不同,则计算的顺序也不同,结果也 不一样。如果规定算符的优先次序,并按这种规定进行归约,则归约过程是唯一 的。起决定作用的是相邻的两个算符之间的优先关系。所谓算符优先分析法就是定义算符之间的某种优先关系,借助于这种关 系寻找“可归约串”和进行归约。算符优先文法及优先表构造一个文法,如果它的任一产生式的右部都不含两个相继 (并列)的非终结符,即不含如下形式的产生式右部:QR则我们称该文法为算符文法。约定:a、b代表任意终结符;P、Q R代表任意非终结符;代表由终结符和非终结符组成的任意序列,包括空字。假定G是一个不含-产生式的算符文法。对于任何一对终

19、结符 a、b, 我们说:1.a=b 当且仅当文法 G中含有形如 iab或 iaQb的产生式;2.ab 当且仅当G中含有形如P-Rb的产生式,而 R a或RaQ如果一个算符文法G中的任何终结符对(a, b)至多只满足下述三关系之一: a=b,ab。则称G是一个算符优先文法。从算符优先文法G构造优先关系表的算法。通过检查G的每个产生式的每个候选式,可找出所有满足 a=b的终结符对。确定满足关系 的所有终结符对:首先需要对G的每个非终结符P构造两个集合FIRSTVT(P)和LASTVT(P)FIRSTVT(P) a|P a? P Qa?,a VT Q VNab 当且仅当G中含有形如P-Rb的产生式,

20、而 R a或RaQ有了这两个集合之后,就可以通过检查每个产生式的候选式确定满足关系 和的所有终结符对。假定有个产生式的一个候选形为 aP那么,对任何 b FIRSTVT(P), 有 ab。按其定义,可用下面两条规则来构造集合 FIRSTVT(P):1.若有产生式P-a或P-Qa,J则a FIRSTVT(P);2. 若 a FIRSTVT(Q),且有产生式 P-Q,贝U a FIRSTVT(P)。练习:P133-21计算它的FIRSTVT和LASTVT2计算G的优先关系。并确定G是否是一个算符优先文法LR分析方法:把历史及展望综合抽象成状态;由栈顶的状态和现行 的输入符号唯一确定每一步工作LR分

21、析器的核心是一张分析表:ACTIONS,a:当状态s面临输入符号a时,应采取什么动作GOTO, X:状态s面对文法符号X时,下一状态是什么文法G的每个产生式的右部添加一个圆点称为 G的LR(0)项目例:如:A XYZ有四个项目:A .XYZ A A A XYZ.A 称为归约项目归约项目S .称为接受项目A .a (a VT)称为移进项目A .B (B VN)称为待约项目.例:文法G(S )S E E aA|bB A cA|d B cB|d该文法的项目有:E E aA a A aA cA c A cA d d bB b B bB cB c BcB d d 构造识别文法所有活前缀的NFA方法1.若

22、状态i为XX Xn,状态j为XX X“X .X i+1X.,则从状态i画一条标志为X的有向边到状态j ;2.若状态i为X A , A为非终结符,则从状态i画一条 边 到所有状态A .。把识别文法所有活前缀的NFA确定化。构成识别一个文法活前缀的 DFA的项目集(状态)的全体称为文法的 LR(O)项目集规范族。LR(O)分析表的构造假若一个文法G的拓广文法G的活前缀识别自动机中的每个状态(项目 集)不存在下述情况:1)既含移进项目又含归约项目,2)含有多个归约项目则称 G是一 一个LR(O)文法。分析表的ACTIONS GOT(子表构造方法:1.若项目 2 a属于I k且GO(Ik, a) =

23、Ij , a为终结符,则置 ACTIONk,a为“ sj ”。2若项目2 属于Ik,那么,对任何终结符a(或结束符#),置 ACTIONk,a为“rj ” (假定产生式 2 是文法G的第j个产生式)。3.若项目 S S属于 Ik,则置 ACTIONk,#为 “ acc”。4.若 GO(Ik,A) = Ij,A 为非终结符,则置 GOTOk,A=j。5.分析表中凡不能用规则1至4填入信息的空白格均置上“报错标按上述方法构造出的ACTION与GOT(表如果不含多重入口,则称该文法为SLR(1)文法。使用SLR表的分析器叫做一个SLR分析器。每个SLR(1)文法都是无二义的。但也存在许多无二义文法不

24、是 SLR(1)的.Ii、丨2和丨9都含有“移进一归约”冲突。FOLLOW(EH#, ), +,规范LR分析表的构造我们需要重新定义项目,使得每个项目都附带有 k个终结符。每个项目的一般形式是Af , a催ak,这样的一个项目称为一个 LR(k) 项目。项目中的aak称为它的向前搜索符串(或展望串)。向前搜索符串仅对归约项目 Af , aia2ak有意义。对于任何移进 或待约项目Af , a ia2-ak, ,搜索符串ao-ak没有作用。按上述算法构造的分析表,若不存在多重定义的入口 (即,动作冲突)的情形,则称它是文法G的一张规范的LR(1)分析表。使用这种分析表的分析器叫做一个规范的 LR

25、分析器。具有规范的LR(1)分析表的文法称为一个LR(1)文法。LR(1)状态比SLR多,LR(0) SLR LR(1) 无二义文法。第六章属性文法和语法制导翻译属性文法属性文法(也称属性翻译文法)在上下文无关文法的基础上,为每个文法符号(终结符或非终结 符)配备若干相关的“值”(称为属性)。属性代表与文法符号相关信息,如类型、值、代码序列、符号表内容等属性可以进行计算和传递语义规则:对于文法的每个产生式都配备了一组属性的计 算规则属性综合属性:“自下而上”传递信息继承属性:“自上而下”传递信息综合属性在语法树中,一个结点的综合属性的值由其子结点的属性值确定。使用自底向上的方法在每一个结点处使

26、用语义规则计算综合属性 的值仅仅使用综合属性的属性文法称 S-属性文法继承属性在语法树中,一个结点的继承属性由此结点的父结点和 /或兄弟结点的某些属性确定用继承属性来表示程序设计语言结构中的上下文依赖关系很方便 一遍扫描的处理方法一遍扫描的处理方法是在语法分析的同时计算属性值所采用的语法分析方法属性的计算次序L-属性文法适合于一遍扫描的自上而下分析S-属性文法适合于一遍扫描的自下而上分析L-属性文法和自顶向下翻译通过深度优先的方法对语法树进行遍历,计算属性文法的所有属性值LL(1):自上而下分析方法,深度优先建立语法树第七章 语义分析和中间代码产生静态语义检查类型检查控制流检查一致性检查相关名

27、字检查名字的作用域分析中间语言常用的中间语言:后缀式,逆波兰表示图表示:DAG抽象语法树三地址代码三元式四元式间接三元式逆波兰表示法不用括号。只要知道每个算符的目数,对于后缀式,不论 从哪一端进行扫描,都能对它进行唯一分解。后缀式的计算用一个栈实现。一般的计算过程是:自左至右扫描后缀式,每碰到运算量就把它 推进栈。每碰到k目运算符就把它作用于栈顶的k个项,并用运 算结果代替这k个项。布尔表达式的翻译布尔表达式的两个基本作用:用于逻辑演算,计算逻辑值;用于控制语句的条件式产生布尔表达式的文法:i E or E | E an dE | E | (E) | i rop i | i第十章优化优化:对程

28、序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。等价:指不改变程序的运行结果。有效:指目标代码运行时间短,占用的存储空间小。概述优化的三个不同级别:局部优化循环优化全局优化优化的种类:删除多余运算(或称删除公用子表达式)代码外提强度消弱变换循环控制条件合并已知量复写传播 删除无用赋值局部优化局限于基本块范围内的优化称为基本块内的优化,或称局部优化在一个基本块内通常可以实行下面的优化:删除公共子表达式删除无用赋值合并已知量临时变量改名交换语句的位置代数变换划分四元式程序为基本块的算法:1.求出四元式程序中各个基本块的入口语句:1) 程序第一个语句,或2) 能由条件转移语句或无条件转移语句转移到的语句,或3) 紧跟在条件转移语句后面的语句。循环优化对循环中的代码,可以实行:代码外提强度消弱删除归纳变量(变换循环控制条件)循环展开循环合并代码外提循环不变运算:对四元式A:=B op C,若B和C是常数,或者到达它们的 B和C的定值点都在循环外。所谓变量A在某点d的定值到达另一点u (或称变量A的定值点d到达 另一点u),是指流图中从d有一通路到达u且该通

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1