第4章词法分析.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章词法分析.ppt》由会员分享,可在线阅读,更多相关《第4章词法分析.ppt(129页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、词法分析器,词法分析是任何编译程序的第一步工作,因此编译程序都有完成词法分析的程序部分,称这种程序为词法分析器或扫描器。,词法分析器的共同特点是把每个单词转换成其内部形式,称它为符号或记号(TOKEN)。,4.1 词法分析程序的设计,词法分析器的功能可图示如下。其charsequence表示字符序列。,词法分析器的设计,TOKEN的通常结构是一个二元组:,其中CLASS示种类部分,VAL是值部分,TOKEN结构的一种方法可如下图,其中n是从4开始的编码,且一特殊符一码。,单词的识别,词法分析的关键之一是如何识别单词的问题,其中最重要的是标识符的识别问题。,4.2 单词的描述工具,定义2.1 正
2、则表达式 设为给定字母表,RE表示上正则表达式之集,则定义: 1.,RE 2.若a,则aRE 3.若e1,e2RE,则(e1|e2)RE,(e1e2)RE,(e1)*RE,例子: =a,b 正则式e L(e) b+ b, bb, bbb b* ,b, bb, bbb,例子:(a|b)* a,aa,ab,aaa,(a|b)0 (a|b)1 a, b ,(a|b)2 =(a|b) (a|b) aa,ab,ba,bb,定义2.2 设eRE,则定义函数L(e)如下: L()= L()= L(a)=a L(e*)= L(e)* L(e1|e2)= L(e1)L(e2) L(e1 e2)= L(e1)L(
3、e2),定理2.1 设e1 ,e2RE,则有: 1:L(e1|e2)=L(e2|e1) 2:L(e1|e2)|e3)=L(e1|(e2|e3) 3:L(e1e2)e3)=L(e1(e2e3) 4:L(e1(e2|e3)=L(e1e2|e1e3) 5:L(e1|e2)e3)=L(e1e3|e2e3) 6:L(e1)=L(e1)=L(e1),例子: 正则式e L(e) ab* a,ab,abb,abbb ab+ ab,abb,abbb a(a|b)+ aa,ab,aaa a(a|b)* a,aa,ab,aaa,语法图文法正则式,自动机状态图编程,a(a|b)* a,aa,ab,aaa标识符:(|)
4、*,例子:=a,b L(a*)=,a,aa L(ba*)=b,ba,baa L(a|ba*)=a,b,ba L(aa|bb|ab|ba)=aa,bb,ab,ba,例子:=a,b,正则表达式所定义的集合,称为正则集。,4.3 确定自动机,定义2.3 确定自动机(DA)A是一个五元组A=(S,s0,F),自动机,有穷自动机,无穷自动机,确定自动机,非确定自动机,自动机应用:广泛应用在人工智能,推理逻辑等领域。,4.3.1 确定自动机,每个DA均可用矩阵(状态转换矩阵)或状态转换图来表示。,S 是状态集s0,s1,sn(n1) 是字母表a1,a2,an(n1) 是映射:SS,且为单值的 s0 是初始
5、状态,s0S F 是终止状态集,FS,例子:A=(S,s0,F)S=s0,s1,s2 ,s3 =a,b F=s2,s3(s0,a)=s1 (s0,b)=s2(s1,b)=s1 (s2,a)=s3(s2,b)=s0 (s3,a)=s2,状态转换图如下:,前一条表明自动机的推理作用,后一条表明其词法分析的作用。如果L(A),则称可被A所接受。其中表示映射,表示推导。,例子:标识符的正则式: 字母(字母|数字)*状态转换图如下:,可为每个状态设计一段处理程序,得出标识符的分析程序。,出错处理,读入字符子程序,N,Y,例子:FA=(s0,s1,s2,s3,(a,b),f,S0,s3)其中映射f为:f(
6、s0,a)= s1 f(s0,b)= s2f(s1,a)= s3 f(s1,b)= s2f(s2,a)= s1 f(s2,b)= s3f(s3,a)= s3 f(s3,b)= s3,状态转换图:,a,b,b,a,a|b,可以识别=aa,abaaa等。,4.3.2 非确定自动机,定义2.5 NDA 一个非确定自动机(NDA)A是一个五元组A=(S, ,S0,F) S 是状态集s0,s1,sn(n1)。 是字母表a1,a2,an(n1)。 是映射:SS,不要求是单值的S0 是初始状态集(非空) F 是终止状态集,FS。,定义2.6 设A是一个NDAA=(S,s0,F),则定义:,定义2.7 设A1
7、和A2是同一字母表上的自动机,如果有L(A1)=L(A2),则称A1和A2等价。,例子:考虑下图所示的非确定自动机。A2=(S,S0,F)S=0,1,2 S0=0,1 =a,bF=1,2(0,a)=0,1 (0,b)=2 (1,a)= (1,b)=1,2(2,a)=1 (2,b)=2 ,定理2.2 对于每一个非确定自动机A,存在一个确定自动机A使得L(A)=L(A),4.3.3 NFA转换为等价的DFA,证明:构造算法如下:1. 令A的初始状态为s0=s10,s20, s0k,其中s10,s20,s0k是A的全部初始状态。 2. 若I=s1,sm是A的一个状态, a,则定义(I,a)=Ia,其
8、中为A的转换函数。 3. 重复步骤2直至不出现新的状态I为止。,4. 若I=s1,s2,sn是A的一状态,且存在一个I使得S是A的终止状态,则令I为 A的终止状态。,例子:考虑下图所示的非确定自动机。,由不确定自动机A构造等价的确定自动机A过程如下图所示。,由上述表格可以得出确定自动机A。确定自动机如下图所示。,为方便,将扩充自动机使得在边上有符号。我们称这种自动极为-自动机。并记为DA或NDA。,定理2.3 对任给DA均可构造一个DA,使得这两个自动机等价,既有L(DA)=L(DA),构造算法:,2.3如果B标有“-”,则给A标上“-”。,2.4如果存在一条从始点到A点的路,则给B标上“+”
9、。,3. 重复步骤2直至不出现步骤1所指的边为止。,4. 如果还有边,则肯定有闭路。这时要把闭路中的点合并为一个点,边也作相应处理。,例子:下图是从DA到DA的过程,例子:下图是从DA到DA的过程,转化过程如下:,确定化:,例子:求闭包,将DA转化到DA, 计算闭包-closure(0)=0,1,2,4,7/由该状态出发经过边所达到的状态。,转化如下:T0 =0,1,2,4,7 T1 =1,2,3,4,6,7,8T2 =1,2,4,5,6,7 T3 =1,2,4,5,6,7,9T4 =1,2,4,5,6,7,10, 转化为确定自动机:,转换后的DA图如下:,NFA的确定化,例子,等价的DFA,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内