- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
复习--编译原理.doc
编译原理复习
第一章
编译原理工作的5个阶段:词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成。
词法分析的结果是识别出单词符号:基本字、标识符、赋值号、常数、算符、界符。描述词法分析的工具是正则式和有限自动机。
语法分析是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位。
源程序--词法分析器(扫描器)--单词符号--语法分析器--语法单位--语义分析和和中间代码产生器--中间代码--优化器--中间代码--目标代码生成器
在编译程序使用的表格中最重要的是符号表。
遍:是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
第二章
高级语言可以分为强制式语言(命令驱动,面向语句,如C,pascal,fortran)、作用式语言(lisp)、基于规则的语言(prolog)和面向对象语言。
语法的单词符号由词法规则所确定。
程序语言的语法单位有:表达式(描述数据运算的基本结构)、语句(从功能上说,语句大体可分为执行性语句和说明性语句两大类)、分程序、函数、过程和程序。
初等数据类型:数值数据、逻辑数据、字符数据、指针类型。
文法是描述语言的语法结构的形式规则(即语法规则)
上下文无关文法包括一组终结符、一组非终结符、一个开始符号和一组产生式。
在G的一个文法中,S是开始符,如有S =α则称α是一个句型,
最左推导是指:任何一步α = β都是对α中的最左非终结符进行替换。
例如,对于上下文无关文法G:写出句子(i*i+I) 的最左推导式
G: E-i|E+E|E*E|(E)
E= (E) = (E+E) = (E*E+E) = (i*E+E) = (i*i+E) = (i*i+i)
乔姆斯基分类法将文法分成4类:0型文法(短语文法或图灵文法对应图灵机)、1型文法(上下文有关文法对应线性界限自动机)、2型文法(上下文无关文法对应非确定的下推自动机),3型文法(右线性文法和左线性文法或正规文法对应有限自动机)
第三章
词法分析是编译的基础,语法分析是编译的核心。
词法分析:从左到右逐个字地对源程序进行扫描,产生一个个的单词符号。
单词符号的识别方法:超前搜索,超前扫描许多个字符直到能够肯定词性的地方为止
状态转换图是设计词法分析程序的一种好途径,是一张有限方向图。包含有限个状态,一个初态,至少有1个终态。
正规集(集合)是一些特殊字集,使用正规式来表示正规集。 47页
例:令Σ = {a,b,0,1}; 下面是Σ上对应的正规式和正规集。
正规式 正规集 ba* Σ上所有以b为首字母后跟任意多个a的字 a(a|b)* Σ上以a为首的字 (a|b)*(aa|bb)(a|b)* Σ上所有含有两个相继的a或两个相继的b的字 (0|1)(0|1)* Σ上的“数”的全体 确定的有限自动机(DFA)M是一个五元式 M = {S,Σ,б,So,F},S是状态集,Σ是输入字符集,б是单值映射, So是唯一的初态,F是终态集(可为空),任何状态通过一个输入字符唯一确定下一状态。
正则文法、正规式、确定的有限自动机和非确定的有限自动机在接受语言的能力上互相等价。
第四章 语法分析—自上而下分析
语言的语法结构是用上下文无关文法(从文法的开始符出发,向下推导,推出句子,主旨是为输入串寻找一个最左推导)描述的。
使用自上而下的分析法必须消除文法的左递归性,提取公共左因子(把一个文法改造成任何非终结符的所有候选首符集两两不相交)。
LL(1)文法(不含左递归、对于文法的每一个非终结符A的各个产生式的候选首符集两两不相交,若首字符中含有ε,则first 交 follow 为空集)可用递归子程序方法或预测分析方法来实现确定的自上而下的语法分析。
左递归的消除 69页
预测分析表 76页
利用分析表对输入串进行预测分析 78页
第五章 语法分析—自下而上分析
自下而上分析是从输入串开始,逐步进行归约,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上归约到根结。精确定义可归约串是自下而上分析的关键。
移进归约:将输入符号顺序进栈,当栈顶形成某个产生式的一个候选式时,将栈顶的这部分替换成(归约)该产生式的左部符号。
规范归约实际上是最右推导的逆过程,用句柄进行归约,在移进过程中,当发现栈顶呈现句柄时就用相应的左部符号进行替换。关键问题是寻找句柄。
短语:短语------令G是一个文法,S是文法的开始符号,假定αβδ是文法G的一个句型,如果有SαAδ且Aβ,则称β是句型αβδ相对非终结符A的短语。一步推出A=β,则成为直接短语,句柄是最左直接短语。短语中至少还有一个终结符。
规范归约步骤 88页
算符优先分析法:定义终结符之间的某种优先关系。
假设G是一个不含
原创力文档


文档评论(0)