第4章词法分析精选文档.ppt
《第4章词法分析精选文档.ppt》由会员分享,可在线阅读,更多相关《第4章词法分析精选文档.ppt(147页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 词法分析词法分析本讲稿第一页,共一百四十七页第第3章教学内容章教学内容词法分析的任务;单词,单词的分类,单词的输出形式单词的描述工具:正规文法;正规式;有穷自动机。词法分析程序的自动构造原理:正规式到有穷自动机的转换算法。如何设计和实现词法分析程序。本讲稿第二页,共一百四十七页一、词法分析的任务一、词法分析的任务 人们要理解一篇文章或一句话,首先必须了解这人们要理解一篇文章或一句话,首先必须了解这篇文章或这句话的结构,文章包含哪些段落,每个段篇文章或这句话的结构,文章包含哪些段落,每个段落包含哪些句子,每个句子又包含哪些词。这些过程落包含哪些句子,每个句子又包含哪些词。这些过程对于
2、人来说没有什么难度,但对于计算机来说就不同对于人来说没有什么难度,但对于计算机来说就不同了,输入一段话或一个程序,计算机得到的只是一串了,输入一段话或一个程序,计算机得到的只是一串符号,要对这段话或这段程序进行分析,计算机首先符号,要对这段话或这段程序进行分析,计算机首先必须知道这段话由哪些词组成,或这个程序由哪些单必须知道这段话由哪些词组成,或这个程序由哪些单词符号构成。这个过程就是词法分析。词符号构成。这个过程就是词法分析。本讲稿第三页,共一百四十七页识别单词识别单词词法分析的任务是:从左到右逐个字符地对源程序进行扫描和分解,根据语言的词法规则识别出一个个的单词符号。词法分析是编译的基础。
3、执行词法分析的程序就是词法分析器(扫描器),其功能是输入源程序,输出单词符号。本讲稿第四页,共一百四十七页词法分析程序的主要任务:扫描源程序,识别出单词其他任务:滤掉空格,跳过注释、换行符追踪换行标志,复制出错源程序,宏展开,本讲稿第五页,共一百四十七页二、与语法分析程序的接口方式二、与语法分析程序的接口方式方式方式1:词法分析程序作为单独的程序,输:词法分析程序作为单独的程序,输入源程序,输出单词文件,提供给语法分入源程序,输出单词文件,提供给语法分析程序使用。析程序使用。方式方式2:词法分析程序作为语法分析程序的:词法分析程序作为语法分析程序的子程序,提供给语法分析程序调用,不产子程序,提
4、供给语法分析程序调用,不产生中间文件。生中间文件。本讲稿第六页,共一百四十七页 字符串字符串表示的源表示的源程序程序词法分析词法分析程序程序字符语法分析语法分析程序程序取单词回送单词词法分析程序作为子程序词法分析程序作为子程序本讲稿第七页,共一百四十七页三、单词的分类三、单词的分类【单词】【单词】单词是语言中具有独立意义的最小语单词是语言中具有独立意义的最小语法单位,包括保留字、标识符、运算符、标法单位,包括保留字、标识符、运算符、标点符号和常量等。点符号和常量等。【例如】【例如】ab是表达式,不是单词。是表达式,不是单词。a,b是标识符,是运算符,都是单词。是标识符,是运算符,都是单词。本讲
5、稿第八页,共一百四十七页程序设计语言的单词符号一般可分成下列程序设计语言的单词符号一般可分成下列5种:种:关关键键字字(基基本本字字,保保留留字字):具具有有固固定定意意义义的的标标识识符符,如如PASCAL语言中的语言中的begin,end,if和和while等。等。标标识识符符:用用来来表表示示各各种种名名字字,如如常常量量名名、变变量量名名和和过过程程名名等。等。常常数数:各各种种类类型型的的常常数数,如如25,3.1415,TRUE和和“ABC”等。等。运算符运算符:如如+,*,=j)i-;while(i=j)i-;经词法分析器处理后转换的单词序列为:经词法分析器处理后转换的单词序列为
6、:while ,-(,-id id的种别码的种别码,指向指向i i的符号表项的指针的符号表项的指针 =的种别码的种别码,-,-id ),-id -,-;,-本讲稿第十四页,共一百四十七页四、单词的三种描述工具四、单词的三种描述工具单词有三种描述工具:单词有三种描述工具:正规文法正规文法正规式正规式有穷自动机有穷自动机本讲稿第十五页,共一百四十七页1.正规文法正规文法正规文法的形式:正规文法的形式:右线性文法:右线性文法:AaB或或Aa 其中,其中,A、B为单个的非终结符,为单个的非终结符,a为单个的终结为单个的终结符。符。本讲稿第十六页,共一百四十七页标识符的文法标识符的文法PASCAL语言中
7、的标识符是字母开头,后跟字母数字串。设l表示az中的任何一英文字母,d表示09中的任一数字。描述标识符的文法为:G11I:I lB|l BlB|dB|l|d注意:一般关键字(保留字)都是由字母构成,它是标注意:一般关键字(保留字)都是由字母构成,它是标识符集合的子集。识符集合的子集。本讲稿第十七页,共一百四十七页无符号整数的文法无符号整数的文法描述无符号整数的文法为:GD:D dD|d给出123的推导过程:D 1D 12D 123给出00123的推导过程:D 0D 00D 001D 0012D 00123描述整数的文法为:GN:N+D|D D dD|d本讲稿第十八页,共一百四十七页最复杂的一类
8、单词要属无符号实数了,比如25.55e+5和2.1,它们可以由如下规则描述:无符号数d余留无符号数|.十进小数|e指数部分余留无符号数d余留无符号数|.十进小数|e指数部分|十进小数d余留十进小数余留十进小数e指数部分|d余留十进小数指数部分d余留整指数|s整指数整指数d余留整指数余留整指数d余留整指数|其中s表示正或负号(+,-),d表示09中的任一数字。无符号实数的文法无符号实数的文法本讲稿第十九页,共一百四十七页程序设计语言中的其它单词的文法非常简单:运算符+|-|*|/|=|界符,|;|(|)|其它的文法其它的文法本讲稿第二十页,共一百四十七页2、正规式、正规式正规表达式(regula
9、r expression)是说明单词的模式(pattern)的一种重要的表示法(记号),是定义正规集的工具。正规式也称正则表达式,也是表示正规集的数学工具。本讲稿第二十一页,共一百四十七页正规式的递归定义正规式的递归定义 是一个正规式,它所表示的正规集为是一个正规式,它所表示的正规集为 ;是一个正规式,它所表示的正规集为是一个正规式,它所表示的正规集为;aVaVT T是一个正规式,它所表示的正规集为是一个正规式,它所表示的正规集为aa;设设e e1 1和和e e2 2分别是表示的正规集分别是表示的正规集L(eL(e1 1)和和L(eL(e2 2)的正规式的正规式,则:则:a)a)e e1 1|
10、e|e2 2是正规式是正规式,表示的正规集为表示的正规集为L(eL(e1 1)L(e)L(e2 2););b)b)e e1 1e e2 2是正规式是正规式,表示的正规集为表示的正规集为 L(e L(e1 1)L(e)L(e2 2););c)c)e e1 1*是正规式是正规式,表示的正规集为表示的正规集为(L(e(L(e1 1)*。本讲稿第二十二页,共一百四十七页三种运算符规定运算符的优先顺序为:规定运算符的优先顺序为:*|。正规式定义中的正规式定义中的“|”读为读为“或或”(也(也有使用有使用“+”代替代替“|”的);的);“”读读为为“连接连接”;“*”读为读为“闭包闭包”(即,(即,任意有
11、限次的自重复连接)。任意有限次的自重复连接)。连接符连接符“”一般可省略不写。一般可省略不写。“*”、“”和和“|”都是左结合的。都是左结合的。本讲稿第二十三页,共一百四十七页示例示例=a,b 上的正规式和相应的正规集如下:正规式 正规集a aabab=a,bab a b=ab(ab)(ab)a,ba,b=aa,ab,ba,bba a =,a,aa,任意个a的串 =a n|n 0ba b a =ba n|n 0a|ba a,b,ba,baa,baaa,本讲稿第二十四页,共一百四十七页示例示例 正规式 正规集(ab)a,b =,a,b,aa,ab 所有由a 和b组成的串(ab)abb 所有结尾是
12、abb的任意a和b的串(ab)(aabb)(ab)上所有含有两个相继 的a或两个相继的b组成 的串本讲稿第二十五页,共一百四十七页描述单词的正规式描述单词的正规式程序设计语言的单词都能用正规式来定义。Pascal语言的标识符的正规式为:字母(字母|数字)*或写作 l(l|d)*无符号整数的正规式为:d*d=d+=dd*无符号实数的正规式为:d*(dd*|)(e(+|-|)dd*|)运算符的正规式为:|*|/|(|)|本讲稿第二十六页,共一百四十七页正规式等价正规式等价若两个正规式e1和e2所表示的正规集相同,即L(e1)=L(e2),则e1和e2等价,记为e1=e2。e1=ab,e2=ba,显
13、然等价;e1=b(ab),e2=(ba)b均为babababababab,等价;e1=(ab),e2=(ab)均表示由a和b组成的任意的符号串,所以等价。本讲稿第二十七页,共一百四十七页正规式的性质正规式的性质设设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
14、的幂等律的幂等律 本讲稿第二十八页,共一百四十七页3、有穷自动机、有穷自动机FA有穷自动机(也称有限自动机)作为一种识别装置,它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合,引入有穷自动机这个理论,正是为词法分析程序的自动构造寻找特殊的方法和工具。有有 穷穷 自自 动动 机机 分分 为为 两两 类类:确 定 的 有 穷 自 动 机(Deterministic Finite Automata)和不确定的有穷自动机(Nondeterministic Finite Automata),下面我们分别给出确定有穷自动机和不确定的有穷自动机的定义,有关概念及不确定的有穷自动机的确定化
15、,确定的有穷自动机的化简等算法。本讲稿第二十九页,共一百四十七页有穷自动机的模型有穷自动机的模型有穷自动机FA是具有离散输入输出系统的数学模型。系统的状态概括了对过去输入处理情况的信息。系统只需要根据当前所处的状态和面临的输入就可以决定系统的后继行为。每当系统出来了当前的输入后,系统的内部状态也将发生变化。例如:电梯控制装置就是有穷系统的典型。本讲稿第三十页,共一百四十七页19481948年,由神经物理学家年,由神经物理学家MeCulochMeCuloch和和PittsPitts首先提出首先提出FAFA模型。模型。a1a2a3a4 an#有有 穷穷控控 制制 器器输入带输入带有穷控制器控制读头
16、从左有穷控制器控制读头从左向右逐个扫描并读入输入向右逐个扫描并读入输入符号,并且根据控制器的符号,并且根据控制器的当前状态和当前输入符号当前状态和当前输入符号控制转入下一个状态。控制转入下一个状态。读头读头本讲稿第三十一页,共一百四十七页接收方式接收方式FA在初始状态下开始读入第一个输入符。FA接收输入串:终态方式。若读头在输入带上最后一个符号时,恰好进入某个终止状态,则宣布接收该输入串;否则,不接收。本讲稿第三十二页,共一百四十七页确定的有穷自动机DFA【DFA定义】一个确定的有穷自动机(DFA)M是一个五元组:M=(S,f,s0,Z),其中:S是一个有穷状态集,它的每个元素称为一个状态;是
17、一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号字母表;f是状态转换函数,是定义在SS上的单值单值映射,即若 f(q1,a)=q2,表示在当前状态为q1,输入符为a时,将转换为下一个状态q2,q2称作q1的后继状态;s0 S是唯一唯一的初态;Z S是一个终态集,终态也称可接受状态或结束状态。本讲稿第三十三页,共一百四十七页示例【例【例1】DFA M=(0,1,2,3,a,b,f,0,3),其中:,其中:f(0,a)=1 f(0,b)=2 f(1,a)=3 f(1,b)=2 f(2,a)=1 f(2,b)=3 f(3,a)=3 f(3,b)=3本讲稿第三十四页,共一百四十七页状态
18、转换矩阵DFA可以用一个矩阵表示可以用一个矩阵表示:行行:表示状态表示状态q;列列:表示输入字符表示输入字符a;矩矩阵阵元元素素:表表示示f(q,a)的的值值,即即在在q状态下读入输入符a时应转换到的下一个状态。ab012132213333状态输入符本讲稿第三十五页,共一百四十七页状态转换图DFA也可以表示成一张(确定的)状态也可以表示成一张(确定的)状态转换图:转换图:结点:表示状态,用圆圈圈起来;结点:表示状态,用圆圈圈起来;箭弧箭弧:表示状态转移的方向;:表示状态转移的方向;f(q1,a)q2:状态状态初态初态终态终态 q1 q2a本讲稿第三十六页,共一百四十七页b0123aaaba,b
19、bDFA:本讲稿第三十七页,共一百四十七页串串 为为DFA M所识别所识别对于对于*中的任何一个字符串中的任何一个字符串,若存在,若存在一条从初态结点到某一终态结点的通一条从初态结点到某一终态结点的通路,且这条通路上所有箭弧的标记符路,且这条通路上所有箭弧的标记符连接成的字符串等于连接成的字符串等于,则称,则称串串 为为DFA M所识别所识别(读出或接受)。(读出或接受)。若若M的初态结点同时又是终态结点,的初态结点同时又是终态结点,则为则为空字空字 可为可为M所识别所识别。本讲稿第三十八页,共一百四十七页示例示例例1中串abaa的识别路径为:b0123aaaba,bb0a1b2a1a3本讲稿
20、第三十九页,共一百四十七页扩充转换函数扩充转换函数f若有:f(q1,a1)=q2f(q2,a2)=q3f(q3,a3)=q4f(qn,an)=qn+1则可记为:f(q1,a1 a2an)=qn1本讲稿第四十页,共一百四十七页DFA M所能识别的语言集DFA M所能识别的字符串的全体记为所能识别的字符串的全体记为L(M)。若DFA M=(S,f,s0,Z),则有:L(M)|f(s0,)q,q Z 本讲稿第四十一页,共一百四十七页示例示例例1中的DFA M所识别的语言集L(M)为在a,b上所有含相继两个a或相继两个b的字符串。L(M)(a|b)*(aa|bb)(a|b)*b0123aaaba,bb
21、本讲稿第四十二页,共一百四十七页标识符的标识符的DFA标识符e2f3的识别路径为:0e121f1310字母字母1字母或数字字母或数字中间状态本讲稿第四十三页,共一百四十七页无符号整数的无符号整数的DFA无符号整数0123的识别路径为:0011121310数字数字1 数字数字本讲稿第四十四页,共一百四十七页无符号实数的无符号实数的DFA无符号实数3.8e+9的识别路径为:701346527dddddddee+7031.283e4+596本讲稿第四十五页,共一百四十七页不确定的有穷自动机NFA【NFA定义】不确定的有穷自动机NFA M是一个五元组:M=(S,f,S0,Z),其中:S是有穷状态集;是
22、有穷输入字母表;f是状态转换函数,是定义在S2S上的多值映射,即若 f(q1,a)=q2,q3,表示在当前状态为q1,输入符为a时,将转换为下一个状态q2和q3状态;S0 S是初态集;Z S是一个终态集。本讲稿第四十六页,共一百四十七页示例【例【例2】NFA M=(1,2,3,a,b,f,1,3,2),其中:,其中:f(1,a)=3 f(1,b)=1,2 f(2,a)=f(2,b)=3 f(3,a)=f(3,b)=2状态转换矩阵为:状态转换矩阵为:ab131,22332状态输入符本讲稿第四十七页,共一百四十七页NFA的状态转换图1a32bbbb本讲稿第四十八页,共一百四十七页串串 为为NFA
23、M所识别所识别对于对于*中的任何一个字符串中的任何一个字符串,若存在,若存在一条从初态结点到某一终态结点的通路,一条从初态结点到某一终态结点的通路,且这条通路上所有箭弧的标记符连接成且这条通路上所有箭弧的标记符连接成的字符串等于的字符串等于,则称,则称串串 为为NFA M所所识别识别(读出或接受)。(读出或接受)。本讲稿第四十九页,共一百四十七页示例示例例2中串bab的识别路径为:1b1a3b21a32bbbb本讲稿第五十页,共一百四十七页NFA M所能识别的语言集NFA M所能识别的字符串的全体记为所能识别的字符串的全体记为L(M)。若NFA M=(S,f,S0,Z),则有:L(M)|f(q
24、1,)q2,q1 S0,q2 Z 本讲稿第五十一页,共一百四十七页示例示例例2中的NFA M所识别的语言集为:L(M)b*(b|ab)(bb)*1a32bbbb本讲稿第五十二页,共一百四十七页讨论注意注意DFA与与NFA的异同点。的异同点。DFA是是NFA的特例。的特例。对于每个对于每个NFA M都一定存在一个都一定存在一个DFA M,使,使L(M)=L(M)。即:对每个即:对每个NFA M存在着与之等价的存在着与之等价的DFA M。与某一与某一NFA等价的等价的DFA不唯一。不唯一。本讲稿第五十三页,共一百四十七页标识符的标识符的NFAI字母字母B字母或数字字母或数字F字母或数字字母或数字字
25、母字母字母数字IB,FBB,FB,FF本讲稿第五十四页,共一百四十七页标识符的标识符的NFA标识符e2f3的识别路径为:IeB2BfB3FI字母字母B字母或数字字母或数字F字母或数字字母或数字字母字母本讲稿第五十五页,共一百四十七页五、词法分析器的自动生成原理五、词法分析器的自动生成原理正规式NFA转换DFA确定化化简最小DFA本讲稿第五十六页,共一百四十七页1.1.正规式 NFA对于上的一个正规式r,可以构造一个上的NFA M,使得L(M)=L(r)。转换本讲稿第五十七页,共一百四十七页构造方法构造方法引进初始结点X和终态结点Y,把正规式r表示成拓广转换图,如下所示:分析正规式r的语法结构,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 词法分析精选文档 词法 分析 精选 文档
限制150内