编译原理chapter3(精品·公开课件).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 词法分析程序与语法分析程序的接口方式 词法分析程序的输出 将词法分析工作分离的考虑 有穷自动机 确定的有穷自动机(DFA) 不确定的有穷自动机(NFA) NFA-DFA的转换 确定有穷自动机的化简 ?-closure({0})={0,1,2,4,7},令为T0,未标记加入C 1. 标记T0 ?-closure(move(T0,a))= ?-closure({3,8})={3,8,6,1,2,4,7},令为T1,未标记加入C; ?-closure(move(T0,b))= ?-closure({5})={5,6,1,2,4,7},令为T2,未标记加入C; 2. 标记T1 ?-closure(move(T1,a))= ?-closure({3,8})={3,8,6,1,2,4,7},即为T1; ?-closure(move(T1,b))= ?-closure({5,9})={5,9,6,1,2,4,7},令为T3 ,未标记加入C 3. 标记T2 ?-closure(move(T2,a))= ?-closure({3,8})={3,8,6,1,2,4,7},即为T1; ?-closure(move(T2,b))= ?-closure({5})={5,6,1,2,4,7},即为T2; 4. 标记T3 ?-closure(move(T3,a))= ?-closure({3,8})={3,8,6,1,2,4,7},即为T1; ?-closure(move(T3,b))= ?-closure({5,10})={5,10,6,1,2,4,7},即为T4 ,未标记加入C 5. 标记T4 ?-closure(move(T4,a))= ?-closure({3,8})={3,8,6,1,2,4,7},即为T1; ?-closure(move(T4,b))= ?-closure({5})={5,10,6,1,2,4,7},即为T2; x 01* 1 y x y 0 1 j 1* x y 0 1 j ? k 1 ? 分解正规式r的方式不止一种 正规文法和有穷自动机间的转换 正规文法和有穷自动机间也可以建立等价转换,采用下面的规则可从正规文法G直接构造一个有穷自动机NFAM,使得L(M)=L(G): 1)M的字母表和G的终结符集相同; 2)为G中的每个非终结符生成M的一个状态,G的开始符号S是M开始状态S; 3)增加一个新状态Z,作为NFA的终态; 4)对G中的形如A-tB,其中t为终结符或?,A和B为非终结符的产生式,构造M的一个转换函数f(A,t)=B; 5)对G中形如A-t的产生式,构造M的一个转换函数f(A,t)=Z NFA m可用状态转换图表示 含有m个状态和n个输入字符的NFA的状态转换图:含有m个状态结,每个结可射出若干条弧与别的结相连接,每条弧用Σ中的一个字符作标记,整个图至少含有一个初态结及若干个终态结。 例 对Σ*中的任何字符串t,若存在一条从某一初态结到某一终态结的道路,且这条路上所有弧的标记字依序连接成的串等于t,则称t可为NFA M所接受,若M的某些初态结同时又是终态结,或存在一条从某个初态结到某个终态结的ε道路,则空字可为M所识别(接受) NFA M所能识别的字符串 DFA是NFA的特例 对于每个NFA M,存在一个DFA M`,使得L(M)=L(M`)(从NFA构造DFA) 对任何两个有穷自动机M和M`,如果L(M)=L(M`),则称M和M`是等价的。(DFA化简) 定理 对任何一个NFA m,都存在一个 DFA m’,使L(m’)=L(m) 或者说,设L为一个由不确定的有穷自动机接受的集合,则存在一个接受L的确定的有穷自动机。 转换思想:用确定的m’的一个状态对应不确定的m的一个状态集合,用这种方法,能从一个NFA m构造一个DFA m’,称作子集构造法。 NFA-DFA的转换 从NFA的矩阵表示可知,表项通常是一状态集,而在DFA的矩阵表示中,表项是一个状态,NFA到相应的DFA的构造的基本思想是让DFA的每一个状态对应NFA的一组状态(状态子集)。即让DFA使用它的一个状态去记录NFA读入一个输入符号后可能到达的所有状态。也即,在读入输入符号串a1a2…an之后,该DFA处在这样一个状态,该状态表示这个NFA的状态的一个子集T,T是从NFA的开始状态沿着某个标记为a1a2…an的路径可以到达的那些状态构 成的。 NFA-DFA的转换的基本思想 1.状态集合I的a弧转换定义 状态集合I的a弧转换,表示为move(I,a),定义为一状态集J,其中J是所有那些可从I中的某一状态经过一条a弧而到达的状态集合。对于一个NFA M=(

文档评论(0)

夏天 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档