4 第四章节词法分析.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 第四章节词法分析

第四章 词法分析(Lexical Analysis) 学习目标: 掌握:词法分析程序的构造,正规式和正规文法到有穷自动机的转换,NFA到DFA的转换、DFA的化简 理解:正规文法、正规式、DFA的概念、NFA的概念 了解:词法分析程序的自动构造工具 4.1 单词的描述工具 4.2 有穷自动机 4.3 正规式和有穷自动机的等价性 4.4 正则文法和有穷自动机间的转换 4.5 词法分析程序的设计 4.6 词法分析程序的自动构造工具 4.1 单词的描述工具 作用: 描述单词的构成规则,基于这类描述工具建立词法分析技术,进而实现词法分析程序的自动构造. 工具有: 正规文法 正规式(Regular Expression) 4.2.1 正规文法 多数程序设计语言单词的语法都能用正规文法(3型文法)描述 正规文法回顾 文法的任一产生式α→β的形式都为A→aB或A→a,其中A ,B∈VN ,a∈ VT 。 正规文法描述的是VT*上的正规集 例如 : 用l表示a~z中的任一英文字母,d表示0~9中任一数字 描述标识符的正规文法为 标识符→l|l字母数字 字母数字→l|d|l字母数字|d字母数字 描述无符号整数的正规文法 无符号整数→d|d无符号整数 4.2.2 正规式(正则表达式) Regular Expression 对于字母表∑,我们感兴趣的是它的一些特殊字集-正规集。 正规式是描述正规集的方便工具 正规式与正规集的递归定义 ε和φ都是∑上的正规式,它所表示的正规集分别为{ε}和Ф; 任何a∈∑,a是∑上的正规式,它所表示的正规集为{a}; 假定e1和e2都是∑上的正规式,他们所表示的正规集分别为L(e1)和L(e2),那么,以下也都是正规式和他们所表示的正规集; 说明: 算符的优先顺序: ‘*’ ‘.’ ‘|’ ‘.’和‘|’都是左结合 仅由有限次使用上述三步定义的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。 例子 令?={a,b}, ?上的正规式和相应的正规集有 正规式 正规集 a {a} a?b {a,b} ab {ab} (a?b)(a?b) {aa,ab,ba,bb} a ? {? ,a,aa,…任意个a串} (a?b)? {? ,a,b,aa,ab ……所有由a和b 组成的串} 正规式的代数性质 设 r,s,t 是正规式,正规式服从的代数规律是: r|s = s|r “或”满足交换律 r|(s|t) = (r|s)|t “或”的结合律 (r s) t = r (s t) “连接”的结合律 r(s|t) = r s|r t (r|s) t = r t|s t 分配律 εr = rε= r ε是“连接”的恒等元素 r?r=r “或”的抽取律 r?=??r?rr?… 程序中的单词都能用正规式来定义 令l为a~z的字母,d为0~9的数字 e1= l ( l | d)* e1表示标识符集合 e2= dd* e2表示无符号整数 注: 标识符→l|l字母数字 字母数字→l|d|l字母数字|d字母数字 正规式比正规文法更容易让人理解单词是按怎样的规律构成的,且可以从某个正规式自动地构造识别程序。 4.2.3 正规文法和正规式间的转换 等价性: 对任意一个正规文法,存在一个定义同一语言的正规式 对任意一个正规式,存在一个定义同一语言的正规文法 例: 将R=a(a|d)*转换成相应的正则文法 令转换成文法G=(VN,VT,P,S) 其中VT={a,d}, 文法开始符为S 首先形成S→a(a|d)*,然后变换 S→aA A→(a|d)* 将正规文法转换成正规式 将每条产生式改写为正规式 用代入法解正规式方程组 最后只剩下一个开始符号定义的正规式,其中不含非终结符 正规文法到正规式的转换规则: 例:将文法G[S]转换成正规式 G:S→a A|a A→dA|d 先由产生式得: S=aA|a A=d*d 将A代入S中得: S=ad*d|a 利用正规式变换得 S=a(d*d|ε)=ad* 说明:d*d|ε =(ε|d|dd|…)d|ε =d|dd|…|ε= d* 所求正规式为ad* 4.2 有穷自动机(也称有限自动机) 是一种识别装置 作用:能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合 意义:为词法分析程序的自动构造寻找特殊的方法和工具。 分类: 确定的有穷自动机 (Deterministic Finite Automata) 不确定的有穷自动机

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档