[工学]第三章-词法分析new.ppt
《[工学]第三章-词法分析new.ppt》由会员分享,可在线阅读,更多相关《[工学]第三章-词法分析new.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7/2/20222词法:描述语言的单词符号的文法。 语言的单词符号单词符号种类很多,因此需要用不同的词法不同的词法来描述他们。 例如描述某一语言标识符的文法也称为词法。3.1 词法分析与词法分析程序词法分析与词法分析程序思考:词法是哪类文法?正规文法7/2/20223词法分析的任务:词法分析的任务:对输入的字符串形式的源程序按顺序进行扫描,根据源程序的词法规则识别具有独立意义的单词(符号),并产生与其等价的属性字流作为输出。 词法分析程序定义词法分析程序定义:编译程序中完成词法分析任务的程序段,又称词法分析器词法分析器或扫描器(扫描器(scannerscanner)。)。 7/2/20224词
2、法分析程序的功能词法分析程序的功能识别出单词(内部表示);词法分析器(scanner)源程序属性字流L1While ( i != j ) do if (ij) ii-j ;/求求i,j的差值的差值词法分析器词法分析器while, (,i,!=,j, ), do, if, (,i,j, ), i, = , i, - , j,;7/2/202263.2 词法分析程序设计与实现词法分析程序设计与实现 词法分析程序的输入与输出 源程序的输入与预处理 单词的识别 词法分析程序与词法分析程序的接口 词法分析器的设计与实现7/2/20227单词是语言中具有单词是语言中具有独立意义独立意义的的最小语法单位最小
3、语法单位. .单词的种类单词的种类 1. 关键字(保留字):while、class、for、do 2. 标识符:a、m_a 3. 常数:无符号数、布尔常数、字符串常数等 4. 运算符:+、-、* 5. 界限符:逗号,分号,括号和引号种类的划分是根据编译的目标和方便设定的种类的划分是根据编译的目标和方便设定的单词7/2/20228常用的单词内部形式:常用的单词内部形式:1 1、按单词种类分类、按单词种类分类2 2、保留字和分界符采用一符一类、保留字和分界符采用一符一类3 3、标识符和常数的单词属性值为符号表入口指针、标识符和常数的单词属性值为符号表入口指针 (标识符、常数相关属性很多)(标识符、
4、常数相关属性很多) (单词属性(单词属性 , 单词值)单词值)属性字:词法分析程序的输出形式词法分析程序的输出形式-单词的内部形式单词的内部形式7/2/20229单词名称单词名称标识符无符号常数(整)无符号浮点数布尔常数字符串常数保留字分界符类别编码类别编码1234567单词值单词值符号表入口指针整数值数值0 或 1内部字符串保留字或内部编码分界符或内部编码1 1、按单词种类分类、按单词种类分类7/2/2022102 2、保留字和分界符采用一符一类、保留字和分界符采用一符一类单词名称单词名称标识符无符号常数(整)无符号浮点数布尔常数字符串常数BEGINENDFORDO:+*,(类别编码类别编码
5、123456789.20212223.单词值单词值符号表入口指针整数值数值0 或 1内部字符串-.-7/2/2022113.2.2 源程序的输入与预处理 词法分析器工作的第一步是接受输入源程序。通常是把输入的源程序引导至一个输入缓冲区,并对输入串进行预处理,然后才交付扫描器进行处理。S.P.(字符串)词法分词法分析程序析程序输入缓冲区的处理?输入缓冲区的处理?显然,无论缓冲区设定为多大,都不能保证单词不会被它的边界打断,若有标识符TEST123,可能在缓冲区中成为:.TES在这种情况下,即使读到缓冲区的最后一个字符,但仍不能找到该单词的右边界,这时,若从外存上再读一部分源程序进入缓冲区,则会将
6、没有处理过的字符(TES)冲掉。两个半区互补使用为此,我们可将缓冲区分成相等的两个区域:7/2/202213扫描缓冲区扫描缓冲区 一分为二,互补使用。 搜索指针从单词起点开始搜索,如果遇到半区域的边界,但尚未到达单词的终点时,则可将后续的输入字符装入该缓冲区的另一半。单词起点 搜索指针If F at end of first half reload second half; F+;Else if F at end of second halfreload first half; move F to beginning of first halfElse F+;输入缓冲区两个半区互补功能的实现算
7、法输入缓冲区两个半区互补功能的实现算法7/2/202215源程序的预处理 为了减轻词法分析器实质性处理的负担,因此源程序从输入缓冲区进入词法分析器之前,要先对源程序进行预处理,预处理子程序一般完成的主要功能是:过滤掉源程序中的注释; 剔除源程序中无用字符; 进行宏替换; 实现文件包含的嵌入和条件编译的嵌入等。7/2/202216具有两个缓冲区的词法分析器结构源程序L输入缓冲区X预处理子程序扫描缓冲区X1词法分析器源程序L的属性字流7/2/202217实现方案(编译程序中实现方式):实现方案(编译程序中实现方式):基本上有两种1.词法分析单独作为一遍2.词法分析程序作为单独的子程序S.P.(字符
8、串)词法分析词法分析S.P.(符号串)语法分析语法分析第一遍第一遍第二遍第二遍单词串单词串优点优点: 结构清晰、各遍功能单一结构清晰、各遍功能单一缺点:生成中间文件,效率低缺点:生成中间文件,效率低S.P.(字符串)词法分词法分析程序析程序语法分语法分析程序析程序取单词取单词单词单词7/2/202218 词法分析程序的设计与实现词法分析程序的设计与实现词法规则词法规则 正规表达式正规表达式状态转换图(最小状态转换图(最小DFA)1.构造识别单词的状态转换图(1)对程序语言的单词按种类分别构造对应的状态转换图.(2)对各类转换图合并,构成一个能识别语言所有单词的状态转换图.2.编程实现状态转换图
9、7/2/2022191. 词法及其状态转换图词法及其状态转换图例例1 假定语言假定语言X的字母表的字母表=A-Z,a-z,0-9,;,=单词符号定义如下:单词符号定义如下: 1 1、标识符:、标识符:字母打头的字母数字串字母打头的字母数字串 2 2、无符号整数:、无符号整数:无符号数字串无符号数字串 3 3、分界符:、分界符: ; 4 4、运算符:、运算符: = =7/2/202220标识符出口出口S1非字母数字字母字母、数字无符号整数出口出口S1非数字数字数字分界符出口出口S;运算符出口出口S=7/2/202221标识符无符号整数分界符S1非字母数字*字母字母、数字2非数字*数字数字;出口出
10、口出错出错其他读字符读字符返回返回S运算符=7/2/202222= 80;0134256eniL字母字母字母字母字母字母数字数字数字数字数字数字= =;0124563L ine= 80; 1, Line 3 , = 2 , 80 4 , ; 数字数字数字数字字母字母1 1= =0 0 03; ;1输入输出7/2/2022232. 状态转换图的实现状态转换图的实现构造词法分析程序构造词法分析程序标识符无符号整数分界符运算符例例1 假定语言假定语言X的字母表的字母表=A-Z,a-z,0-9,;,=单词符号定义如下:单词符号定义如下: 1 1、标识符:、标识符:字母打头的字母数字串字母打头的字母数字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工学 第三 词法 分析 new
限制150内