第3讲词法分析学习课件.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文档。上传文档
查看更多
有文法G[S]: S→aS, S→aB, B→bC, C→aC, C→a 状态转换图(状态图) 状态转换图是一张有限方向图。用结点代表状态,状态之间用箭弧连接,箭弧上的标记(字符)代表在射出状态下可能出现的输入字符或字符类。 一个状态转换图只包含有限个状态,有一个初态(用?标识),至少有一个终态(用双圈表示)。 NFA与DFA的区别 NFA有一个开始状态集,而DFA只有一个初态; NFA的映射是多值映射,而DFA是一个单值映射; 最小化方法---分割法 把一个DFA(不含多余状态)的状态分成一些不相交的子集,使得任何不同的两个子集的状态都是可区分的,而同一个子集中的任何两个状态都是等价的。 为正规式 dd*(.dd*|ε)(e(+|-|ε)dd*|ε) 构造NFA. 用消元法表示出下列文法的语言 G[S]: S→0A | 1B | 0 A→0A | 1B | 0S B →1B | 1 | 0 对DFA编程实现词法分析: 关键点:根据状态设计程序 实验题目 针对下面文法G(S): S→ v = E E→E+E│E-E│E*E│E/E│(E)│ v │ i 其中,v为标识符,i为整型或实型数。 要求完成 ① 使用自动机技术实现一个词法分析程序; ② 使用算符优先分析方法实现语法分析程序,在语法分析过程中完成常量表达式的计算。 实验过程 实验的本质内容: ①写程序模拟自动机实现过程,完成赋值语句中单词识别,构造单词二元组---词法分析; ②计算一个赋值语句---语法分析(ch5,ch6)。 词法分析实现 ① 单词分类: 标识符:v 常量:i 运算符:+,-,*,/,(,) 分隔符:= 词法分析的自动机技术应用: ①输入的有效性检查; ②面向对象的软件测试技术; ③UML的活动图,时序图; ④通信系统; ⑤生物学; 1 2 3 R1 R2 1 3 R1 R2 1 3 R1 R2 1 3 R1| R2 1 2 3 R1 R3 R2 1 3 R1 R2* R3 例: 求该NFA所对应的正规式R. 0 3 1 2 4 a,b a a a,b a,b b b ? 0 3 1 2 4 a,b a a a,b a,b b b x y ε ε ε 0 2 4 a|b aa a|b a|b bb x y ε ε ε a|b 0 2 4 a|b aa a|b bb x y ε ε ε 0 a|b aa(a|b)* bb(a|b)* x y ε 0 a|b aa(a|b)* bb(a|b)* x y ε x y (a|b)* (aa |bb)(a|b)* 0 a|b x y ε aa(a|b)* |bb(a|b)* (aa |bb)(a|b)* R=(a|b)* (aa |bb)(a|b)* 2.对于∑上的一个正规式R,可以构造一个∑上的NFA M,使得L(M)=L(R)。 (1) R=?, 任一具有空终态集的NFA M (2) R= ? ,NFA M=({k0}, ∑,f,k0,{k0}): f(k0,a)对于 所有a?∑都没定义。 (3) R=a,NFA M=({k0,,k1},∑,f,k0,{k1}): f(k0,a) = k1 x y ? k0 k1 ? a k0 ? ε (4) R =R1 | R2, 分别将步骤(1)(2)(3)应用到R1,R2 产生M1=(K1,∑1,f1,k1,F1), M2=(K2,∑2,f2,k2,F2),其中K1,K2不相交. 则,NFA M= (K1?K2?{k0},∑,f,k0,F),k0是新增加的状态符号: ∑ = ∑1 ? ∑2; f=f1?f2?{ f(k0,ε)= {k1,k2} }; F=F1 ? F2 k0 ? ε k1 M1 k2 M2 ε ε ε (5) R =R1 R2, 分别将步骤(1)(2)(3)应用到R1,R2 产生M1=(K1,∑1,f1,k1,F1), M2=(K2,∑2,f2,k2,F2),K1,K2不相交. 则,NFA M = ( K1?K2, ∑1 ? ∑2, f, k1, F2 ) : f=f1?f2?{ 对F1中的所有终态k有:f1(k,?) = k2 }。 k1 M1 k2 M2 ? (6) R =R*, 分别将步骤(1)(2)(3)应用到R 产生M1=(K1,∑,f1,k1,F1). 则,NFA M= ( K1?{k0,kf}, ∑, f, k0, kf ) : k0,kf是新增加的状态符号, f=f1?{ f(k0,?)=kf ,f(k0,?)=k1 } ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档