编译原理[词法分析].ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 词法分析 4.1 词法分析程序设计 4.1.2 词法分析程序 4.2 单词的描述工具 4.2.2 正规式 4.2.3 正规式和正规文法之间转换 4.3 有穷自动机 4.4 正规式和有穷自动机的等价性 4.5 正规文法和有穷自动机间的转换 例 4.9 求与下列NFA M等价的正规式R。 a B b A ? b a D C a NFA M到正规式 R的转换过程演示。 目录 正规式到NFA的转换方法 设?上正规式R,则与之等价的NFA M=( K,?,f,S,Z),可以由下列方法构造。 ⑴ 新增两个状态X和Y作为NFA M的开始状态和接受状态,且将正规式R作为弧X,Y上符号串。特别地,如果R=Φ,则保留开始状态X和接受状态Y的NFA M即为所求。 ⑵ 在⑴基础上,按下列转换规则,逐步增加的状态,直到弧X,Y上剩下单个符号a∈?∪{ε}为止。此刻状态图即为等价的NFA M。 规则1 规则2 规则3 1 R1 3 2 1 3 2 1 2 R2 1 R1R2 2 R2 R1 ε R2 ε 1 R1︱R2 2 1 R1* 2 例 4.10 将正规式R=b(a︱b)*aa转换成等价的NFA M。 正规式 R到NFA M的转换过程演示。 华中科技大学计算机学院 编译原理 编译原理 本章介绍词法分析阶段的基本原理和技术,主要内容是词法的3种形式描述工具及其相互转换、构造词法分析程序的技术线路。 内容摘要 4.1 词法分析程序设计 4.2 单词的描述工具 4.3 有穷自动机 4.4 正规式和有穷自动机的等价性 4.5 正规文法和有穷自动机间的转换 重点讲解 4.1.1 词法分析任务 词法分析阶段是编译的第一阶段,它的主要任务是从左至右扫描文本格式的源程序,从基于字符理解的源程序中分离出符合源语言词法的单词,最终转换成基于单词理解的源程序。 输出形式为:(单词种类,单词) 单词种类类似于自然语言的词性,由构词规则等因素确定的。 计算机高级语言一般都有关键字、标识符、常数、运算符和定界符这5类单词。 目录 词法分析程序通常与后阶段语法分析程序接口有下列两种方式。 ⑴词法分析程序和语法分析程序各自独立一趟方式。即词法分析程序把字符流的源程序转换成单词流的内部程序形式,供语法分析程序之用。 ⑵词法分析程序和语法分析程序合并为一趟方式。即词法分析程序由反复语法分析程序调用,每调用一次从源程序中一个新单词返回给语法分析程序。 词法分析程序 语法分析程序 源程序 单词流程序 词法分析程序 语法分析程序 源程序 单词 调用 方式(1): 方式(2): 目录 基于生成观点、计算观点和识别观点,分别形成了正规文法、正规式和有穷自动机 3种用于描述计算机高级语言词法的工具。本节仅介绍正规文法和正规式以及两者之间的转换方法。 4.2.1 正规文法 下面是“标识符”单词的右线性正规文法描述实例。 G1[T]: T→ c︱c S S→ c︱d ︱cS︱dS T :标识符 S:字母数字串 c:字母 d: 数字 目录 基于字母表∑上的正规式定义如下,正规式e的计算值称为正规集,记为L(e)。 1.ε是∑上的正规式,L(ε)= {ε} 2. Ф是∑上的正规式,L(Ф)=Ф 3. 任何a∈∑,a是∑上的正规式,L(a)= {a} 4. 如果e1和e2是∑上的正规式,则 4.1 (e1)是∑上的正规式,L((e1))=L(e1) 4.2 e1︱e2 是∑上的正规式,L(e1︱e2)=L(e1)∪L(e2) 4.3 e1 · e2 是∑上的正规式,L(e1· e2)=L(e1)·L(e2) 4.4 e1* 是∑上的正规式,L(e1*)=L(e1)* 定义 4.1 (正规式、正规集) 例 4.1 令∑={a,b},则∑上正规式的例子如下, a、a︱b、ab、(a︱b)* 、(a︱b)*a, 且 L(a)={a} L(a︱b)=L(a)∪L(b)= {a}∪{b} = {a,b} L((a︱b)*)=L(L(a︱b))*=({a,b})*={a,b}* L((a︱b)*a)=L((a︱b)*)·L(a)= {a,b}*{a} 两个正规式e1和e2相等,是指正规式e1和e2 计算值相等(即L(e1)= L(e2)),记为e1= e2 。 设r,s,t为正规式,则正规式有如下定律: 1. 交换律:r︱s = s︱r 2. 结合律:(r︱s)︱t = r︱(s︱t) (r·s)·t = r·(s·t) 3. 分配律:r·(s︱t)= r·s︱r·t (s︱t)

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档