第四章词法分析.doc

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

第四章 词法分析 本章将讨论词法分析程序的设计原则,单词的描述技术,识别机制及词法分析程序的自动构造原理。 4.2 正规表达式与正规集(正规语言) 4.3 有穷自动机 4.4 正规式和有穷自动机的等价性 4.5正规文法和有穷自动机间的转换 本章重点 4.1 词法分析程序 1.回顾 什麽是词法分析程序 实现词法分析(lexical analysis)的程序 逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。 词法分析是编译过程中的一个阶段,在语法分析前进行 。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 2.常常遇到的术语 Token单词,词标,符号 lexeme词素,词位 pattern模式,式样 3.词法分析工作从语法分析工作独立出来的原因: 简化设计 改进编译效率 增加编译系统的可移植性 4.2正规表达式与正规集(正规语言) 程序设计语言中的单词是基本语法成分.单词符号的语法可以用有效的工具加以描述,并且基于这类描述工具,实现词法分析程序的自动构造. 一.正规式也称正则表达式,正规表达式(regular expression)是说明单词的模式(pattern)的一种重要的表示法(记号),是定义正规集的数学工具。我们用以描述单词符号。下面是正规式和它所表示的正规集的递归定义。 1.定义(正规式和它所表示的正规集): 设字母表为( ,辅助字母表(`={( ,( ,( ,( ,( ,( ,(} 。 1 。 ( 和( 都是( 上的正规式,它们所表示的正规集分别为{(} 和{ } ; 2。任何a( ( ,a 是( 上的一个正规式,它所表示的正规集为{a}; 3。 假定e1 和e2 都是( 上的正规式,它们所表示的正规集分别为L(e1) 和L(e2), 那么,(e1), e1( e2, e1(e2, e1( 也都是正规式, 它们所表示的正规集分别为L(e1), L(e1)(L(e2), L(e1)L(e2) 和(L(e1))( 。 4 。仅由有限次使用上述三步骤而定义的表达式才是( 上的正规式,仅由这些正规式所表示的集合才是( 上的正规集。 2.正规式中的符号 规定算符的优先顺序为 “( ”、 “( ”、 “( ” 。连接符 “( ”一般可省略不写。 “( ”、 “( ”和 “( ” 都是左结合的。 3.例子 令(={a,b}, (上的正规式和相应的正规集的例子有: 正规式 正规集 a {a} a(b {a,b} ab {ab} (a(b)(a(b) {aa,ab,ba,bb} a ( {( ,a,a, ……任意个a的串} (a(b)( {( ,a,b,aa,ab …… 所有由a 和b 组成的串} (a(b)((aa(bb)(a(b)( {(( 上所有含有两个相继 的a 或两个相继的b 组成的串} 4. 等价:若两个正规式e1 和e2所表示的正规集相同,则说e1 和e2 等价, 写作e1=e2。 5.设r,s,t为正规式,正规式服从的代数规律有: (1).r(s=s(r “ 或” 服从交换律 (2).r((s(t)=(r(s)(t “ 或” 的可结合律 (3). (rs)t=r(st) 连接” 的可结合律 (4).r(s(t)=rs(rt (s(t)r=sr(tr 分配律 (5). (r=r, r(=r ( 是“ 连接” 的恒等元素零一律 (6). r(r=r r(=((r(rr(… 或” 的抽取律 二、正规文法和正规式的等价性 1、将Σ上的正规式转换成正规文法 VT = Σ 对任何正规式r,选择一个非终结符S生成产生式S-r,将S为G的开始符号。 若x和y都是正规式, 对A-xy,重写成:A-xB, B-y; 对形如A-x|y,重写成: A-x,A-y; 对形如A-x* y,重写成: A-xA A-y; 不断使用如上规则,直到每个产生式最多含有一个终结符为止 例如:将R=a(a|d) *转换成正规文法 S- a(a|d) * 将S是文法的开始符号。 根据规则1形成S-aA,A- (a|d) * 根据规则3,对第二条重写成A-(a|d)A, A-ε 最后得出正规文法为: S-aA, A-aA, A-dA, A-ε 2、

文档评论(0)

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

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

1亿VIP精品文档

相关文档