3第3章词法分析1.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文档。上传文档
查看更多
f单值映射 f(qi,a)=qj 当前状态qi,遇到字母a,自动机转换到下一个状态qj 单值函数,是指f(qi,a)唯一地确定了下一个要转移的状态 f(S1,a)=S2, f(S1,b)=S3, f(S1,c)=S4 例:DFA三种表示 M=({q0,q1,q2},{a,b},f,q0,{q2}) f(q0,a)=q1 f(q0,b)=q2 f(q1,a)=q1 f(q1,b)=q1 f(q2,a)=q2 f(q2,b)=q1 状态转换矩阵 状态转换图 为DFA M所识别 任何符号串β,若存在一条从初态到终态的道路,而且在这条路上所有弧的标记连接成的符号串等于β,则称β为DFA M所识别(接受)。 初态同时又是终态,ε为M所识别 DFA M所识别符号串的全体记为L(M),称为DFA M所识别语言。 S A B 0 0 1 1 A B C 0 1 0 语言单词的状态转换图 0 1 2 3 4 5 6 7 8 l l|d 非l非d d d 非d + - * / 语言单词的状态转换图 0 9 10 11 12 13 15 14 16 = : 非=非 = 非= ; 3.6词法分析程序的编写 语言的单词符号 两种描述形式 正规文法←→正规式R 有穷自动机 R→NFA→DFA→最小化DFA 非形式化的描述:状态转换图 词法分析程序 每个状态对应一小段程序 关键字表,识别出一个标识符就去查关键字表 非确定有穷自动机(NFA) 五元组M=(Q,Σ,f, S, Z) Q,有穷状态集合 Σ,有穷字母表 f,从Q×Σ*到Q子集的多值映射 S∈Q,非空初态集 Z∈Q,终态集 f 多值映射 f(qi,a)={状态的集合} 多值函数,由当前状态、当前输入字符,不能唯一地确定了下一个要转移的状态 即允许同一个状态对同一个输入字符有不同的输出 f(S1,a)={S1,S2,S3} f(qi,ε)={状态的集合},NFA边上标记可以是ε 例:NFA三种表示 NFA M’=({1,2,3},{a,b},f,{1,3},{2}) f(1,a)={3} f(1,b)={1,2} f(2,a)=Φ f(2,b)={3} f(3,a)=Φ f(3,b)={2} 状态转换矩阵 状态转换图 NFA识别 符号串β可由多条路来识别 β=bbb 难以用计算机来模拟,作为描述控制过程的自动机,通常都是DFA DFA是NFA的特例,对于任何NFA M’,存在DFA M,使L(M’)=L(M) 词法分析:单词描述(正规文法或正规式) →NFA→ DFA→状态最少化 3.4.3由正规式R 构造 NFA 方法 初始结点X,终止结点Y,把R表示成拓广转换图 分析R的语法结构,用如下规则: R=Φ R=ε R=a R=r1r2 R=r1|r2 R=r1* 整个分列过程中,所有新结点均采用不同的名字,保留X,Y是全图唯一初态和终态结点。 由正规式R 构造 NFA 例 (a|b)*abb l(l|d)* 由正规表达式R构造 NFA 1(1010*|1(010)*1)*0 b((ab)*|bb)*ab a((a|b)*|ab*a)*b NFA 确定化为 DFA NFA 的确定化,是指对任给NFA,都能相应地构造一个DFA,使它们接受相同的语言。 子集法 f(q,a)={q1,q2,…,qn},状态集的子集 {q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合。 集合I的ε-闭包 集合I的ε-闭包,从I中的元素出发经过ε道路所能到达的状态所组成的集合 若s∈I,则s∈ε-CLOSURE(I) 若s∈I,那么从s出发经过任意条ε弧能到达的任何状态s’,都属于ε-CLOSURE(I) I={1},ε-CLOSURE(I)={1,2}; I={5},ε-CLOSURE(I)={5,6,2}; f({1,2},a)={5,3,4} ε-CLOSURE({5,3,4})={2,3,4,5,6,7,8}; 子集法 NFA N → DFA M NFA N=(Q,Σ,f, S ,Z)构造 DFA M=(Q’,Σ,f’, S’ ,Z’),使得L(M)=L(N) S, S’= ε-CLOSURE(S) 从S’出发,经过输入符号a∈Σ的状态转移所能到达状态的ε闭包作为新状态 重复直到没有新的状态出现为止 算法描述 DFA M=(Q’,Σ,f’, S’ ,Z’) 置M的Q’,Z’为空集 M的初态S’=ε-CLOSURE(S) ,未标记放入Q’ 如果Q’中存在未标记状态T={q1,q2,…,qn} ①对每个a∈Σ,置J= f’ (T,a)=f’ ({q1,q2,…,qn},a) =f(q1,a)Uf(q2,a) U…Uf

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档