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