编译原理及实现技术:第二章 词法分析

上传人:M****1 文档编号:569808226 上传时间:2024-07-31 格式:PPT 页数:29 大小:1.05MB
返回 下载 相关 举报
编译原理及实现技术:第二章 词法分析_第1页
第1页 / 共29页
编译原理及实现技术:第二章 词法分析_第2页
第2页 / 共29页
编译原理及实现技术:第二章 词法分析_第3页
第3页 / 共29页
编译原理及实现技术:第二章 词法分析_第4页
第4页 / 共29页
编译原理及实现技术:第二章 词法分析_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《编译原理及实现技术:第二章 词法分析》由会员分享,可在线阅读,更多相关《编译原理及实现技术:第二章 词法分析(29页珍藏版)》请在金锄头文库上搜索。

1、词法分析概述正则表达式自动机理论词法分析器的设计与实现词法分析器的功能词法分析器的地位2 1.1 词法分析器的功能功能 读源程序的符号序列,逐个拼出单词,并构造相应的内部表示,同时检查源程序中的词法错误。单词 所谓单词是指语言中具有独立含义的最小的语义单位。Token 单词的内部表示。“程序语言的操作对象(只能)是该语言规定的各种数据。”编译程序是用某种程序语言书写的程序,其操作对象是一般程序中的各种语法单位。 31.1.1 单词的分类单词标识符X1,classT常量10,LENGTH特殊符号保留字while,int运算符+,界限符,;格式符EOF,41.1.2 Token的结构Token是单

2、词在词法分析器中的内部结构构成:特殊处理常数标识符特殊符号5TypeValueif (position 10) rate = 3.14 * initial;, , ?Line-num1.2 词法分析器的接口6CharList 独独 立立词法分析器词法分析器语法分析语法分析TokenList 附附 属属词法分析器词法分析器语法分析语法分析callTokenChar List符号串基本概念正则表达式理论正则表达式在词法分析中的应用72.1 基本概念字母表: ,元素的非空有穷集合。 符号串:由字母表中的符号组成的任何有穷序列。或者如下定义:1.空符号串(用表示)是上的符号串 2.若x是上的符号串,a

3、是的元素,则xa是上的符号串 3.y是上的符号串,当且仅当它可以由1和2导出8思考1.符号串的长度如何定义?符号的个数2.和有何区别?符号串有无3.如何判断两个符号串相等?对应位置的符号相等(符号串的长度相同)9符号串的连接:设x和y均是字母表上的符号串,它们的连接是把y的所有符号顺序接在x的符号之后所得到的符号串。 符号串的方幂:设x是字母表上的符号串,把x自身连接n次得到的符号串z,称作符号串x的n 次幂,记作 z=xn。前缀和后缀:设x是字母表上的符号串,x=yz,则y是x的前缀,z是x的后缀,特别是当z时,y是x的真前缀;y时,z是x的真后缀。子符号串:非空符号串 x ,删去它的前缀和

4、后缀后所得到的符号串称为 x 的子符号串,简称子串。如果删去的前缀和后缀不同时为,则称该子串为真子串。10思考1.符号x的零次幂x0=?为什么?空串,“零次连接得到的串”首先是符号串。2.符号串abc的前缀、真前缀、后缀、真后缀、子串、真子串分别是什么?,a,ab,abc,,a,ab,,c,bc,abc,,c,bc,,a,b,c,ab,bc,abc,a,b,c,ab,bc11符号串集合:若集合A中的所有元素都是某字母表上的符号串,则称A为该字母表上的符号串集合。符号串集合的乘积:设A、B 是两个符号串集合,AB表示A与B的乘积,则定义AB=xy|(xA)(yB) 符号串集合的方幂:设A是符号串

5、集合,则称Ai 是符号串集合 A的方幂,其中i 是非负整数。A0=, A1=A, A2=AA, , An=AA A符号串集合的正闭包:A+=A1A2A3 符号串集合的星闭包:A*= A0A1A2A3 12思考1.符号串集合X的零次幂X0=?为什么?由符号串集合的幂定义可知,对于k为任意正整数X0 应该满足X0 Xk= Xk X0 =Xk,所以2.设X为给定的非空符号串集合,下面等式成立吗?X+=XX*X=X= X= X=X 13思考3.设X=a,b,Y=c,d计算XY,YX,X4,Xn,X+。XY=ac,ad,bc,bdYX=ca,cb,da,dbX4=a4,a3b,a2ba,aba2,ba3

