欢迎来到天天文库
浏览记录
ID:52108071
大小:355.50 KB
页数:27页
时间:2020-03-31
《《词法分析周》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章词法分析概述编译程序首先是在单词级别上来分析和翻译源程序的。词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。词法分析是编译的基础。执行词法分析的程序称为词法分析器。内容线索对于词法分析器的要求词法分析器的设计正规表达式与有限自动机词法分析器的自动生成词法分析器的功能源程序扫描器scanner1、关键字2、标识符5、界符4、运算符3、常数由程序语言定义的具有固定意义的标识符。也可称为保留字或基本字。例如:C中的int,while,if等。它是确定的。界符:如
2、逗号、分号、括号、/*,*/等。它是确定的。运算符:如+、-、*、/等。它是确定的。常数的类型一般有整型、实型、布尔型、文字型等。它是不限的。用来表示各种名字,如变量名、数组名、过程名等。它是不限的。单词符号单词符号表示形式词法分析器输出的单词符号常表示成二元式:(单词种别,单词符号的属性值)单词种别是语法分析需要的信息单词符号属性值则是编译其它阶段需要的信息,简称单词值。例.语句consti=25,yes=1,其中,单词25和1的类别都是常数,其值分别为25和1;分类方法单词种别:通常用整数编码。一个语言的单词符号如何分类,分成几类,
3、怎样编码取决于处理上的方便。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可视其全体为一种,也可以一字一种。采用一字一种的分法实际处理起来较为方便。运算符可采用一符一种的分法,但也可以把具有一定共性的运算符视为一类。至于界符一般用一符一种的分法。单词符号的属性单词符号的属性是指单词符号的特征或特性。属性值则是反映特性或特征的值。标识符的属性值是存放它符号表项的指针或内部字符串;常数的属性值是存放它的常数表项的指针或二进制形式;关键字、运算符和界符是一符一种,不需给出其自身的值。例.代码段while(i>=j)i--;
4、词法分析结果<(,-><>=,-><),-><--,-><;,->符号表NoIDAddrtype······224jAF80INT227iDF88INT逻辑IF(34,_)左括号(2,_)整常数(20,‘5’的二进制表示)等号(6,_)标识符(26,‘M’)右括号(16,_)GOTO(30,_)标号(19,‘100’的二进制表示)IF为关键字,种别编码34,采用一符一种的编码方式。常数类型,种别编码20,单词自身的值为‘5’的二进制表示。‘(’为界符,种别编码
5、2,采用一符一种的编码方式。等号为运算符,种别编码6,采用一符一种的编码方式。M为标识符,种别编码26,单词自身值为‘M’。‘)’为界符,种别编码16,采用一符一种的编码方式。GOTO为关键字,种别编码30,采用一符一种的编码方式。100为标号,种别编码19,单词内部的值用100的二进制表示。FORTRAN编译程序的词法分析器在扫描输入串IF(5·EQ·M)GOTO100后,它输出的单词符号串是:FORTRAN编译实例词法分析程序的实现方式完全独立方式:词法分析程序作为单独一遍来实现。词法分析程序读入整个源程序,它的输出作为语法分析程序
6、的输入。编译程序结构简洁、清晰和条理化相对独立方式:把词法分析程序作为语法分析程序的一个独立子程序。语法分析程序需要新符号时调用这个子程序。优点:避免了中间文件生成,可以提高效率。内容线索对于词法分析器的要求词法分析器的设计正规表达式与有限自动机词法分析器的自动生成词法分析器的结构预处理工作包括对空白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注解等。预处理子程序输入缓冲区源程序扫描器单词符号扫描缓冲区起点指示器搜索指示器设定两个指示器缓冲区一分为二输入源程序文本。输入串一般放在一个缓冲区中,这个缓冲区称输入缓冲区。单词符号的识
7、别:超前搜索关键字识别例.在标准FORTRAN中四个合法句子:1、DO99K=1,102、IF(5.EQ.M)I=103、DO99K=1.104、IF(5)=55其中的DO、IF为关键字其中的DO、IF为标识符的一部分单词符号的识别:超前搜索标识符的识别多数语言的标识符是字母开头的“字母/数字”串,而且在程序中标识符的出现后都跟着算符或界符。因此,不难识别。常数的识别对于某些语言的常数的识别也需要使用超前搜索。算符和界符的识别对于诸如C++语言中的“++”、“--”,这种复合成的算符,需要超前搜索。状态转换图大多数程序设计语言中单词符号
8、的词法规则可以用正规文法描述。如:<标识符>→字母
9、<标识符>字母
10、<标识符>数字<整数>→数字
11、<整数>数字<运算符>→+
12、-
13、×
14、÷…<界符>→;
15、,
16、(
17、)
18、…利用这些规则识别单词符号的过程可用一张称
此文档下载收益归作者所有