编译原理第04章 词法分析.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文档。上传文档
查看更多
例4.11 为R=(a|b)*abb构造NFA N,使得L(N)=L(R)。 解: 从左到右分解R,令r1=a,第一个a,则其NFA 的状态转换图如下: 令r2=b,则其NFA 的状态转换图如下: 例4.11 令r3=r1|r21,则其NFA 的状态转换图如下: 令r4=r3,则其NFA 的状态转换图如下: 例4.11 令r5=a,令r6=b,令r7=b,令r8=r5r6, 令r9=r8r7,则其NFA 的状态转换图如下: 令r10=r4r9,则最终得到的NFA N即为所求。 b 1 2 4 a b 10 a 0 3 5 6 7 8 9 b ? ? ? ? ? ? ? ? 例4.11a 构造NFA的形式描述 ①R=φ,构造任一具有空终态集的NFA M。 ②R=ε,构造的NFA M=({k0},∑,f,k0,{k0}),其中f(k0,a)对于所有a∈∑都没定义。 ③R=a,a∈∑,构造的NFA M=({k0,k1},∑,f,k0.{k1}),其中f(k0,a)=k1。 ④R=R1|R2,将步骤①②③分别应用到R1,R2产生M1=(K1,∑,f1,k1,F1),M2=(K2,∑,f2,k2,F2),其中K1,K2不相交。构造的NFA M=(K1∪K2∪{k},∑,f,k,F),k是新增加的状态符号,f包含f1和f2,且f(k,a)=f1(k1,a)∪f2(k2,a)。若k1?F1且k2?F2则F=F1∪F2,否则F=F1∪F2∪{k}。 ⑤R=R1.R2将步骤①②③分别应用到R1,R2产生M1=(K1,∑,f1,k1,F1),M2=(K2,∑,f2,k2,F2),其中K1,K2不相交。构造的NFAM=(K1∪K2,∑,f,k1,F2),令k=(K1∪K2,f包含f1和f2,且 f(k,a)=f1(k,a),当k?F1时; f(k,a)=f2(k,a),当k∈K2时; f(k1,e)=k2。 ⑥R=R1*,将步骤①②③分别应用到R1,产生M1=(K1,∑,f1,k1,F1),构造的NFA M=(K1∪{k0,F0},∑,f,k0,F0)。其中k0,F0是新增加的两个状态,令: k=K1∪{k0,F0} f(k,a)=f1(k,a),当k?F1时; f(k0,ε)=f(F1,ε)={k1,,F0}。 正规文法和有穷自动机间的转换 采用下面的规则从正规文法G直接构造一个有穷自动机NFA M,使得L(M)=L(G): 字母表与G的终结符集相同; 为G中的每个非终结符生成M的一个状态,(不妨取称相同的名字)G的开始符号是开始状态S; 增加一个新状态Z,作为NFA的终态; 对G中的形如A→tB的产生式(其中t为终结符或ε,A和B为非终结符),构造M的一个转换函数f(A,t)=B; 对G中形如A→t的产生式,构造M的一个转换函数f(A,t)=Z。 示例: 例4.12 例4.13 例4.12:与文法G[S]等价的NFA M G[S]:S→aA S→bB S→ε A→aB A→bA B→aS B→bA B→ε S A B Z a a b b a ε ε b 例4.13:与NFA M等价的文法G[S] G=({A,B,C,D},{a,b},P,A)其中P为: A →aB A →bD B →bC C →aA C →bD C→ ε D →aB D →bD D → ε b A B C a a a b b b D 0313 * 09310 0309 * 不确定的有穷自动机NFA 定义 不确定的有穷自动机NFA N=(K,∑,f,S,Z),其中: K是一个有穷集,它的每个元素称为一个状态; Σ是一个有穷字母表,它的每个元素称为一个输入符号; f为从K×∑*到K的子集的映射; S?K是初始状态集; Z?K为终止状态集。 示例:例4.7 字符串在NFA上的识别 NFA和DFA的等价性 例4.7 一个NFA M=({0,1,2,3,4},{a,b},f,{0},{2,4}),其中 f(0,a)={0,3} f(0,b)={0,1} f(1,b)={2} f(2,a)={2} f(2,b)={2} f(3,a)={4} f(4,a)={4} f(4,b)={4} 状态转换图如右图所示。 b 0 3 1 4 a a b a,b 2 a,b a,b 若t∈∑*,f(S,t)=P,其中S为 N的开始状态,P∈Z,Z为终态集。则称t为NFA N所接受(识别)。 对于Σ*中的任何一个串t,若存在一条从某一初态结到某一终态结的道路,且这条道路上所有弧的标记字依序连接成的串(不理采那些标记为ε的弧)等于t,则称t可为NFA M所识别(读出或接受)。若M的某些结既是初态结又是终态结,或者存在一条从某个初态结到某个终态结的ε道路,那么空字可

文档评论(0)

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

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档