编译原理_第三章.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文档。上传文档
查看更多
编译原理_第三章

P49,图3.6 非确定优先自动机 补充例题 注:幻灯片p34-38不讲,这部分按书例3.3上讲。 算法:有了以上所述两个运算,我们就可以构造NFA N的状态集K的子集从而与DFA M的状态对应,即构造若干个状态集T1,T2, …,Ti,且Ti ?K,这样就可以构成由若干个状态集 组成的子集族C ,C=(T1,T2, …,Ti) ,具体如下: (1)首先,令T=ε-closure(K0)作为C中的唯一成员(开始以前C中为空),并且它是未标记的,其中K0为NFA N的初态集 (2)While(C中存在尚未标记的子集T)do begin 标记T; for 每个输入字母a do begin U:= ε-closure(move(T,a)); //显然U是一个状态集 if(U不在C中)then 将U作为未标记的子集加入C中; end; end; 例:为下面的NFA N的状态集K构造状态子集族C。 在此NFAN中,状态集K={0,1,2,3,4,5,6,7,8,9,10},初态集 K0={0},开始前C不包含任何状态集 (1)T0=ε-closure (K0)=ε-closure({0})={0,1,2,4,7}, C=( T0) (2) C=(T0) T1=ε-closure(move(T0,a))={1,2,3,4,6,7,8} C=(T0,T1) T2=ε-closure(move(T0,b))={1,2,4,5,6,7} C=(T0,T1,T2) (3) C= (T0,T1,T2) T3=ε-closure(move(T1,a))={1,2,3,4,6,7,8}=T1 舍弃 T3=ε-closure(move(T1,b))={1,2,4,5,6,7,9} C=(T0,T1,T2,T3) (4) C= (T0,T1,T2,T3) T4=ε-closure(move(T2,a))={1,2,3,4,6,7,8}=T1 舍弃 T4=ε-closure(move(T2,b))={1,2,4,5,6,7}=T2 舍弃 (5) C= (T0,T1,T2,T3) T4=ε-closure(move(T3,a))={1,2,3,4,6,7,8}=T1 舍弃 T4=ε-closure(move(T3,b))={1,2,4,5,6,7,10} C=(T0,T1,T2,T3,T4) (6) C=(T0,T1,T2,T3,T4) T5=ε-closure(move(T4,a))={1,2,3,4,6,7,8}=T1 舍弃 T5=ε-closure(move(T4,b))={1,2,4,5,6,7}=T2 舍弃 C中所有状态子集都已经被标记,算法结束 子集族C由5个子集组成 : T0={0,1,2,4,7} T1={1,2,3,4,6,7,8} T2={1,2,4,5,6,7} T3={1,2,4,5,6,7,9} T4={1,2, 4,5,6,7,10} 由NFA构造DFA的方法 :假设NFA N=(K,Σ,f,K0,Kt),我们可以构造一个DFA M={ S,Σ,D,S0,St },使得L(M)=L(N): (1)M的状态集S由K的一些子集组成。我们用[S1,S2,…,Sj]表示S的一个元素,其中S1,S2,…,Sj是K中的状态,NFA的若干个状态构成DFA的一个状态; (2)M和N的输入字母表是相同的,即都是Σ; (3)转换函数D是这样定义的:D([S1,S2,…,Sj],a)=[ R1,R2,…,Ri] 其中: [ R1,R2,…,Ri]= ε-closure(move([S1,S2,…,Sj],a)) (4)S0=ε-closure(K0),即M的开始状态等于N的初态集的ε-闭包; (5)St={[Sj,Sk,…,Se],其中[Sj,Sk,…,Se] ∈S,且[Sj,Sk,…,Se]∩Kt≠ ф} 例如:为下面的NFA N构造DFA M并使L(M)=L(N) (1)由子集构造法得状态集S={[T0],[T1],[T2],[T3],[T4]} (2)字母表Σ={a,b} (4)初态S0 =ε-closure(K0) =ε-closure({0}) ={0,1,2,4,7}=[T0] (5)终态集{[T4]},因为只有[T4]包含NFA N的终态10 (T4={1,

文档评论(0)

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

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

1亿VIP精品文档

相关文档