第2讲--词法分析ppt课件.ppt

第2讲--词法分析ppt课件.ppt

ID:58703089

大小:1.41 MB

页数:82页

时间:2020-10-04

第2讲--词法分析ppt课件.ppt_第1页
第2讲--词法分析ppt课件.ppt_第2页
第2讲--词法分析ppt课件.ppt_第3页
第2讲--词法分析ppt课件.ppt_第4页
第2讲--词法分析ppt课件.ppt_第5页
资源描述:

《第2讲--词法分析ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二讲词法分析词法分析器的构造正规表达式与有穷自动机词法分析器的自动产生§1.词法分析器的构造编译程序首先在单词级别上来分析和翻译源程序。词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,即把字符串形式的源程序改造为单词符号串形式的中间程序。完成这一任务的程序称为词法分析器(或扫描器,scanner)。CompilerPrinciples2CompilerPrinciples3一、分析1.词法分析程序的主要任务:输入剔除非单词符号—空格、换行,注释宏展开,……拼单词符号—**、:=、FOR、BEGIN等产生行号输出CompilerPrincipl

2、es4一、分析2.高级语言的单词符号可分为五种:关键字运算符分隔符标识符常数CompilerPrinciples5一、分析3.单词符号分类与编码:单词符号分成几种,怎样编码是一个技术性问题,它取决于处理上的方便标识符一般归为一种。常数则宜按类型(整、实、布尔、字符等)分种。关键字可视其全体为一种,也可以一字一种,采用一字一种的分法实际处理起来较为方便。运算符可采用一符一种的分法,但也可以把具有一定共性的运算符视为一种。至于分隔符一般用一符一种的分法CompilerPrinciples6一、分析3.单词符号的数据结构:词法分析器输出的单词符号常常表示为二元式:(单词种类编

3、号,单词符号的属性值)属性值是反映特性或特征的值。例如,对于某个标识符,常将存放它有关信息的符号表项的指针作为其属性值;对于某个字符串常量,则将该串的首地址指针作为其属性值如果一个种别只含有一个单词符号,那么对于这个单词符号,种别编码就完全代表它自身了,因此属性值就没有意义了CompilerPrinciples7例:position=initial+rate*60的词法分析过程position=initial+rate*60(01,p1)(10,—)(01,p2)(11,—)(01,p3)(12,—)(50,60)IndexTokenType01Identifier02

4、Keyword1xOperator5xConstant……IndexNameOtherAttrp1position…p2initial…p3rate…CompilerPrinciples8二、设计1.词法分析器与语法分析器的衔接通常把词法分析器安排成语法分析器的一个子程序,而不是单独的一遍当被调用时,词法分析器就从源程序字符串中识别出一个(一批)单词符号,把它交给语法分析器去处理;语法分析器处理完毕,就开始下一次调用。如此重复,直至源程序处理完毕CompilerPrinciples9二、设计1.词法分析器与语法分析器的衔接这种设计出于如下考虑:词法规则描述简单,便于独立

5、处理;把词法独立出来使之专注于单词的分析,而不涉及到语法,可以简化编译器前端的设计;可以采用专门的读入缓冲技术来提高扫描字符串的效率;便于语法分析获得更多信息(上下文环境);便于处理同一语言的几种不同表示形式(扩展)由以上考虑,可以初步设计为:源程序扫描器语法分析器取符号送符号CompilerPrinciples10CompilerPrinciples11二、设计2.输入和预处理输入串一般放在一个缓冲区中,这个缓冲区称为:源程序输入缓冲区。词法分析器的工作可以直接在这个缓冲区中进行但在许多情况下,把输入串预处理一下,对单词符号的识别工作将是比较方便的。预处理工作包括对空

6、白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注释等于是,可以构造一个预处理子程序,它从源程序输入缓冲区读入字符串,预处理后,装入扫描缓冲区,以备扫描器使用CompilerPrinciples12二、设计3.对半互补缓冲区扫描器对扫描缓冲区进行扫描时,一般使用两个指示器,一个指向当前正在识别单词的开始位置(新单词的首字符),另一个用于向前搜索以寻找单词的终点(新单词的尾字符)但是不论扫描缓冲区设得多大,都不能保证单词符号不会被缓冲区的边界所打断一个常用的技术是:把扫描缓冲区一分为二,并使两区首尾相接,形成一个对半互补缓冲区。。。。。。While。。。。。。起点指

7、针搜索指针符号表单词符号扫描器预处理子程序输入缓冲区源程序扫描缓冲区语法分析器取单词综上所述,预处理子程序、扫描器和语法分析器相互之间的关系及工作情况可图示如下:CompilerPrinciples13CompilerPrinciples14三、进一步的分析1.识别相同前缀的单词CompilerPrinciples15CompilerPrinciples16三、进一步的分析2.词法错误如果没有其他组件的帮助,词法分析器很难发现源代码中的错误(P71)[例]在TurboC下运行下面的C程序1intmain(){2intx=3;3if(x%2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。