the 词法分析第二章形式语言与自动机理论基础guide dow.pdf
《the 词法分析第二章形式语言与自动机理论基础guide dow.pdf》由会员分享,可在线阅读,更多相关《the 词法分析第二章形式语言与自动机理论基础guide dow.pdf(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 1 页页Ch3 词法分析词法分析3.1 词法分析程序的功能词法分析程序的功能词法分析器词法分析器(Scanner)属性字流 L1属性字流 L1源程序源程序?词法分析程序的功能词法分析程序的功能从左至右地对源程序进行,按照语言的词法规则从左至右地对源程序进行,按照语言的词法规则识别各类单词,并产生相应单词的属性字。识别各类单词,并产生相应单词的属性字。第第 2 页页Ch3 词法分析词法分析3.1 词法分析程序的功能词法分析程序的功能?关于词法分析程序关于词法分析程序*组织输入、扫描、分析、输出;组织输入、扫描、分析、输出;*接收字符串形式的源程序,按照源程序输入的次接收字符串形式的源程序,
2、按照源程序输入的次序依次扫描源程序,在扫描的同时根据语言的词法序依次扫描源程序,在扫描的同时根据语言的词法规则识别出具有独立意义的单词,并产生与源程序规则识别出具有独立意义的单词,并产生与源程序等价的属性字(等价的属性字(Token)流)流.完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。第第 3 页页Ch3 词法分析词法分析3.1 词法分析程序的功能词法分析程序的功能?关于词法分析程序关于词法分析程序(作为一个独立子程序)(作为一个独立子程序)(1)只要不修改接口,则词法分析器所作的修改只要不修改接口,则词法分析器所作的
3、修改不会影响整个编译器,且词法分析器易于维护;不会影响整个编译器,且词法分析器易于维护;(2)整个编译器结构简捷、清晰;整个编译器结构简捷、清晰;(3)可以采用有效的方法和工具进行处理。可以采用有效的方法和工具进行处理。完全独立相对独立协同程序完全独立相对独立协同程序第第 4 页页Ch3 词法分析词法分析3.1 词法分析程序的功能词法分析程序的功能例例3.1有如下有如下C源程序片段源程序片段 int int1;int1=33;printf(int1=%dn,int1);词法分析后识别出如下单词:词法分析后识别出如下单词:、int、int1、;、int1、=、33、;、printf、(、int1
4、%dn”、,、int1、)、;、第第 5 页页Ch3 词法分析词法分析3.1 词法分析程序的功能词法分析程序的功能?说明:说明:1.词法分析是编译程序的第一个阶段且是必要阶段;词法分析是编译程序的第一个阶段且是必要阶段;2.词法分析的核心任务是扫描、识别单词且对识别词法分析的核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理;出的单词给出定性、定长的处理;3.实现词法分析程序的常用途径:自动生成手工生成实现词法分析程序的常用途径:自动生成手工生成第第 6 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字1.单词.单词
5、单词是语言中具有独立意义的最小语法单位。单词是语言中具有独立意义的最小语法单位。例如,例如,A*B,单词是,单词是“A”、“*”和和“B”。要素要素独立的意义最小的语法单位独立的意义最小的语法单位*词法规则制约词法规则制约int int1,单词是单词是“int”和和“int1”。A+*B,单词是,单词是“A”、“+”、“*”和和“B”。第第 7 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字?流行语言词法规则的表示:流行语言词法规则的表示:BNF或或EBNF;3型文法;正规式型文法;正规式?int|float|for|#in
6、clude|char|?|V=(|)*?a|b|z?a|b|z|0|1|9第第 8 页页常用的程序设计语言的单词类:常用的程序设计语言的单词类:(1)关键字)关键字(亦称保留字,基本字等)(亦称保留字,基本字等)关键字一般是语言系统本身定义的,通常是由字母关键字一般是语言系统本身定义的,通常是由字母组成的字符串。组成的字符串。例如:例如:C语言中的语言中的 int,for,break,static,char,switch,unsigned等,关键字一般关联到语句的性质。等,关键字一般关联到语句的性质。(2)标识符)标识符用来表示各类名字的标识。如,变量名,数组用来表示各类名字的标识。如,变量名
7、,数组名,结构名,函数名,文件名等。名,结构名,函数名,文件名等。Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字第第 9 页页(3)常量)常量语言中各种类型的常数。如整型常数,实型常数语言中各种类型的常数。如整型常数,实型常数,不同进制的常数,布尔常数,字符及字符串常数等。,不同进制的常数,布尔常数,字符及字符串常数等。I常数:常数:-26,19,0 x123,037 R常数常数:-1.6,2e-6,2.5e06,B常数:常数:TRUE,FALSE,0或非或非0,C、String:$,$123 ,“abc”,Ch3 词法分析词法
8、分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字第第 10 页页(4)运算符)运算符表示程序中算术运算,逻辑运算,字符及位串等表示程序中算术运算,逻辑运算,字符及位串等运算的确定字符(或串)。运算的确定字符(或串)。(5)界限符)界限符如逗号,分号,括号,单双引号等。如逗号,分号,括号,单双引号等。Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字例如,例如,各类语言较通用的,*,/,*,等。还有一些语言特有的运算符,如各类语言较通用的,*,/,*,等。还有一些语言特有的运算符,如C语言中
9、的+,?:,语言中的+,?:,&,等。,等。FORTRAN 语言中的.语言中的.AND.,.,.NOT.,.,.OR.。第第 11 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字2.属性字.属性字对所识别的单词的数据结构表示。对所识别的单词的数据结构表示。L1=(T,C)属性字属性字Token Code 刻画单词类别(单词性质)例如,标识符;运算符;刻画单词类别(单词性质)例如,标识符;运算符;单词的内码值(可空)单词的内码值(可空)第第 12 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现
10、3.2.1 单词与属性字单词与属性字互锁互锁0 15标 常 构 过 保 运 实 界标 常 构 过 保 运 实 界 I R B C 形识造程 留 算 参限参符 量类字 符符型形识造程 留 算 参限参符 量类字 符符型例例3.2:字长字长m=16的单词类别的设计。的单词类别的设计。考虑类考虑类PASCAL语言,允许含隐式类型说明。语言,允许含隐式类型说明。第第 13 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字设有变量设有变量real x,a;integer b;对语句对语句 x=a+b;词法分析结果:词法分析结果:0400
11、=m=00000100000000008040 aam=10000000010000000400 +m=00000100000000008080 bbm=10000000100000000100 ;m=0000000100000000L18040 xxm=1000000001000000Token Code第第 14 页页?注意:注意:关于属性字单词类别部分设计:单词如何分关于属性字单词类别部分设计:单词如何分类?分为几类?怎样编码?单词类别部分包含类?分为几类?怎样编码?单词类别部分包含多少信息?多少信息?Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1
12、 单词与属性字单词与属性字视具体情况而定。视具体情况而定。考虑后续处理方便。考虑后续处理方便。第第 15 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单词与属性字单词与属性字常见类单词的属性字设计:常见类单词的属性字设计:1.标识符标识符标识符类码标识符类码point 符号表符号表sum2.关键字关键字语言的关键字个数一般是固定的,考虑每个关键语言的关键字个数一般是固定的,考虑每个关键字对应一个属性类别码,内码值部分为空。字对应一个属性类别码,内码值部分为空。第第 16 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与
13、实现3.2.1 单词与属性字单词与属性字3.常量常量常量类码常量类码point 常量表常量表2.16按类型设置按类型设置(考虑类型相容优先级考虑类型相容优先级)4.运算符和界限符运算符和界限符(1)按照一个符号分别对应一个属性类别码,内码按照一个符号分别对应一个属性类别码,内码值部分为空。值部分为空。(2)运算符可以考虑优先级相同的对应一个属性运算符可以考虑优先级相同的对应一个属性类别码。优先级高的类别编码值大。类别码。优先级高的类别编码值大。第第 17 页页31 +31 32 *32 /10:?例如例如Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.1 单
14、词与属性字单词与属性字第第 18 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.2 源程序的输入与预处理源程序的输入与预处理1输入缓冲区输入缓冲区成对且对半互补的输入缓冲区模式。即将一个成对且对半互补的输入缓冲区模式。即将一个缓冲区分为两个半区,每个半区长度为缓冲区分为两个半区,每个半区长度为n(n一般为一般为磁盘块或簇长的整倍数),其结构如图所示。磁盘块或簇长的整倍数),其结构如图所示。n n+1?B Fi+;j+;switch (a)前半区前半区(first half)后半区后半区(second half)12n第第 19 页页Ch3 词法分析词法
15、分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.2 源程序的输入与预处理源程序的输入与预处理?n:取取2的整次幂;的整次幂;?每个半区的末尾设置标志每个半区的末尾设置标志“eof”表示读入的源程表示读入的源程序的结束;序的结束;?B:单词单词w开始指针;开始指针;F:扫描扫描w的指针;的指针;?两半区互补功能算法:两半区互补功能算法:if (F=“eof”)重新分配、装入后半区;重新分配、装入后半区;F+;else if (F=“eof”)重新分配、装入前半区;重新分配、装入前半区;F=1;else F+;第第 20 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词
16、法分析器的设计与实现3.2.2 源程序的输入与预处理源程序的输入与预处理2两个缓冲区的输入模式两个缓冲区的输入模式X:固定长度的存储空间固定长度的存储空间;输入缓冲区输入缓冲区X1输入源程序输入源程序L输入缓冲区输入缓冲区X扫描器扫描器预处理子程序预处理子程序控制线数据线控制线数据线L1第第 21 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.2 源程序的输入与预处理源程序的输入与预处理预处理程序:预处理程序:(作用)(作用)(1)减少内存空间占用;减少内存空间占用;(2)减轻扫描器实质性处理的负担;减轻扫描器实质性处理的负担;预处理程序主要任务:预处
17、理程序主要任务:(1)滤掉源程序中的非单词成分滤掉源程序中的非单词成分(如无用空格;换如无用空格;换行符等行符等);滤掉注释;宏替换;文件包含的嵌入;条件编译的嵌入;滤掉注释;宏替换;文件包含的嵌入;条件编译的嵌入;(2)实际的预处理工作实际的预处理工作第第 22 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现?设计工具设计工具 FA作为扫描器的状态转换图的构造:作为扫描器的状态转换图的构造:step1:对语言的各类单词分别构造状态图;对语言的各类单词分别构造状态图;step2:将各类状态图合并,构成一个能识别该语言
18、所有单词的状态图。将各类状态图合并,构成一个能识别该语言所有单词的状态图。(1)将各类单词的状态图的初态合并为一个惟一初态;将各类单词的状态图的初态合并为一个惟一初态;(2)调整冲突编号。调整冲突编号。第第 23 页页例例3.3设某语言由标识符和无符号正整数两类单设某语言由标识符和无符号正整数两类单词构成,并设词构成,并设L表示字母,表示字母,D表示十进制数字,则表示十进制数字,则有标识符和无符号正整数的词法规则:有标识符和无符号正整数的词法规则:L(L|D|_)|_)*DD*其中:其中:other表示非表示非L|D|_字符字符3L|D|_*12otherL02Dother1D*D其中其中ot
19、her表示非表示非 D的字符的字符Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现第第 24 页页3L|D|_*12otherL02Dother1D*DCh3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现第第 25 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现2Dother1D*DL|D|_*12otherL3合并为一个识别该语言所有单词的合并为一个识别该语言所有单词的NFA调
20、整冲突编号调整冲突编号第第 26 页页3L|D|_*12otherL5Dother4D*DCh3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现词法分析方法:直接分析法词法分析方法:直接分析法第第 27 页页例例3.4设设C语言子集由下列单词符号构成,以正规语言子集由下列单词符号构成,以正规式的形式表示:式的形式表示:关键字:关键字:int,if,for标识符:标识符:字母(字母|数字)字母(字母|数字)*无符号整常数:无符号整常数:数字(数字)数字(数字)*运算符或分界符:运算符或分界符:=,*,+,+,+=,=,*,+,+,
21、+=,讲义讲义 P55 例例3.3Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现第第 28 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现?状态转换图的实现之一状态转换图的实现之一 数据中心法数据中心法将状态转换图看成一种数据结构将状态转换图看成一种数据结构(状态矩阵表状态矩阵表),用总控程序控制输入的源程序串在其上运行。用总控程序控制输入的源程序串在其上运行。据语言词法规则据语言词法规则状态转换图状态转换图可行的扫描器可行的扫描器存储和激活问
22、题存储和激活问题数据中心法程序中心法数据中心法程序中心法第第 29 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.2.3 扫描器设计与实现扫描器设计与实现?状态矩阵问题二级目录表状态矩阵问题二级目录表1.主表:数据项主表:数据项=状态状态+分表地址或子程序入口分表地址或子程序入口状态状态=终态时,分表地址为子程序入口状态 终态时,为分表入口终态时,分表地址为子程序入口状态 终态时,为分表入口2.分表:数据项分表:数据项=当前输入字符当前输入字符+转换状态转换状态第第 30 页页Ch3 词法分析词法分析3.2 词法分析器的设计与实现词法分析器的设计与实现3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- the 词法分析第二章形式语言与自动机理论基础guide dow 词法 分析 第二 形式语言 自动机 理论基础 guide
限制150内