(编译原理及实践)第二篇 章词法分析-1.pptVIP

(编译原理及实践)第二篇 章词法分析-1.ppt

  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文档。上传文档
查看更多
(编译原理及实践)第二篇 章词法分析-1.ppt

第二章 词法分析;;2.1 扫描处理;1 单词的种别;;;2.2 正则表达式;2.2.1 符号串和语言;2 符号串;;3 符号串的运算;4 语言;5 语言的运算 ;方幂 L的方幂定义为: L0 ={ε } L1 = L , L2 = LL LK = LL...…L (k个) ;闭包 L的闭包 ( 记为 L*) 表示为0个或多个L的连接 L * = L 0∪ L1∪ L 2∪ L 3∪… 例如:L={0,1} L* =L0∪L1∪L2∪… ={ε,0,1,00,01,10,11,000,…} L的正闭包(记为 L+) 表示1个或多个L的连接 L += L 1∪ L 2∪ L 3∪… L *= L 0∪ L+ L += LL*= L* L ;2.2.2 正则表达式的定义;;如果e1和e2 是∑上的正则表达式,则运算后也是 ∑上的正则表达式:;从已有正则表达式生成新的正则表达式的运算: 选择 ( | ) 连接( . ) 闭包( * ) 运算的优先顺序是: ‘*’ ‘.’ ‘|’ 例如 L(a|bc*)={a} ∪({b}{? ,c,cc,…}) ={a} ∪{b,bc,bcc…}={a,b,bc,bcc…};例如: ?={a,b}, 下面是正则表达式和它们生成的语言 正则表达式 r L(r) a {a} a?b {a,b} ab {ab} (a?b)(a?b) L(r)={a,b}{a,b} ={aa,ab,ba,bb} a ? {? ,a,aa,…} (a?b)? {? ,a,b,aa,ab ……};;例如 给定待匹配的字符串的描述,将其翻译为一个正则表达式 ∑={a,b,c}, 至少包含一个b的字符串的正则表达式是 (a|c)*b(a|c)* 最多包含一个b的字符串的正则表达式是 (a|c)*|(a|c)*b(a|c)* or (a|c)*(b| ?)(a|c)*;解释 相同的语言可以由许多不同的正则表达式生成 不是所有我们能描述的字符串集合都能用正则表达式生成 例如: 字符串集合S={b,aba,aabaa,…}={anban|n≥0} 不能由正则表达式生成。;2.2.3 编程语言单词的正则表达式;2 单词识别相关的问题;单词分隔符 分隔符是肯定为其他记号一部分的字符 例如: 符号串“xtemp=ytemp”中, ‘=’ 是分隔符 空格、新行、制位表、注释都是单词分隔符 例如:串 “while x…”中, 两个单词 “while” 和 “x” 由空格分开 扫描程序必须在检查任意记号分隔功能之后舍弃掉空白格。;先行问题(lookahead) 扫描程序必须处理单个或多个字符先行问题 例如: 识别特殊符号 ‘:=‘, 当遇到 ‘:’, 扫描程序必须先行处理是单词 ‘:’ 还是 ‘:=’ ;2.3 有穷自动机;有穷自动机和正则表达式之间的关系 例如 标识符的正则表达式是 让 letter=a|b|…|z digit=0|1|…|9 identifier=letter(letter|digit)* 识别这样的标识符过程可以被描述为有穷自动机;状态: 表示其中记录已被发现的模式的数量在识别过程中的位置 转换: 记录一个状态向另一个状态的转换 初始状态: 识别过程的开始 接受状态: 代表识别过程结束的状态;将真实字符串识别为标识符的过程可通过列出在识别过程中所用到的状态和转换的序列来表示 例如: 识别 “xtemp”为标识符的过程:;;2.3.1 DFA的定义;例如 DFA M=({S,U,V,Q},{a,b},f,S,{Q}) f 定义为: f(S,a)=U f(S,b)=V f(V,a)=U f(V,b)=Q f(U,a)=Q f(U,b)=V f(Q,a)=Q f(Q,b)=Q;;DFA的转换图 每个状态是图的一个结点 单箭头线表示初态 接受状态由双线结点表示 若T(Si,a)=Sj, 从结点Si 到结点Sj 画标记为a的弧;例如: DFA M=({S,U,V,Q},{a,b},f,S,{Q}) f(S,a)=U f(S,b)=V f(V,a)=U f(V,b)=Q f(U,a)=Q f(U,b)=V f(Q,a)=Q f(Q,b)=Q;转换图的几点说明 定义的扩展: 转换也可以表示为字符集合的名字;惯例 出错转换在图中没有画出来;DFA的状态转换表 状态和输入字符 转换函数T的值 第一个状态为初始状态 用一列表示是否为接受状态;例如: DFA M=({S,U,V,Q},{a,b},f,S,{Q}) f(S,a)=U f(S,b)=V f(V

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档