![[工学]第三章-词法分析newPPT课件_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/861cf754-25ef-45f0-8d7e-8c79314fd578/861cf754-25ef-45f0-8d7e-8c79314fd5781.gif)
![[工学]第三章-词法分析newPPT课件_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/861cf754-25ef-45f0-8d7e-8c79314fd578/861cf754-25ef-45f0-8d7e-8c79314fd5782.gif)
![[工学]第三章-词法分析newPPT课件_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/861cf754-25ef-45f0-8d7e-8c79314fd578/861cf754-25ef-45f0-8d7e-8c79314fd5783.gif)
![[工学]第三章-词法分析newPPT课件_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/861cf754-25ef-45f0-8d7e-8c79314fd578/861cf754-25ef-45f0-8d7e-8c79314fd5784.gif)
![[工学]第三章-词法分析newPPT课件_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-5/14/861cf754-25ef-45f0-8d7e-8c79314fd578/861cf754-25ef-45f0-8d7e-8c79314fd5785.gif)
已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-,1,第三章词法分析,词法分析与词法分析程序词法分析程序设计与实现状态转换图词法分析程序的自动生成有限自动机,-,2,词法:描述语言的单词符号的文法。,语言的单词符号种类很多,因此需要用不同的词法来描述他们。,例如描述某一语言标识符的文法也称为词法。,3.1词法分析与词法分析程序,思考:词法是哪类文法?,正规文法,-,3,词法分析的任务:对输入的字符串形式的源程序按顺序进行扫描,根据源程序的词法规则识别具有独立意义的单词(符号),并产生与其等价的属性字流作为输出。,词法分析程序定义:编译程序中完成词法分析任务的程序段,又称词法分析器或扫描器(scanner)。,-,4,词法分析程序的功能,识别出单词(内部表示);,While(i!=j)doif(ij)ii-j;/求i,j的差值,while,(,i,!=,j,),do,if,(,i,j,),i,=,i,-,j,;,-,6,3.2词法分析程序设计与实现,词法分析程序的输入与输出源程序的输入与预处理单词的识别词法分析程序与词法分析程序的接口词法分析器的设计与实现,-,7,单词是语言中具有独立意义的最小语法单位.单词的种类1.关键字(保留字):while、class、for、do2.标识符:a、m_a3.常数:无符号数、布尔常数、字符串常数等4.运算符:+、-、*5.界限符:逗号,分号,括号和引号种类的划分是根据编译的目标和方便设定的,单词,-,8,常用的单词内部形式:1、按单词种类分类2、保留字和分界符采用一符一类3、标识符和常数的单词属性值为符号表入口指针(标识符、常数相关属性很多),(单词属性,单词值),属性字:词法分析程序的输出形式-单词的内部形式,-,9,单词名称标识符无符号常数(整)无符号浮点数布尔常数字符串常数保留字分界符,类别编码1234567,单词值符号表入口指针整数值数值0或1内部字符串保留字或内部编码分界符或内部编码,1、按单词种类分类,-,10,2、保留字和分界符采用一符一类,单词名称标识符无符号常数(整)无符号浮点数布尔常数字符串常数BEGINENDFORDO:+*,(,类别编码123456789.20212223.,单词值符号表入口指针整数值数值0或1内部字符串-.-,-,11,3.2.2源程序的输入与预处理,词法分析器工作的第一步是接受输入源程序。通常是把输入的源程序引导至一个输入缓冲区,并对输入串进行预处理,然后才交付扫描器进行处理。,输入缓冲区的处理?,输入缓冲区的处理?显然,无论缓冲区设定为多大,都不能保证单词不会被它的边界打断,若有标识符TEST123,可能在缓冲区中成为:,.TES,在这种情况下,即使读到缓冲区的最后一个字符,但仍不能找到该单词的右边界,这时,若从外存上再读一部分源程序进入缓冲区,则会将没有处理过的字符(TES)冲掉。,-,13,扫描缓冲区,一分为二,互补使用。搜索指针从单词起点开始搜索,如果遇到半区域的边界,但尚未到达单词的终点时,则可将后续的输入字符装入该缓冲区的另一半。,单词起点,搜索指针,IfFatendoffirsthalfreloadsecondhalf;F+;ElseifFatendofsecondhalfreloadfirsthalf;moveFtobeginningoffirsthalfElseF+;,输入缓冲区两个半区互补功能的实现算法,-,15,源程序的预处理,为了减轻词法分析器实质性处理的负担,因此源程序从输入缓冲区进入词法分析器之前,要先对源程序进行预处理,预处理子程序一般完成的主要功能是:,过滤掉源程序中的注释;剔除源程序中无用字符;进行宏替换;实现文件包含的嵌入和条件编译的嵌入等。,-,16,具有两个缓冲区的词法分析器结构,-,17,实现方案(编译程序中实现方式):基本上有两种,1.词法分析单独作为一遍,2.词法分析程序作为单独的子程序,S.P.(字符串),词法分析,S.P.(符号串),语法分析,第一遍,第二遍,单词串,优点:结构清晰、各遍功能单一缺点:生成中间文件,效率低,-,18,词法分析程序的设计与实现,词法规则正规表达式,状态转换图(最小DFA),1.构造识别单词的状态转换图(1)对程序语言的单词按种类分别构造对应的状态转换图.(2)对各类转换图合并,构成一个能识别语言所有单词的状态转换图.,2.编程实现状态转换图,-,19,1.词法及其状态转换图,例1假定语言X的字母表=A-Z,a-z,0-9,;,=单词符号定义如下:1、标识符:字母打头的字母数字串2、无符号整数:无符号数字串3、分界符:;4、运算符:=,-,20,-,21,-,22,=,8,0,;,0,1,3,4,2,5,6,e,n,i,L,字母,字母,字母,字母,数字,数字,数字,=,=,;,;,0,1,2,4,5,6,3,L,i,n,e,=,8,0,;,1,Line,3,=,2,80,4,;,数字,数字,字母,字母,1,1,=,=,0,0,0,3,;,;,1,输入,输出,-,23,2.状态转换图的实现构造词法分析程序,标识符,无符号整数,分界符,运算符,例1假定语言X的字母表=A-Z,a-z,0-9,;,=单词符号定义如下:1、标识符:字母打头的字母数字串2、无符号整数:无符号数字串3、分界符:;4、运算符:=,标识符,S,1,非字母数字,字母,字母、数字,无符号整数,S,1,非数字,数字,数字,分界符,出口,S,;,运算符,S,=,出口,出口,出口,If(ISLETTER)WHILE(ISLETTERORISDIGIT)DO当前字符放入一临时字符数组;GETNEXTCHAR;/从缓冲区取下一字符;UNGETCH;/回退一字符OUTPUT(1,标识符名字);,If(ISDIGIT)WHILEISDIGITDO当前字符放入一临时字符数组;GETNEXTCHAR;/从缓冲区取下一字符;UNGETCH;/回退一字符OUTPUT(2,整数);;,-,27,分界符,出口,S,;,If(CH=;)OUTPUT(3,“;”);,If(CH=)OUTPUT(4,“=”);,运算符,S,=,出口,-,28,例1程序语言的词法分析程序,GETNEXTCHAR();SWITCH(CHCODE);CASE1:WHILE(ISLETTERORISDIGIT)DOSAVE();/当前字符放入一临时字符数组;GETNEXTCHAR();/从缓冲区取下一字符;UNGETCH;/回退一字符OUTPUT(1,标识符名字);BREAK;CASE2:WHILEISDIGITDOSAVE();/当前字符放入一临时字符数组;GETNEXTCHAR;/从缓冲区取下一字符;UNGETCH;/回退一字符OUTPUT(2,整数);;BREAK;,-,30,CASE3:OUTPUT(3,“;”);BREAK;CASE4:OUTPUT(4,“=”);BREAK;DEFAULT:Error();,标识符,无符号整数,分界符,S,1,字母,字母、数字,2,数字,数字,;,出口,出错,其他,运算符,=,-,31,采用面向对象的方法设计词法分析器,-,32,文法、正规表达式、有限自动机,有限自动机(最小化?),-,33,3.3词法分析程序的自动生成器LEX(LEXICALAnalyzerGenerator),LEX是1972年在贝尔实验室的UNIX上首先实现FLEX是1984年GNU工程推出,是LEX的扩充,并兼容LEX,原理:,LEX源程序(lex.l),S.P.字符串,LEX编译器,词法分析程序L(lex.yy.c),S.P.单词字符串,C编译器,可执行La.out,词法分析程序L(lex.yy.c),可执行La.out,-,34,1.LEX源程序的结构,一个LEX源程序具有如下形式:声明部分%识别规则%辅助函数各部分之间用%隔开,同时%在最左边.,-,35,一、声明部分,D1R1D2R2DnRn,其中:R1,R2,Rn为正则表达式。D1,D2,Dn为正则表达式名字,-,36,例:C+标识符letterA|B|Z|_digit0|1|9idletter(letter|digit)*,-,37,二、识别规则:是一串如下形式的LEX语句:模式动作P1A1P2A2PmAm,Pi:定义在D1,D2,Dn上的正规表达式,也称模式。Ai:Ai为语句序列,它指出,在识别出模式为Pi的单词以后,词法分析器所应作的动作。其基本动作是返回单词的类别编码和其属性。,-,38,三、辅助函数定义模式动作需要的函数在这三部分中一和三为可选项,但是二是必须的,一对特殊的符号%和%:出现在括号内的所有内容都被复制到文件lex.yy.c中,它们不会被当作正则定义处理。,-,39,下面是识别某语言单词符号的LEX源程序:,例:LEX源程序AUXILIARYDEFINITIONS/*声明部分*/letterAzdigit09%RECOGNIYIONRULES/*识别规则*/,“BEGIN”,“END”,“FOR”,RETURN(1,),RETURN(2,),RETURN(3,),-,40,“THEN”,“ELSE”,letter(letter|digit)*,digit(digit)*,RETURN(6,),RETURN(7,),RETURN(8,TOKEN),RETURN(9,DTB),“DO”,“IF”,RETURN(4,),RETURN(5,),“:”,“+”,“*”,RETURN(10,),RETURN(11,),RETURN(12,),-,41,“,”,“:=”,“=”,RETURN(13,),RETURN(14,),RETURN(15,),RETURN(16,),RETURN(17,),“(”,“)”,-,42,2.LEX的实现,LEX的功能是根据LEX源程序构造一个词法分析程序,该词法分析器实质上是一个有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黏土相框设计课件
- 打造书香校园课件
- 2025版企业战略顾问聘请合同模板(未来发展)
- 2025版门卫岗位技能提升与职业发展合同
- 2025版酒店客房用品环保材料销售合同
- 2025版剧院消防系统安装及施工安全责任合同
- 2025版高端手机抵押消费贷款合同范本
- 二零二五年健身房健身教练职业发展规划咨询合同
- 旬阳县医院消防知识培训课件
- 早餐安全知识培训课件
- 2024年中级通信专业实务(终端与业务)考试题库(含答案)
- GB/T 4213-2024气动控制阀
- 2025年度杭州汽车租赁合同中的还车检验条款3篇
- 燃气执法培训课件
- 法制视角下自媒体意见表达与法律规制研究
- 水果联营合同范例
- 数字人民币培训
- 2024新版《药品管理法》培训课件
- DB37-T 1389-2024钢箱梁顶推施工技术规范
- GB/T 15568-2024通用型片状模塑料(SMC)
- 车辆采购服务投标方案(技术方案)
评论
0/150
提交评论