文档详情

第四章词法分析.doc

发布:2017-02-08约6.03千字共7页下载文档
文本预览下载声明
第四章 词法分析 本章将讨论词法分析程序的设计原则,单词的描述技术,识别机制及词法分析程序的自动构造原理。 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、
显示全部
相似文档