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

链接地址:https://www.31ppt.com/p-2133485.html