ly.编译原理复习要点(2011.6.7).ppt
《ly.编译原理复习要点(2011.6.7).ppt》由会员分享,可在线阅读,更多相关《ly.编译原理复习要点(2011.6.7).ppt(30页珍藏版)》请在冰豆网上搜索。
西北工业大学林奕1编译原理知识点回顾林奕西北工业大学2011年6月7日西北工业大学林奕2要点概述o要点分类:
n基本概念n编译器结构和组织知识点n算法、模型和机制n执行过程的理解n结果表示西北工业大学林奕3要点概述(续1)o重要定义和基本概念的辨析和掌握n基本定义、概念n算法相关的基本定义和概念o着重掌握各种算法、模型和机制西北工业大学林奕4第1章绪论o低级语言、高级语言等的概念o语言的处理方式:
编译,解释o编译器组织结构n以此为线索,理清各章算法和数据结构西北工业大学林奕5掌握阶段划分和各阶段主要完成的任务词词法法分分析析程程序序语语法法分分析析程程序序语语义义分分析析程程序序中中间间代代码码生生成成代代码码优优化化程程序序目目标标代代码码生生成成信息表管理程序信息表管理程序错误检查和处理程序错误检查和处理程序源源程程序序目目标标代代码码西北工业大学林奕6第2章要点概述o第2章的概念、算法和模型n基本概念:
文法、语言、二义性及判定、语言等价条件、推导、归约、规范推导与归约、短语、直接短语、句柄等n给定语言、文法的相互转化n推导/归约的机制n文法化简算法n语言、文法的分类模型及其包含关系西北工业大学林奕7第2章要点概述:
文法分类o文法分类n每类的定义,对应的语言,自动机n文法和语法、词法分析的关系:
o3型文法:
正规文法词法表示o2型文法:
前后文无关文法语法表示n其他o递归文法和无限语言n后面章节有递归的消除算法西北工业大学林奕8第2章要点概述:
推导、归约o推导和归约(规范推导和规范归约)n最左推导n最左归约和最右推导o语法树n给定句子/句型:
能够通过最左推导/最右推导/最左归约绘制语法树o二义性和语法树、推导、归约的关系n语法树不唯一n存在至少两个不同的最左推导/归约序列殊途同归n二义性的充分条件:
文法既存在左递归,又存在右递归西北工业大学林奕9第2章要点概述:
推导、归约(续)o短语和句柄(2.3.3节)n短语:
通过语法树找短语较为方便。
n直接短语:
n句柄:
最左直接短语。
最右推导每步被推导的部分即可看出句柄。
西北工业大学林奕10第2章要点概述:
文法化简o文法的化简和改造的算法必须掌握o思路:
n先看有无-产生式:
若有则删除,若无则做其他化简。
o
(1)消除无用符号和无用产生式(有始有终)nAA的无效产生式必须删除。
n算法2.1(有终):
从直接得到终结符的产生式开始,逆向推理。
剔除得不到终结符的产生式和符号。
n算法2.2(有始):
对算法2.1的结果,从开始符S正向推理。
提出不能从S推出的符号和产生式。
n算法执行顺序:
算法2.1算法2.2,并删除AAo
(2)-产生式的消除n两类,语言含和语言不含n算法2.4是产生式展开的算法;算法2.5处理西北工业大学林奕11消除-产生式的算法关系L(G)L(G)算法算法2.3算法算法2.4算法算法2.5消除消除产产生式生式仅仅S西北工业大学林奕12第3章要点概述o第3章的算法和模型nDFA、NFA模型n文法NFA的两个算法(3.2节)n子集法实现NFADFA的转化o该算法可处理-NFAo说明:
-闭包的概念在LR分析中有所应用n区间法进行DFA的最小化n正规式和正规集:
根据文法写出正规式,根据正规式给出NFAo模型的相互转化关系(不可忽视)第3章中不同模型的相互转化关系正规文法正规文法NFA正规式正规式654312DFA最小化最小化87o不仅掌握书上给出的转换算法o而且能根据模型等价关系实现相互转换o最小DFA的唯一性西北工业大学林奕14第4章要点概述o第4章的算法和模型o
(1)自顶向下分析n要求和目标:
o无左递归o避免回溯(消除左因子)n消除左递归的算法o直接左递归的消除o间接左递归可用方程法消除西北工业大学林奕15第4章要点概述:
LL
(1)文法o
(1)自顶向下分析(续)nLL
(1)文法的三个条件o根据消除回溯这一要求,理解其条件的本质o无回溯:
意味着每步可确定唯一的产生式进行推导nLL
(1)文法相关算法o求First集的算法o求Follow集的算法oLL
(1)分析表的构造算法,并会使用分析表进行分析。
oLL
(1)文法的条件:
分析表不存在冲突项。
o递归下降算法也要求掌握n非LL
(1)文法的改造(消除左递归,提取左因子)nLL
(1)文法的一些结论(课本4.1.5节最后)西北工业大学林奕16第4章要点概述:
优先分析法o
(2)优先分析法n简单优先分析:
o给定文法,能够写出优先矩阵o判断条件:
优先矩阵无冲突项目n算符优先分析(理解最左素短语):
o给定文法,能够写出优先矩阵o理解如何通过最左素短语进行推导(不是严格的最右推导)o判断条件:
优先矩阵无冲突项目西北工业大学林奕17第4章要点概述:
优先分析法(续)o
(2)优先分析法(续)n优先函数的概念nBell法(有向图)求优先函数n矩阵算法不要求西北工业大学林奕18第4章要点概述:
LR(0)分析法o(3)LR分析法(本节分值一般不低于20分)o和LL
(1)一样,以消除回溯为目标o给定任何一个LR分析表,均能给出归约分析过程nLR(k)分析法的结论(课本pp.144)nLR分析器工作原理o给定分析表,要求能够用其分析句子o分析过程:
移进,归约/转移,出错n构造LR(0)文法的DFA和分析表o活前缀的概念:
给判断哪些是活前缀oDFA构造:
基本项目,闭包,状态转换oLR(0)判断条件:
分析表中没有冲突西北工业大学林奕19第4章要点概述:
SLR
(1)分析法o(3)LR分析法(必须完全掌握)(续1)nSLR
(1):
oLR(0)分析表构造算法条件过于宽松的问题。
因此某些场合导致回溯(分析表中的冲突导致归约时存在多种归约方式)。
oSLR
(1)构造DFA和LR(0)一样。
oSLR
(1)在确定归约项目时要求比LR(0)更严格。
LR(0)毫无限制,SLR
(1)要求在Follow集中。
oSLR
(1)文法判断条件:
分析表无冲突项西北工业大学林奕20第4章要点概述:
LR
(1)分析法o(3)LR分析法(必须完全掌握)(续2)nLR
(1)分析法:
oSLR
(1)的条件仍过于宽松。
LR
(1)的条件比Follow集更为严格!
oLR
(1)的条件:
不仅是Follow集中的符号,而且必须在句型中(即*A*b属于当前文法的某个句型)。
o概念:
LR
(1)项目集和对活前缀有效。
要求深刻理解对活前缀有效的概念,能够给出证明。
o构造LR
(1)的DFA:
LR
(1)项目闭包是关键。
o根据DFA构造LR
(1)分析表(课本pp.161,4步)。
oLR
(1)文法判断条件:
分析表无冲突项。
西北工业大学林奕21第4章要点概述:
LALR
(1)分析法o(3)LR分析法(必须完全掌握)(续3)nLALR
(1)分析法o理解同心集的概念o能够根据LR
(1)的DFA,通过合并同心集得到LALR
(1)的DFAo各LR类分析算法的差别与识别能力西北工业大学林奕22第4章要点概述:
LR分析法(续4)o课本pp.171,给出了关于LR(k),LL(k)等的若干结论西北工业大学林奕23第5章要点概述:
基本概念o基本概念(具体见课本):
n属性文法,翻译文法,属性翻译文法,波兰翻译文法,L属性文法,S属性文法n继承属性,综合属性,n加注语法树西北工业大学林奕24第5章要点概述:
中间语言o逆波兰表示法(必须掌握以下两点):
n表达式的逆波兰表示n控制语句的逆波兰表示o四元式,三元式的格式o其他表示法(了解)西北工业大学林奕25第5章要点概述:
常见语法结构的翻译o算术表达式o布尔表达式o常见控制结构的属性翻译文法n对于常见控制结构(或其简单变形),应能自行编写语义子程序o要求:
n自己编写语义程序n给定语句,能翻译成结果四元式形式西北工业大学林奕26第5章要点概述:
其他o需要基本了解的概念n数组及下标变更处理要点n了解过程说明、调用的处理要点n了解说明语句的处理要点西北工业大学林奕27第6章要点概述o了解符号表的作用和使用范围o掌握分程序嵌套结构的建表方法o了解符号表应有哪些内容西北工业大学林奕28第7章要点概述o了解常见内存分配方法及其适用语言n栈,堆o活动记录:
用途、内容,生存周期o静态分配的优化算法应用西北工业大学林奕29第8章要点概述o窥孔优化的基本知识o基本块的划分算法及应用n概念:
基本块n算法:
基本块划分算法(产生流程图)o掌握用DAG图进行基本块优化技术nDAG图的定义n利用DAG进行优化的方法n能够将优化后的DAG转换为结果四元式序列o循环的定义及相关概念n概念:
必经节点集、控制结点树、回边n算法:
循环查找算法o了解循环优化的项目西北工业大学林奕30预祝大家获得优异的成绩!