编译原理第2章自动机理论.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第2章自动机理论

第2章 自动机理论基础 本章将介绍正规文法和有穷自动机之间的关系,所涉及的内容是编译中词法分析技术和自动生成词法分析程序的理论。 教学要求 掌握:正规式,DFA的概念,NFA的概念 理解:将DFA 转换为NFA,正规文法与有穷自动机间的转换 重点:正规式构造DFA,DFA最小化 难点:正规表达式构造DFA 正规式: (a?b)? 正规集: {? ,a,b,aa,ab ……所有由a和b组成的串} 正规式:(a?b)? (aa?bb)(a?b)? 正规集:{??上所有含有两个相继的a或两个相继的b组成的串} 讨论下面两个例子 例1 令?={l,d},则?上的正规式 r=l(l?d)?定义的正规集为: {l,ll,ld,ldd,……},其中l代表字母,d代表数字,正规式 即是 字母(字母|数字) ? ,它表示的正规集中的每个元素的模式是“字母打头的字母数字串”,就是Pascal和多数程序设计语言允许的标识符的词法规则. 若两个正规式e1和e2所表示的正规集相同,则说e1和e2等价,写作e1=e2。 例如: e1= (a?b), e2 = b?a 又如: e1= b(ab)? , e2 =(ba)?b e1= (a?b)? , e2 =(a??b?)? 1、单词的构成规则用状态转换图表示 一个状态图可用于识别一定的字符串,大多数程序设计语言的单词符号都可以用转换图来识别。 识别过程是:从初始状态0开始,若读入一个字母,转入1状态,若再读入字母或数字,仍处于1状态,否则转向2状态,结束一个标识符的识别过程。状态上的*表示多读入一个符号。 例:证明t=baab被下图的DFA所接受。 f(S,baab)=f(f(S,b),aab) = f(V,aab)= f(f(V,a),ab) =f(U,ab)=f(f(U,a),b) =f(Q,b)=Q Q属于终态。 得证。 DFA的确定性表现在: 对任何状态s ∈S,在读入了输入符号a ∈ Σ 之后,能够唯一地确定下一个状态 映射函数δ:S×Σ→S是一个单值函数 从状态转换图来看,若字母表Σ含有n个输入字符,那末任何一个状态结点最多有n条弧射出,而且每条弧以一个不同的输入字符标记。 (1)DFA任何状态都没有ε转换,即没有任何状态可以不进行输入符号的匹配就直接进入下一个状态; (2)DFA对任何状态S和任何输入符号a,最多只有一条标记为a的边离开S,即转换函数δ:S ?Σ? S是一个单值部分函数。 (3)DFA的初态唯一,NFA的初态为一集合。 例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z} ∑*上的符号串t被NFA M接受(识别): 对于Σ*中的任何一个串t,若存在一条从某一初态结点到某一终态结点的通路,且这条通路上所有弧的标记字依序连接成的串(不理采那些标记为ε的弧)等于t,则称t可为NFA M所识别(读出或接受)。 若M的某些结点既是初态结点又是终态结点;或者存在一条从某个初态结点到某个终态结点的道路,其上所有弧的标记均为ε,那么空字ε可为M所接受。 最小状态DFA的含义: 1.没有多余状态(死状态) 2.没有两个状态是互相等价(不可区别) 3、等价的方法(分割法) 方法:将DFA的状态分割成一些互不相交的子集。把一个DFA(不含多余状态)的状态分成一些不相交的子集,使得任何不同的两子集的状态都是可区别的,而同一子集中的任何两个状态都是等价的。 合并状态注意: 例4:将下图中的DFA M最小化。 正规式和FA之间也可以互相转换,转换的方法是从已知的正规式先构造出等价的ε-NFA(本节),去掉ε-NFA中的空动作变换为不含ε迁移的NFA,然后再把NFA转化为DFA,最后再对DFA化简,求得最小DFA。 本章小结 词法分析程序是编译第一阶段的工作,它读入字符流的源程序,按照词法规则识别单词,交由语法分析程序接下去。 本章讲述了词法分析程序设计原则,并介绍了分别作为正规集的描述机制和识别机制的正规式和有穷动机。 正规表达式在编译原理中的作用特别大,要将其概念和用法掌握。 - ab ba a|b a,b x y ? - a|b a+b+abba x y ? (a+b+abba)*(a+b) x y 所以 L(R) = (a+b+abba)*(a+b) =(a+b)*(a+b)=(a+b)+ 例5:L(M) 如下图,求L(R) . - + abb bb ab ba a,b a ? 解: ? - + abb bb

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档