第4章-词法分析ppt课件.ppt
《第4章-词法分析ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章-词法分析ppt课件.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌第第4 4章章 词法分析词法分析 本章将讨论词法分析程序的设计原则,本章将讨论词法分析程序的设计原则,单词的描述技术,识别机制及词法分析单词的描述技术,识别机制及词法分析程序的自动构造原理。程序的自动构造原理。4.1 对于词法分析程序的要求对于词法分析程序的要求4.2 正规表达式与正规集(正规语言)正规表达式与正规集(正规语言)4.3 有穷自动机有穷自动机4.5 正规文法与有穷自动机的等价性正规文法与有穷自动机的等价性4.4 正规式与有穷自动机的等价性正规式与有穷自动机的等价性4.6 词法分析程序的自动构造词法分析程序的自动构造武汉理
2、工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌本章重点本章重点 单词的描述工具单词的描述工具 单词的识别系统单词的识别系统 设计和实现词法分析程序设计和实现词法分析程序首先需要描述和刻画程序设计语言中的首先需要描述和刻画程序设计语言中的原子单位原子单位单词,其次需要识别单词单词,其次需要识别单词和执行某些相关的动作和执行某些相关的动作。描述程序设计语言的词法的机制是正则描述程序设计语言的词法的机制是正则表达式,识别机制是有穷状态自动机。表达式,识别机制是有穷状态自动机。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌词法分析程序词法分析程序 实现词法分析(实现词法分析(le
3、xical analysislexical analysis)的程)的程序称为词法分析程序(或扫描器)。序称为词法分析程序(或扫描器)。对构成源程序的字符串从左到右的扫描,对构成源程序的字符串从左到右的扫描,逐个字符地读入源程序字符并按照构词规则逐个字符地读入源程序字符并按照构词规则切分成一个一个具有独立意义的单词。并确切分成一个一个具有独立意义的单词。并确定其属性(如保留字、标识符、运算符、界定其属性(如保留字、标识符、运算符、界限符和常量等)。再把它们转换成长度统一限符和常量等)。再把它们转换成长度统一的标准形式的标准形式属性字(属性字(TOKENTOKEN)。)。词法分析程序的主要任务:
4、词法分析程序的主要任务:武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 词法分析是编译过程中的第一个阶段,词法分析是编译过程中的第一个阶段,在语法分析前进行在语法分析前进行 。也可以和语法分析结。也可以和语法分析结合在一起作为一遍,由语法分析程序调用合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析词法分析程序来获得当前单词供语法分析使用。使用。源程序源程序词法分析程序词法分析程序语法分析程序语法分析程序Tokenget token. .词法分析程序和语法分析程序的关系词法分析程序和语法分析程序的关系武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天
5、煌 词法分析工作从语法分析工作独立出词法分析工作从语法分析工作独立出来的原因:来的原因:简化设计简化设计改进编译效率改进编译效率增加编译系统的可移植性增加编译系统的可移植性武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 4.1 4.1 对于词法分析器的要求对于词法分析器的要求4.1.1 4.1.1 词法分析器的功能和输出形式词法分析器的功能和输出形式功能:输入源程序,输出单词符号。功能:输入源程序,输出单词符号。 单词符号是一个程序语言的基本语法符号。单词符号是一个程序语言的基本语法符号。单词的分类(五类):单词的分类(五类):(1) 关键字:关键字:由程序语言定义的具有固定意义
6、的标由程序语言定义的具有固定意义的标识识 符。也称为保留字或基本字。符。也称为保留字或基本字。(2) 标识符:标识符:用来表示程序中各种名字的字符串。用来表示程序中各种名字的字符串。(3) 常常 数:数:常数的类型一般有整型、实型、布尔型、常数的类型一般有整型、实型、布尔型、文字型。文字型。(4) 运算符:运算符:如如+、 、*、/ 等。等。(5) 界限符:界限符:如逗号、分号、括号等。如逗号、分号、括号等。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 一个程序语言的关键字、运算符、界限符都是固一个程序语言的关键字、运算符、界限符都是固定的,即数量有限及意义明确;而对于标识符和
7、常数通定的,即数量有限及意义明确;而对于标识符和常数通常是不确定的。常是不确定的。 词法分析器所输出的单词符号常常表示成如词法分析器所输出的单词符号常常表示成如下的二元式:下的二元式: (单词种别,单词符号的属性值)(单词种别,单词符号的属性值) 单词种别通常用整数编码。一个语言的单词符号如何分单词种别通常用整数编码。一个语言的单词符号如何分种,分成几种,怎样编码,是一个技术性的问题。它主要取种,分成几种,怎样编码,是一个技术性的问题。它主要取决于处理上的方便。标识符一般统归为一种。常数则直按类决于处理上的方便。标识符一般统归为一种。常数则直按类型(整、实、布尔等)分种。关键字可将其全体视为一
8、种,型(整、实、布尔等)分种。关键字可将其全体视为一种,也可以一字一种。采用一字一种的分法实际处理起来较为方也可以一字一种。采用一字一种的分法实际处理起来较为方便。运算符可采用一符一种的分法,但也可以把具有一定共便。运算符可采用一符一种的分法,但也可以把具有一定共性的运算符视为一种。至于界符一般用一符一种的分法。性的运算符视为一种。至于界符一般用一符一种的分法。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 如果一个种别只含一个单词符号,那么,如果一个种别只含一个单词符号,那么,对于这个单词符号,种别编码就完全代表它对于这个单词符号,种别编码就完全代表它自身了。若一个种别含有多个
9、单词符号,那自身了。若一个种别含有多个单词符号,那么,对于它的每个单词符号,除了给出种别么,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性信编码之外,还应给出有关单词符号的属性信息。息。 单词符号的属性是指单词符号的特性或单词符号的属性是指单词符号的特性或特征。属性值则是反应特性或特征的值。例特征。属性值则是反应特性或特征的值。例如,对于某个标识符,常将存放它的有关信如,对于某个标识符,常将存放它的有关信息的符号表项的指针作为其属性值;对于某息的符号表项的指针作为其属性值;对于某个常数,则将存放它的常数表项的指针作为个常数,则将存放它的常数表项的指针作为其属性值。其属性
10、值。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 在教材中,我们假定关键字、运算符和界限在教材中,我们假定关键字、运算符和界限符都是一符一种。对于它们,词法分析器只给出符都是一符一种。对于它们,词法分析器只给出其种别编码,不给出它自身的值。标识符单列一其种别编码,不给出它自身的值。标识符单列一种。常数按类型分种。种。常数按类型分种。考虑下述考虑下述C十代码段:十代码段: while(ij)i; 经词法分析器处理后,它将被转换为如下的经词法分析器处理后,它将被转换为如下的单词符号序列:单词符号序列: while, (,(, id,指向,指向i的符号表项的指针的符号表项的指针 ,
11、id,指向,指向j的符号表项的指针的符号表项的指针 ),), id,指向,指向i的符号表项的指针的符号表项的指针 , ;,;,武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌4.1.24.1.2词法分析器的设计词法分析器的设计 我们将按照词法分析的任务和作为一个独我们将按照词法分析的任务和作为一个独立子程序的要求来考虑词法分析器的设计。立子程序的要求来考虑词法分析器的设计。一、一、 输入、预处理输入、预处理 词法分析器工作的第一步是输入源程序文词法分析器工作的第一步是输入源程序文本。输入串一般是放在一个缓冲区中,这个缓本。输入串一般是放在一个缓冲区中,这个缓冲区称输入缓冲区。词法分
12、析的工作(单词符冲区称输入缓冲区。词法分析的工作(单词符号的识别)可以直接在这个缓冲区中进行。但号的识别)可以直接在这个缓冲区中进行。但在许多情况下,把输入串预处理一下,对单词在许多情况下,把输入串预处理一下,对单词符号的识别工作将是比较方便的。符号的识别工作将是比较方便的。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 某些跳格符、回车符和换行符等编辑性字符,在某些跳格符、回车符和换行符等编辑性字符,在别处的任何出现都没有意义,预处理时可以将其别处的任何出现都没有意义,预处理时可以将其剔掉。剔掉。 注解部分注解部分仅在于改善程序的易读性和易理解性。仅在于改善程序的易读性和易理解
13、性。对于它们,预处理时可以将其剔掉。对于它们,预处理时可以将其剔掉。 空白符(一个或相继数个)用作单词符号之间的空白符(一个或相继数个)用作单词符号之间的间隔,即用作界符。在这种情况下,预处理时可间隔,即用作界符。在这种情况下,预处理时可把相继的若干个空白结合成一个。把相继的若干个空白结合成一个。 我们可以构造一个预处理子程序,它能够完我们可以构造一个预处理子程序,它能够完成上面所述的任务。成上面所述的任务。预处理的主要工作:预处理的主要工作:武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌二、二、 单词符号的识别:超前搜索单词符号的识别:超前搜索 词法分析器的结构如图词法分析器的
14、结构如图4.14.1所示。所示。图图4.1 词法分析器词法分析器武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌三、三、 状态转换图状态转换图 状态转换图是一张有限方向图。在状态转换状态转换图是一张有限方向图。在状态转换图中,结点代表状态,用圆圈表示。状态之间用图中,结点代表状态,用圆圈表示。状态之间用箭弧连结。箭弧上的标记(字符)代表在射出结箭弧连结。箭弧上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的输入字符点(即箭弧始结点)状态下可能出现的输入字符或字符类。例如,图或字符类。例如,图4.2(a)表示:在状态)表示:在状态1下,下,若输入字符为若输入字符为X,则读
15、进,则读进X,并转换到状态,并转换到状态2。若。若输入字符为输入字符为Y,则读进,则读进Y,并转换到状态,并转换到状态3。一张。一张转换图只包含有限个状态(即有限个结点),其转换图只包含有限个状态(即有限个结点),其中有一个被认为是中有一个被认为是初态初态,而且实际上至少要有一,而且实际上至少要有一个个终态终态(用双圈表示)。(用双圈表示)。123XY图图4.2(a)转换图示例)转换图示例武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌 一个状态转换图可用于识别(或接受一个状态转换图可用于识别(或接受)一定的一定的字符串。字符串。 例如,识别标识符的转换图如图例如,识别标识符的转换
16、图如图4.2(b)所示。)所示。图图4.24.2(b b)识别标识符的转换图)识别标识符的转换图武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌图图4.24.2(c c)识别整数的转换图识别整数的转换图图图4.24.2(d d)识别识别FORTRAN实型常数的转换图实型常数的转换图武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌4.2 4.2 正规表达式与正规集(正规语言)正规表达式与正规集(正规语言) 程序设计语言中的单词是基本语法程序设计语言中的单词是基本语法成分。单词符号的语法可以用有效的工成分。单词符号的语法可以用有效的工具加以描述,并且基于这类描述工具,具加以
17、描述,并且基于这类描述工具,实现词法分析程序的自动构造。实现词法分析程序的自动构造。 正规表达式是典型的词法规则描述正规表达式是典型的词法规则描述工具。工具。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌正规式正规式定义定义(正规式和它所表示的正规集):(正规式和它所表示的正规集): 设字母表为设字母表为 , 辅助字母表辅助字母表 = , , , , , , , 正规式也称正则表达式。正规式也称正则表达式。 正规表达式(正规表达式(regular expression)是说明单词的)是说明单词的模式模式(pattern)的一种重要的表示法(记号),是定义的一种重要的表示法(记号)
18、,是定义正规集的数学工具。我们用以描述单词符号。下面正规集的数学工具。我们用以描述单词符号。下面是正规式和它所表示的正规集的递归定义。是正规式和它所表示的正规集的递归定义。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌1. 和和 都是都是 上的正规式,它们所表示的正规上的正规式,它们所表示的正规集分别为集分别为 和和 ; 2. 对任何对任何a ,a是是 上的一个正规式,它所表上的一个正规式,它所表示的正规集为示的正规集为a;3. 假定假定e1和和e2都是都是 上的正规式,它们所表示的上的正规式,它们所表示的正规集分别为正规集分别为L(e1)和和L(e2),那么,那么,(e1),
19、e1 e2, e1 e2, e1 也都是正规式也都是正规式, 它们所表示的正规集分它们所表示的正规集分别为别为L(e1), L(e1) L(e2), L(e1)L(e2)和和(L(e1) 。4. 仅由有限次使用上述三步骤而定义的表达式仅由有限次使用上述三步骤而定义的表达式才是才是 上的上的正规式正规式,仅由这些正规式所表示的,仅由这些正规式所表示的集合才是集合才是 上的上的正规集正规集。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌注意注意:其中其中“ ”、 “ ”、 “ ”均为均为正规式正规式运算符:运算符:2. “ ”读为读为“连接连接”;3. “ ”读为读为“闭包闭包”(即
20、,任意有限次的自重(即,任意有限次的自重复连接)。复连接)。 在不致混淆时,括号可省去,但规定算符在不致混淆时,括号可省去,但规定算符的优先顺序为的优先顺序为“ ”、“ ”、“ ” 。连接符。连接符“ ”一般可省略不写。一般可省略不写。“ ”、“ ”和和“ ” 都是左结合的。都是左结合的。1. “ ”读为读为“或或” ;武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌例子例子令令 =a,b, 上的正规式和相应的正规上的正规式和相应的正规集的例子有:集的例子有:正规式正规式 正规集正规集 a a a b a,b ab ab (a b)(a b) aa,ab,ba,bb a ,a,a,
21、 任意个任意个a的串的串武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌正规式正规式 正规集正规集(a b) ,a,b,aa,ab 所有由所有由a 和和b组成的串组成的串(a b) (aa bb)(a b) 上所有含有两个相继上所有含有两个相继 的的a或两个相继的或两个相继的b组成组成 的串的串武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌讨论下面两个例子讨论下面两个例子例例4.2 有有 =d=d,. .,e e,+ +,-,-,则则 上的正规式上的正规式 d d (.dd (.dd )(e(+ )(e(+ - -)dd)dd ) )表示的是无符号数表示的是无符号数的
22、集合。其中的集合。其中d d为为0 09 9的数字。的数字。结论:结论:程序设计语言的单词都能用正规式来定义。程序设计语言的单词都能用正规式来定义。例例4.1 令令 =l,d,则,则 上的正规式上的正规式 r=l (l d) 定定 义义的正规集为的正规集为: l, l l, l d, l d d,其中其中l代表字母代表字母,d代表数字代表数字,正规式正规式 即是即是 字母字母(字母字母 数字数字) ,它表示的它表示的正规集中的每个元素的模式是正规集中的每个元素的模式是“以字母打头的字母以字母打头的字母数字串数字串”,就是就是Pascal和多数程序设计语言允许的的和多数程序设计语言允许的的标识符
23、的词法规则。标识符的词法规则。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌正规式的等价性正规式的等价性若两个正规式若两个正规式e1和和e2所表示的正规集所表示的正规集相同相同,则说则说e1和和e2等价等价,写作写作e1=e2。例如:例如: e1= (a b), e2 = b a, e1= e2 又如:又如: e1= b(ab) , e2 =(ba) b, e1= e2 e1= (a b) , e2 =(a b ) , e1= e2武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌设设U,V,W为正规式,正规式服从的代数规律有:为正规式,正规式服从的代数规律有:1. U
24、 V=V U “或或”服从交换律服从交换律2. U (V W)=(U V) W“或或”的可结合律的可结合律3. (UV)W=U(VW)“连接连接”的可结合律的可结合律4. U(V W)=UV UW (V W)U=VU WU分配律分配律5. U=U, U =U 是是“连接连接”的恒等的恒等元元 素零一律素零一律6. U U=UU =U UU “或或”的抽取律的抽取律武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌4.3 4.3 有穷自动机有穷自动机 有穷自动机有穷自动机(也称有限自动机也称有限自动机)作为一种识别装作为一种识别装置,它能准确地识别正规集,即识别正规文法所置,它能准确地
25、识别正规集,即识别正规文法所定义的语言和正规式所表示的集合,引入有穷自定义的语言和正规式所表示的集合,引入有穷自动机这个理论,正是为词法分析程序的自动构造动机这个理论,正是为词法分析程序的自动构造寻找特殊的方法和工具。寻找特殊的方法和工具。 有穷自动机分为两类:确定的有穷自动机有穷自动机分为两类:确定的有穷自动机(Deterministic Finite Automata)和不确定的有穷自和不确定的有穷自动机动机(Nondeterministic Finite Automata) 。武汉理工大学计算机科学系陈天煌武汉理工大学计算机科学系陈天煌关于关于有穷自动机有穷自动机讨论如下内容:讨论如下内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 ppt 课件
限制150内