- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理文字总结
1. 高级程序设计语言的翻译主要有两种方式:编译和解释。
2. 编译过程概述:
词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或符号)如基本字,标识符,常数,算符和界符。
语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如短语,子句,句子,程序段和程序等
语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。包括静态语义检查和中间代码的翻译。
优化:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
目标代码生成:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。
编译程序结构框图
文法是表述语言的语法结构的形式规则。
4. 所谓上下文无关文法是这样一种文法,它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。 一个上下文无关文法G包括四个组成部分:一组终结符号,一组非终结符号,一个开始符号,以及一组产生式。
形式上说,一个上下文无关文法G是一个四元式(VT, VN,S, &)其中 VT是一个非空有限集,它的每个元素称为终结符号; VN是一个非空有限集,它的每个元素称为非终结符号, VT∩VN =⊕; S是一个非终结符号,称为开始符号;是一个产生式集合,每个产生式的形式是P→a,其中P属于VN,a属于(VT∪VN)*。开始符号S至少必须在某个产生式的左部出现一次。
推导每前进一步总是引用一条规则(产生式)。
假定G是一个文法,S是它的开始符号。如果S*a,则称a是一个句型(0步或若干步)。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为L(G)。L(G)={a|S+aa∈VT*} 例如终结符号串(i*i+i)是文法(2.1)的一个句子。
从一个句型到另一个句型的推导过程往往不是唯一的。所谓最左推导是指任何一步ab都是对a中最左非终结符进行替换的。同样可定义最右推导。
一颗语法树表示了一个句型种种可能的(但未必是所有的)不同推导过程,包括最左(最右)推导。这样的一颗语法树是这些不同推导过程的共性抽象,是它们的代表。一个句型不一定只对应唯一的一棵语法树,也就是不一定只有唯一的一个最左(最右)推导。
某文法如果存在某个句子对应两棵不同的语法树(证明一个文法是二义的),则说这个文法是二义性文法。或者说,若一个文法中存在某个句子,有两个不同的最左推导或最右推导,则该文法是二义的。
文法的二义性和语言的二义性是两个不同的概念。
二义性问题是不可判定的,即不存在一个算法,它能在有限步骤内,确切的判定一个文法是否为二义的。
形式语言鸟瞰:文法分为4种:0型,1型,2性和3型
(1)0型文法也称短语文法,0型文法的能力相当于图灵机,任何0型语言就是递归可枚举的
(2)1型文法也成为上下文有关文法。对非终结符进行替换的时务必考虑上下文,并且一般不允许替换成空串e
(3)2型文法也称上下文无关文法,非终结符的替换可以不必考虑上下文。
(4)3型文法也称正规文法,包括右线性文法(非终结符在右边)和左线性文法。
14.一个确定有限自动机(DFA)M是一个五元式,M=(S,?,d,S0,F),
S :有限状态集,它的每个元素称为一个状态。
? :有穷字母表,它的每个元素称为一个输入字符。
d :状态转换函数, S ′ ?? Sè{^} d是单值全映射函数;
S0 :唯一的初态, S0 ? S
F :终态集(可空),FíS
一个DFA可以用一个矩阵表示,行表示状态,列表示输入字符,矩阵元素表示d(s,a)的值。这个矩阵称为状态转换矩阵。
一个DFA也可表示成一张确定的状态转换图。 对于?*中的任何字a,若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字等于a,则称a可为DFA M所识别(读出或接受)。 若M的初态结点同时又是终态结点,则空字e可为M所识别。DFA M所能识别的字的全体记为 L(M)。
一个非确定有限自动机(NFA)M是一个五元式,M=(S,?,d,S0,F),
S :有限状态集,它的每个元素称为一个状态。
? :有穷字母表,它的每个元素称为一个输入字符。
d :一个从S ′ ?到S的子集的映照, S ′ ??2S
S0 :非空初态集, S0 ? S
F :终态集(可空),FíS
有限自动机中?若有e则为NFA。 状态图中若某一状态输入某字符转换至多个状态则为NFA。 DFA是NFA的特例。对于每个NFA M存在一个DFA M”,使L(M)=L(M”)。NFA确定化为DFA的方法:子集法(P49-50)(必定在有限步内完成)
所谓自上而下语法分析,
文档评论(0)