欢迎来到天天文库
浏览记录
ID:57165323
大小:536.50 KB
页数:77页
时间:2020-08-02
《程序设计语言 编译原理(第三版)第3章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、§3.1对于词法分析器的要求一.功能和输出形式二.接口设计1§3.1对于词法分析器的要求一.功能和输出形式1.功能:输入源程序,输出单词符号2.单词符号的分类(1)关键字:由程序语言定义的具有固定意义的标识符,也称为保留字或基本字。例如:Pascal语言中beginendifwhile等。(2)标识符:用来表示各种名字。如变量名、数组名、过程名等。(3)常数:整型、实型、布尔型、文字型等例:1003.14159truesample(4)运算符:+、-、*、/(5)界符:, ; ( ) 等23.输出的单词符号形式二元式:(单词种别,单词符号的属性
2、值)§3.1对于词法分析器的要求单词符号的编码:标识符:一般统归为一种常数:常按整型、实型、布尔型等分类关键字:全体视为一种/一字一种运算符:一符一种界符:一符一种通常用“整数编码”“单词符号的特征或特性”3例:考虑下述C++代码段:while(i>=j)i--;§3.1对于词法分析器的要求经词法分析器处理后,它将被转换为如下的单词符号序列:<(,-><>=,-><),-><--,-><;,->4§3.1对于词法分析器的要求二.接口设
3、计1.词法分析器作为独立的一遍词法分析字符流单词序列(源程序)(输出在一个中间文件上)2.词法分析器作为一个独立的子程序,但并不一定作为独立的一遍语法分析器词法分析器调用(取下一个单词)单词(至少一个)优点:使整个编译程序的结构更简洁、清晰和条理化.5§3.2词法分析器的设计一.输入和预处理二.单词符号的识别三.状态转换图及其实现61.预处理:剔掉空白符、跳格符、回车符、换行符、注解部分等.一.输入、预处理§3.2词法分析器的设计原因:编辑性字符除了出现在文字常数中之外,在别处的任何出现都无意义.#注解部分不是程序的必要组成部分,它的作用仅在于改
4、善程序的易读性和易理解性.7每当词法分析器调用时,就处理出一串确定长度(如120个字符)的输入字符,并将其装进词法分析器所确定的扫描缓冲区中。2.预处理子程序:§3.2词法分析器的设计8起点指示器搜索指示器扫描缓冲区的两个指示器:一个指向当前正在识别的单词的开始位置(即新单词的首字符)起点指示器一个用于向当前搜索以寻找单词的终点搜索指示器图_源程序输入缓冲区的对半互补结构§3.2词法分析器的设计9二.单词符号的识别——超前搜索1.关键字的识别:---FORTRAN语言的需要超前搜索.2.标识符的识别:在程序中标识符的出现都后跟着算符或界符.3
5、.常数的识别:多数语言算术常数的表示大体相似,对它们的识别也是很直接的;但对于某些语言的常数的识别也需用超前搜索的方法;逻辑常数和用引号括起来的字符串常数很容易识别.4.算符和界符的识别:应将那些由多个字符复合成的算符和界符拼合成一个单词符号,因为这些字符串是不可分的整体,若分划开来,便失去了原来的意义.---需用超前搜索的方法§3.2词法分析器的设计10三.状态转换图及其实现1.状态转换图及其示例状态转换图:有限方向图.结点:代表状态,用圆圈表示,状态之间用弧连接.箭弧上的标记(字符):代表在射出结点(即始结点)状态下可能出现的输入字符或字符类
6、.一张转换图只包含有限个状态(即有限个结点),其中一个为初态,而且实际上至少要有一个终态(用双圈表示).§3.2词法分析器的设计11例:012数字数字其它*012字母或数字字母其它*例:(课本42页表3.1;43页图3.3)§3.2词法分析器的设计122.状态转换图的实现实现方法:用程序实现,让每个状态结点对应一小段程序。A、变量和过程说明ch字符变量,存放最新读进的源程序字符。strToken字符数组,存放构成单词符号的字符串。GetChar子程序过程,将下一输入字符读到ch中,搜索指示器前移一字符位置。④GetBC子程序过程,检查ch中的字符
7、是否为空白。若是,则调用GetChar直至ch中进入一个非空白字符。⑤Concat子程序过程,将ch中的字符连接到strToken之后.§3.2词法分析器的设计13IsLetter和IsDigit布尔函数过程,它们分别判断ch中的字符是否为字母和数字。Reserve整型函数过程,对strToken中的字符串查找保留字表,若它是一个保留字则返回它的编码,否则返回0值(假定0不是保留字的编码)。Retract子程序过程,将搜索指示器回调一个字符位置,将ch置为空白字符。InsertId整型函数过程,将strToken中的标识符插入符号表,返回符号表指
8、针。InsertConst整型函数过程,将strToken中的常数插入常数表,返回常数表指针。§3.2词法分析器的设计14B、示例小程序
此文档下载收益归作者所有