欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《编译原理》第三章词法分析.ppt

    • 资源ID:6528790       资源大小:718KB        全文页数:37页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《编译原理》第三章词法分析.ppt

    第三章 词法分析,第三章 词法分析,主要章节3.1 词法分析与词法分析程序3.2 词法分析程序的设计与实现3.3 词法分析程序的自动生成,3.1 词法分析程序的功能,词法分析的功能从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,再转换成词标流的过程,3,4,while(i=j)if(ij)ii-j;else j=j-i while,(,i,=,j,),if,(,i,j,),i,=,i,-,j,;,else,j,=,j,-,i,;,3.1 词法分析程序的功能,3.2 词法分析器的设计与实现,3.2.1 单词与属性字1.单词单词是语言中具有独立意义的最小语法单位。要素 独立的意义最小的语法单位,5,例A*B,单词是“A”、“*”和“B”。int int1,单词是“int”和“int1”。A+*B,单词是“A”、“+”、“*”和“B”。,复习,流行语言词法规则的表示:BNF或EBNF;3型文法;正规式例-int|float|for|#include|char|-|V=(|)*,6,1关键字(保留字或基本字):关键字一般是语言系统本身定义的,通常是由字母组成的字符串。,7,2标识符:用来表示各种名字如,变量名,数组名,结构名,函数名,文件名等。,3.2.1 单词与属性字,3常数:256,3.14,true,abc 4运算符:如,、*、/等等 5分界符:如逗号,分号,括号,单双引号等,8,3.2.1 单词与属性字,3.2.1 单词与属性字,注意:(1)同一个字符开头+后续字符-跨多个单词类;,9,(2)非单词成分和预处理成分;例:源程序注释;/*.*/预处理指令:#define#include,3.2.1 单词与属性字,2.属性字对所识别的单词的数据结构表示。L1=(T,C)属性字,10,刻画单词类别(单词性质)如:标识符;运算符;单词的内码值(可空),说明,11,单词类别通常用整数编码单词类别提供给语法分析程序使用单词符号属性信息记录单词符号的特征或特性单词的属性值提供给语义分析程序使用编码形式:一类一种:关键字、标识符、常数、运算符、界符一字一种:关键字、运算符、分界符各一码,例题(一类一种),int x=10,y;,12,注:通常将标识符的属性放在符号表中,因此常把指向存放标识符有关信息的符号表入口的指针作为标识符的属性值,13,源程序经词法分析器的输出while,id,指向i的符号表入口的指针relationalop,id,指向j的符号表入口的指针do,if,id,指向i的符号表入口的指针 id,指向j的符号表入口的指针,while,i,j,do,if,i,j,then,i,:=,i,-,j,else,j,:=,j,-,i,例题(一字一种),3.2.2 源程序的输入与预处理,1输入缓冲区成对且对半互补的输入缓冲区模式。即将一个缓冲区分为两个半区,每个半区长度为n(n一般为磁盘块或簇长的整倍数),其结构如图所示。,14,n:取2的整次幂;每个半区的末尾设置标志“eof”表示读入该半区的源程序的结束;B:单词w开始指针;F:扫描w的指针;,两半区互补功能算法:if(F=前“eof”)重新分配、装入后半区;F+;else if(F=后“eof”)重新分配、装入前半区;F=1;else F+;,15,2两个缓冲区的输入模式,控制线 数据线X:固定长度的存储空间;,16,预处理程序(作用)(1)减少内存空间占用;(2)减轻扫描器实质性处理的负担;预处理程序主要任务:(1)滤掉源程序中的非单词成分(如无用空格;换行符等);(2)实际的预处理工作,17,滤掉注释;宏替换;文件包含的嵌入;条件编译的嵌入;,设计工具 FA作为扫描器的状态转换图的构造:step1:对语言的各类单词分别构造状态图;step2:将各类状态图合并,构成一个能识别该语言所有单词的状态图。,18,(1)将各类单词的状态图的初态合并为一个惟一初态;(2)调整冲突编号。,例3.2 设某语言由标识符和无符号正整数两类单词构成,标识符和无符号正整数的词法规则:L a|b|z|A|B|ZD 0|1|9 L(L|D|_)*DD*,19,step1:对语言的各类单词分别构造状态图;,20,其中:other表示非L|D|_字符,其中:other表示非D 字符,step1,*,*,step2:将各类状态图合并,构成一个能识别该语言所有单词的状态图。,21,其中:other表示非L|D|_字符,其中:other表示非D 字符,step2,*,*,4,5,词法分析方法:直接分析法,例:设C语言子集由下列单词符号构成,以正规式的形式表示:关键字:int,if,for标识符:字母(字母|数字)*无符号整常数:数字(数字)*运算符或分界符:=,*,+,+,+=,,22,23,24,25,26,语言词法规则 状态转换图(FA)可行的扫描器 存储和激活问题,数据中心法程序中心法,状态转换图的实现之一 数据中心法将状态转换图看成一种数据结构(状态矩阵表),用总控程序控制输入的源程序串在其上运行。,27,状态矩阵 二级目录表主表:数据项=状态+分表地址或子程序入口 状态=终态时,分表地址为子程序入口 状态=非终态时,为分表入口2.分表:数据项=当前输入字符+转换状态,主表 分表,28,状态转换图的实现之二 程序中心法,将状态转换图看成一个流程图,从初态开始对它的每个节点(状态)编写一函数或直接跟踪状态图从初态开始的转换完成所有分支的跟踪来编写程序。例3.5 设单一小写字母或单一数字或“/”为合法单词,表示它们的状态转换图如图所示。,29,char char1;char1=nextchar();if(state=i)switch(char1)case az:J(chartype,char1);break;case 09:K(chartype,char1);break;case:L(chartype,char1);break;default:error;,其中:J,K,L为状态j,k,l所对应的函数;nextchar()为一函数,功能是从当前扫描的源程序读取下一个字符;,状态转换图的实现,int state=0;enum lettet(a.z);enum number(0.9);char char1;while(1)char1=nextchar();switch(state)case 0:switch(char1)case az:state=1;break;09:state=3;break;case case=:state=5;break;case*:state=6;break;case+:state=7;break;case:state=11;break;case:state=12;break;default:state=13;break;,31,状态转换图的实现,case 1:while(char1=letter|number)char1=nextchar();state=2;break;case 2:untread();return(02,value)or return(01,value);break;/*函数untread()功能是回退一个已读进的字符;属性01表示关键字;属性02表示标识符*/case 3:while(char1=number)char1=nextchar();state=4;break;case 4:untread();return(03,value);break;/*属性03表示无符号整常数*/case 5:return(04,);break;/*属性04表示“”*/case 6:return(05,);break;/*属性05表示“*”*/,32,状态转换图的实现,case 7:char1=nextchar();if(char1=+)state=9;else if(char1=”=”)state=10;else state=8;break;case 8:untread();return(08,);break;/*属性08表示“+”*/case 9:return(09,);break;/*属性09表示“+”*/case 10:return(12,);break;/*属性12表示“+=”*/case 11:return(10,);break;/*属性10表示“”*/case 12:return(11,);break;/*属性11表示“”*/case 13:error;/*error 是语法错处理函数*/,33,一.自动生成思想,一个词法分析程序产生器它接收用正规式表示的定义在某语言字母表上的单词,然后从此正规式出发(1)构造能识别正规式描述的单词集(正规集)的非确定有限自动机NFA M,此步构造算法定义为X。(2)用子集法(子集法实现算法命名为Y)将M确定化,得到与其等价的DFA M;(3)用划分算法(命名为Z)对M 化简,得到DFA M。则这个DFA M即是理论上的扫描器。,34,LEX运行与应用过程,35,二、用LEX建立词法分析程序的过程,LEX编译器,LEX源程序lex.1,语言x的词法分析器,LEX编译器接收LEX源程序,由LEX编译器处理LEX源程序,产生一个词法分析器作为输出。在UNIX环境中,LEX编译器的输出是一个具有标准文件的C程序,经过C编译器的编译产生a.out文件,a.out是一个实际可以运行的词法分析器。,练习,例:设有识别C语言“+”“”“+=”的NFA如下,36,例:设有识别C语言“+”“”“+=”的NFA如下,37,0123,*,*,*,*,*,*,

    注意事项

    本文(《编译原理》第三章词法分析.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开