网站大量收购独家精品文档,联系QQ:2885784924

编译原理陈火旺版3章3详解.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 词法分析;词法分析与语法分析的接口方式:;词法分析的分离:;源程序的输入:;(3)超前搜索:词法分析程序在组合单词的时候,为了进一步判明情况和确定下一步要做什么以及为了处理上的方便等,常采取超前搜索的办法,即先向前读取字符和判别字符是什么,不马上处理,当情况判明后,再回来处理已读过的字符。;(4)扫描缓冲区的处理:显然,无论缓冲区设定为多大,都不能保证单词不会被它的边界打断,若有单词TEST123,可能在缓冲区中成为:;单词的输出:;例如:程序段 if i=5 then x := y;在经过词法分析器扫描后,输出的单词可表示如下: ;3.2正则文法与状态转换图 ; 一个状态转换图可用于接受(或识别)一定的符号串。在状态转换图中从初始状态到某一终止状态的序列为路。对于某一符号串β,在状态转换图中,若存在一条路产生β,则称状态转换图接受(或识别)该符号串β,否则符号串β不能被接受。能被状态转换图TG接受的符号串的集合记为L(TG),称为状态转换图所能识别的语言。 ;再如,设有字母表Σ={a,b},则有字母表Σ上的一个状态转换图如下:;二、正则文法的状态转换图表示 ;例如: 给出与正则文法G(S)等价的状态转换图。;对于左线性文法G[Z],状态转换图的表示方法如下: ;三、状态转换图的实现(p42-46) 例:识别一个简单语言的所有单词符号的状态图 见图3.3 ;3.3.1 正规式和正规集 ;正规式和正规集的定义 ; 正规式也称正则表达式,是用于描述单词的另外一个工具,也是表示正规集的工具。下面我们给出正规式和它所表示的正规集的递归定义:P46 ;其中: “ | ”读为“ 或 ”;;例如:令Σ={d , e , + , ? , ?},其中d为0~9中的数字,问:Σ上的正规式 d* (.dd*|ε)(e(+|-|ε)dd*|ε) 表示的语言是什么?;4.r(s|t)=rs|rt (s|t)r=sr|tr 分配律 ;3.3.2 有限自动机;例如:为下图所示的状态图构造确定的有限自动机。 ; 事实上,状态转换图是有限自动机的一种表示形式,假定DFA M含有m个状态,n个输入字符,那么这个状态转换图含有m个状态(结点),每个结点最多有n个弧射出,整个图含有唯一一个初态结点(冠以“?” )和若干个终态结点(用双圈表示 ),若有f(ki,a)=kj(ki∈K, kj∈K,a∈Σ),则从状态结点ki到状态结点kj画标记为a的弧。 ; 对于Σ*中的任何字符串α,若DFA M中存在一条从初态结点到某一终态结点的路,且这条路上所有弧的标记连接成的字符串等于α,则称α可以被DFA M所接受(识别)。;举例:试证baab可被下面的DFA所接受。 ;非确定的有限自动机(Nondeterministic Finite Automata);例如: 一个NFA M=({0,1,2,3,4},{a,b},f,{0},{2,4}) ;跟DFA有相似的结论:对于Σ*中的任何一个串α,若NFA M中存在一条从某一初态结点到某一终态结点的路,且这条路上所有弧的标记依次连接成的串(不理睬那些标记为ε的弧)等于α,则称α可以被NFA M所接受(识别)。若M的某些结点既是初态结点又是终态结点,或者存在一条从某个初态结点到某个终态结点的ε路,那么空串ε可被M所接受(识别)。 ;非确定的有限自动机的确定化;子集构造法 :——将NFA的一个状态子集在DFA中用一个状态表示出来。;首先介绍两个重要运算:;例如:有下图所示的NFA ,我以它为例来说明以上两个运算 。;注:幻灯片p34-38不讲,这部分按书例3.3上讲。 算法:有了以上所述两个运算,我们就可以构造NFA N的状态集K的子集从而与DFA M的状态对应,即构造若干个状态集T1,T2, …,Ti,且Ti ?K,这样就可以构成由若干个状态集 组成的子集族C ,C=(T1,T2, …,Ti) ,具体如下:;例:为下面的NFA N的状态集K构造状态子集族C。;子集族C由5个子集组成 :;例如:为下面的NFA N构造DFA M并使L(M)=L(N) ;其中转换函数D如下: ;3.3.6确定的有限自动机的最简化(最小化);(3)等价状态: 若Si为自动机的一个状态,我们把从Si出发能导出的所有符号串集合记为L(Si) ;(4)可区别状态:自动机中两个状态Si和Sj,如果它们不等价,则称它们是可区别的。 ;DFA的化简算法:对于DFA M=(S,Σ,f,S0,Z) ;例题: 将下图所示的DFA M最小化(P58) ;⑥考察G={5,6,7},因f(5,b)转向{3},而f(6,b)和f(7,b)转向{1,2},可得新划分 Π

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档