编译原理-词法分析.ppt
《编译原理-词法分析.ppt》由会员分享,可在线阅读,更多相关《编译原理-词法分析.ppt(33页珍藏版)》请在三一办公上搜索。
1、1,本章在编译程序中的地位,表格管理,词法分析器,语法分析器,语义分析与中间代码产生,优化器,目标代码生成器,源程序,单词符号,语法单位,中间代码,中间代码,目标代码,出错处理,2,词法分析,任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词符号。,单词:标识符,保留字,常数,算符,界符词法分析阶段的工作所依循的是语言的词法规则。描述词法规则的有效工具是正规式和有限自动机。,3,3.1 对词法分析器的要求,3.1.1 词法分析器的功能和输出形式输入源程序,扫描识别,输出单词符号程序语言的单词符号一般分为五种:关键字(保留字或基本字):如 beg
2、in,end,if,then,else,while,do等 标识符:用来表示各种名字,如 X1字面常数:如 256,3.14,true,abc运算符:如、*、/等等分界符:如 逗号,分号,冒号等,4,单词符号的内部表示是二元式:(词类种别编码,单词符号自身的属性值)1.词类种别编码提供给语法分析程序使用;2.单词自身的属性值提供给语义分析程序使用。3.具体的分类设计方法以方便语法分析程序使用为原则。,单词符号的内部表示,5,例子,考虑下述C语言代码段:while(i=j)i-;经词法分析器处理后,它将转换为如下的单词符号序列:=,-,6,3.1.2 词法分析器作为独立子程序,把词法分析设计成一
3、个独立程序,每当语法分析器需要一个单词符号时就调用这个子程序。每一次调用,词法分析器从源程序字符串中识别出一个单词符号,并把它的内部表示二元组交给语法分析器处理。如图所示:,7,输入、预处理:词法分析第一步,词法分析程序,预处理用于删除空白符、回车符、换行符及注释等。,2)相关问题,词法分析器可以作为一个独立的子程序,也可以作为一遍独立的扫描来安排。扫描缓冲区,双缓冲区,搜索 起点指示器 指示器,起点 搜索指示器 指示器,8,9,关键字的识别(1)、超前搜索,像FORTRAN这样的语言,关键字的识别甚为麻烦。因为1.关键字不加保护(只要不引起矛盾,用户可以用它们作为普通标识符)。2.关键字和用
4、户自定义的标识符或标号之间没有特殊的界符作间隔。,10,关键字的识别(2),下面是几个FORTRAN的正确语句,空白可有可无,不作分隔符:1 DO99K=1,10 2 IF(5.EQ.M)I=10 3 DO99K=1.1 4 IF(5)=55语句1和2分别是DO和IF语句,它们都是以某关键字开头的。语句3和4是赋值语句,它们都是以用户自定义的标识符开头的。,11,标识符、常数的识别,标识符的识别 是字母开头的字母数字串,后跟算符或界符,识别不困难,例如 DO99K=1.10常数的识别算术常数的识别:多数语言很直接,有的须采用超前搜索,如FORTRAN语言中:IF(5.EQ.M)GOTO55-5
5、.E08逻辑(布尔)常数的识别:比较容易FORTRAN文字常数的识别:麻烦,须作特殊处理,12,算符、界符的识别,算符的识别单个字符构成的算符的识别较容易 如 i+j多个字符构成的算符的识别须使用超前搜索 如 i+界符的识别 界符的识别比较简单,13,3.2.3 状态转换图,状态转换图用来:描述单词符号的结构识别单词符号串是设计词法分析器的工具手工生成词法分析器的方法:,构造识别单词符号的状态转换图,14,状态转换图,状态转换图是一张有限方向图,只包含有限个状态,即有限个结点。1.结点代表状态,用圆圈表示2.终止状态用双圈表示3.初始状态前标记符号“”来表示4.状态之间用箭弧连结5.箭弧上的标
6、记代表在射出结点即箭弧始结点状态下可能出现的输入字符或字符类,箭弧标记表示状态转换的条件。,15,状态转换图:例,在状态1下,若输入字符为X,则读进X,并转换到状态2。若输入字符为y,则读进y,并转换到状态3。若输入字符非x和非y,则此转换图不工作。,一个状态转换图可用于识别一定的字符串,16,状态转换图识别字符串:例1,识别标识符的状态转换图。其中0为初态,2为终态。这个转换图识别标识符的过程是:从初态0开始,若在状态0下输入字符是字母,则读进它,并转入状态1。在状态1之下,若输入字符为字母或数字,则读进它,并重新进入状态1。一直重复这个过程直到发现输入字符不再是字母或数字时(这个字符已经被
7、读进)就进入状态2。,17,状态转换图识别字符串:例,识别标识符的状态转换图。其中0为初态,2为终态。状态2是终态,它意味着到此已经识别出一个标识符。终态上打个*号,表示多读进了一个不属于标识符部分的字符,应把它退还给输入串。如果在状态0时输入字符不为“字母”,则意味着这个转换图不工作。,18,状态转换图识别字符串:例2,例2 是识别整数的转换图。其中0为初态,2为终态,打了*号。识别的过程类似前例。,19,例3 是一个识别FORTRAN实型常数的转换图。其中0为初态,7为终态。,状态转换图识别字符串:例3,该转换图可以识别下面形式的一些实数:123.,.123,123E3,123.456.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 词法 分析
链接地址:https://www.31ppt.com/p-4993750.html