6、,a2b2,abab,baab,baba,abba,b2a2,ab3,bab2,b2ab,b3a,b4Xn=an,an-1b,an-2ba,an-3ba2,bn-1a,bnX+=a,b,a2,ab,ba,b2,a3,a2b,aba,baa,ab2, bab,b3,a4,142.2 正则表达式理论描述程序设计语言中单词的一种简单而且数学化的工具。表示符号串的构成模式。正则表达式r定义了一个符号串集合S, S内的每个符号串都与r所定义的模式相匹配,S称为由r生成的语言L(r)152.2.1 非形式化定义基本正则表达式,a正则表达式的运算选择x|y连接xy重复x*16思考1.三种运算是否可以和算数运

7、算类比?| vs. +; vs. ; * vs. n交换律 A|B=B|AABBA结合律 (A|B)|C= A|(B|C)A(BC)=(AB)C分配律 A(B|C)=AB|AC(A|B)C=AC|BC同一律 A=A=A幂等律 A*=A*2.三种运算的优先级关系如何?|*172.2.2 正则表达式形式化定义正则表达式中出现的所有符号构成的集合为该正则表达式的字母表,用表示。 则上的正则表达式递归定义如下:1.和是正则表达式;2.对于任意符号a,则a是正则表达式;3.若r和s是正则表达式,则r|s,rs,r*都是正则表达式;4.仅由有限次应用上述规则所构成的正则表达式称为上的正则表达式。182.2

8、.3 正则表达式的解释给定为给定的字母表,则每个上的正则表达式将定义上的一个符号串集,称为它表示的正则集。用R表示上的正则表达式,用L(R)表示R所表示的符号串集合,即函数L表示正则表达式到符号串集的映射。是正则表达式即R ,则有L()=。是 正 则 表 达 式 即 R , 则 有L()=。19a是正则表达式即aR,则L(a)=a。A和B是正则表达式,即AR,BR ,则有A | BR,L(A | B)= L(A)L(B)ABR,L( AB )= L(A)L(B)A*R,L( A*)= L(A)* ( A )R,L( (A) )= L(A)20当(和)不在当(和)不在中时中时实例1= a,b 2

9、1正则表达式正则表达式e e1.1.ab*ab*2. a(a|b)*2. a(a|b)* L(e)L(e)1.1. 上所有以上所有以a a为首后跟任意多为首后跟任意多个(包括个(包括0 0个)个)b b的符号串集的符号串集2.2. 上所有以上所有以a a为首的符号串集为首的符号串集实例2设字母表=0,1,求二进制数字集合且为2的倍数。1.所有上定义的串的正则表达式为(1|0)*2.则二进制数表示为1(1|0)*|03.其中能被二整除的表示为1(1|0)*0|022实例3设字母表=x,y,z,1.出现的第一个x之前没有y的符号串;2.包含偶数个x的所有符号串。z*x(x|z)*y(x|y|z)*

10、|(x|z)*(y|z)*x(y|z)*x)*(y|z)*23思考设字母表=a,b,求1.含有奇数个a的串的正则表达式2.有相同个数a和b的串对应的正则表达式。(b*ab*a)*ab*无法描述“有相同个数a和b”如何用正则表达式描述单词?242.3 正则表达式在词法分析中的应用 设I为字母集合a,b,z,其正则表达式为a|b|z设D为数字集合0,1,9 ,其正则表达式为0|1|9则标识符的正则表达式为I(I|D)*常数的正则表达式为(+|-|)D+(.D+|)特殊符号的正则表达式为25有瑕疵2.3.1 扩充的正则表达式 一次或多次重复: A+任何符号:“”在字母表中任何符号.符号范围: 0-9

11、 a-z A-Z不在给定范围内的符号: a可选: A?262.3.2 单词描述保留字 如 begin=begin标识符 letter=a-zA-Z digit=0-9 identifier=letter(letter|digit)*数字 整数Int1-9Digit*|0 实数realInt(.Digit*|)特殊符号 +|-|27思考正则表达式的描述能力有局限性吗?正则表达式不能表示描述配对或嵌套结构例:算术表达式的定义1)n E2)(E)E 3)E+E E正则表达式不能用于描述“重复(对称)”结构例:w c w | w是包含符号a和b的串无法用正则表达式表示(保证两边w是相同的)。28词法分析简介正则表达式29

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号