网站大量收购独家精品文档,联系QQ:2885784924

编译原理第四章详解.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理;词法分析;单词的描述技术 正规文法 正规式 单词的识别机制 确定有穷自动机 不确定有穷自动机 词法分析程序的自动构造原理 正规式和有穷自动机的等价性 词法分析程序的自动构造工具;单词的描述工具;2、正规式(正则表达式) 是表示正规集的工具,也是用以描述单词符号的方便工具。;假定e1和e2都是Σ上的正规式,它们所表示的正规集分别为L(e1)和L(e2),则(e1),e1|e2,e1·e2和e1*也都是正规式,所表示的正规集分别为L(e1),L(e1)∪L(e2), L(e1)L(e2)和(L(e1))*。 仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式所表示的集合才是Σ上的正规集。;? ? a b ----------- (a) 一个正规式可以表示若干个符号串, (b) 其正规集就是这些符号串的集合 a|b ab a* b* ------------------- (a|b)* a*|b* aba* (a|b)*(aa|bb) (a|b)*;? {?} ? ? a {a} b {b} ----------- (a) {a} 一个正规式可以表示若干个符号串, (b) {b} 其正规集就是这些符号串的集合 a|b {a,b} ab {ab} a* {?,a,aa,aaa,aaaa,….} b* {?,b,bb,bbb,bbbb,….} ------------------- (a|b)* a和b组成的所有串 a*|b* {?,a,aa,aaa,aaaa,….,b,bb,bbb,bbbb,….} aba* 以ab开头后接若干个(包括0个)a组成的串 (a|b)*(aa|bb) (a|b)* ?*上所有含有两个相继的a或两个相继的b组成的串;例:令?={d,? ,e,+,-},则?上的正规式d*(.dd*| ?)(e(+|-|?)dd*|?)表示的是所有无符号数。 其中d为0~9中的数字。 比如:2,12.59,3.6e2,471.88e-1等都是正规式表示集合中的元素。;4. r(s|t) = rs|rt 分配律 (s|t)r = sr|tr 分配律 5. ?r=r 零一律 r?=r 零一律;4. r(s|t) = rs|rt 分配律 (s|t)r = sr|tr 分配律 5. ?r=r 零一律 r?=r 零一律;3、正规文法和正规式的等价性 一个正规语言可以由正规文法定义,也可以用正规式定义。 对于任意一个正规文法,存在一个定义同一语言的正规式。对每一个正规式,存在一个生成同一语言的正规文法。 即正规式?正规文法;? 正规式?正规文法: (把正规式转换为正规文法所要求的规则形式) 将Σ上的一个正规式r转换为一个正规文法G=(VN,VT,P,S)的规则: 令VT=Σ, 对正规式r,选择一个非终结符S生成S→r,S为G的开始符号。不断拆分r直到符合正规文法要求的规则形式: ? 若x,y都是正规式,对形如A→xy的产生式,写成A→xB,B→y。其中B? VN ? 对形如A→x*y的产生式,重写为: A→x A A→y B为新的非终结符,B? VN 对形如A→x|y的产生式,重写为: A→x A→y 不断利用上述规则进行变换即可。;例:将R=a(a|d)*变换成正规文法。令S是文法开始符号。;例:将R=a(a|d)*变换成正规文法。令S是文法开始符号。;最后得到:;???正规文法?正规式:将一个正规文法转换为正规式的规则: 转换规则: ? A→xB,B→y 正规式为: A=xy ? A→xA|y 正规式为: A=x*y A→x,A→y 正规式为: A=x|y 不断收缩产生式规则,直到剩下一个开始符号定义的正规式;S→ aA S→ a A→ aA A→ dA A→ a A→ d;S=a( (a|d)*(a|d)) |a =a(a|d)+|a =a((a|d)+|?)= a(a|d)*;(一) 确定的有穷自动机DFA 自动识别装置;1、用状态图表示: 方法如下: 初始态用 “?”或“-”表示; 终态点用 “+” 或“?” 表示; 若f(Ki ,a)= Kj ,则从状态点Ki 到Kj画弧,标记为a。;状态图如下:; “?” 标明初态,默认第一行是初态。 终态行在表右端标1,非终态标0 上例矩阵表示如下:;例:;3、接受(识别)的概念: 自动识别单词 对于Σ*中的任何字符串t,若存在一条初态

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档