编译原理-第三章课件.ppt

编译原理-第三章课件.ppt

ID:58457801

大小:3.89 MB

页数:117页

时间:2020-09-07

编译原理-第三章课件.ppt_第1页
编译原理-第三章课件.ppt_第2页
编译原理-第三章课件.ppt_第3页
编译原理-第三章课件.ppt_第4页
编译原理-第三章课件.ppt_第5页
资源描述:

《编译原理-第三章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理——第三章词法分析王金伟计算机与信息工程学院天津师范大学7/28/20211TJNU-COCIE-WJW第三章词法分析3.1对于词法分析器的要求3.2词法分析器的设计3.3正规表达式与有限自动机3.4词法分析器的自动产生(LEX)7/28/20212TJNU-COCIE-WJW词法分析的任务从左至右逐个字符的对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为由单词符号串组成的程序词法分析器:执行词法分析的程序输入:源程序输出:单词符号词法分析器的构造方法手工方法:根据词法直接编程序(有限自动机)自动方法:利用一些工具Lex7/28/20213TJNU-CO

2、CIE-WJW3.1对词法分析器的要求源程序词法分析器单词符号1.单词符号概念指语言中具有独立意义的最小的语法符号例:C=A*3.14+5单词:C,A——变量3.14,5——常数=,*,+——算符一、词法分析器的功能和输出形式7/28/20214TJNU-COCIE-WJW2.单词的种类(1)基本字(保留字,关键字)由程序语言定义的具有固定意义的标识符。用户不能用来表示变量名,函数名等标识符例:C语言中的“if”“else”“while”…(2)标识符用户使用的,用来表示各种名字,变量名,函数名等7/28/20215TJNU-COCIE-WJW2.单词的种类(续)(3)常数整型

3、、实型、逻辑、字符…例:1000,3.14,TRUE,“Abcd”(4)运算符+、-、*、/…(5)界符,;{}()…7/28/20216TJNU-COCIE-WJW词法分析器输出的单词符号常常用二元式来表示:<单词种别,单词符号的属性值>二、单词的表示形式7/28/20217TJNU-COCIE-WJW1.单词种别通常用整数编码来表示(1)关键字,运算符,界符一字一种编码(处理起来比较方便)例:if,else,‘(’,‘+’,…(2)常数按类型分别给出编码例:整型,实型,布尔型,…(3)标识符统归一种,只给一个编码例:变量名,函数名等都是一种编码7/28/20218TJNU-CO

4、CIE-WJW1.单词种别(续)注意:(1)若一个种别只包含一个单词符号(一种一字),对于该单词符号,种别编码就可以代表它自身了。例如:关键字,运算符,界符(2)若一个种别包含有多个单词符号(一种多字),对于该种别的每个单词符号,除了给出种别编码,还需给出单词符号的属性值例如:整型常数,实型常数,布尔常数,标识符7/28/20219TJNU-COCIE-WJW2.单词符号的属性信息单词符号的属性:指单词符号的特性或特征单词符号的属性值:反映单词特性或特征的值7/28/202110TJNU-COCIE-WJW2.单词符号的属性信息(续)属性值的表示方法:(1)基本字,运算符,界符(一

5、字一种)只给其种别编码,不给出它的属性值例:基本字while表示成:<$WHILE,->(2)常数表示成标准的二进制形式例:1024表示成:<$CONST,1024的二进制表示>(3)标识符用字符串编码或对应的符号表项地址例:name表示成:<$ID,“name”>或<$ID,指向name的符号表项的指针>7/28/202111TJNU-COCIE-WJW例1:FORTRAN编译程序的词法分析器,在扫描输入串:IF(5.EQ.M)GOTO100输出的单词如下:单词符号<单词种别编码,单词符号的属性值>IF<34,->左括号<2,->整常数<20,5的二进制表示>等号<6,->标识符

6、<26,‘M’>右括号<16,->GOTO<40,->标号<19,‘100’二进制表示>三、例子7/28/202112TJNU-COCIE-WJW例2:考虑下面C++的一段代码:while(i>=j)i--;经词法分析器处理后,将被转换成如下单词符号序列:单词符号<单词种别编码,单词符号的属性值>while(<(,->i>=<>=,->j)<),->i--<--,->;<;,->7/28/202113TJNU-COCIE-WJW3.2词法分析器的设计源程序预处理子程序输

7、入缓冲区扫描器扫描缓冲区输入列表单词符号一、词法分析器的结构7/28/202114TJNU-COCIE-WJW1.输入缓冲区、预处理子程序(1)输入源程序文本,放入输入缓冲区中,词法分析工作可在这个输入缓冲区中工作(2)剔除无用的空白,跳格(TAB),回车,换行等编辑性字符;若空白符号为单词符号的界符,就将若干空白和并为1个(3)剔除注释行,比如/*…*/(4)如果是FORTRAN语言,区分标号区、续行区和给出句末符(5)源程序的出错列表打印(6)将预处理好的子程序放

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

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

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