1 / 50
文档名称:

CHAP3 词法分析.ppt

格式:ppt   页数:50页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CHAP3 词法分析.ppt

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

CHAP3 词法分析.ppt

文档介绍

文档介绍:第三章词法分析
编译程序首先是在单词级别上来分析和翻译源程序的。词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。因此,词法分析是编译的基础。执行词法分析的程序称为词法分析器。
3。1 对词法分析器的要求
词法分析器功能和输出形式
输入源程序,输出单词符号。
程序语言的单词符号一般分为五种:关键字,标识符,常数,运算符,界符
第三章词法分析
词法分析器输出的单词符号常常表示为二元式:
(单词种别,单词符号的属性值)
单词种别通常用整数编码。一个语言的单词符号如何分种,分成几种,怎样编码是一个技术问题。它取决于处理上的方便。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可视其全体为一种,也可以一字一种。采用一字一种的分法实际处理起来较为方便。运算符可采用一符一种的分法,但也可以把具有一定共性的运算符视为一种。至于界符一般一符一种的分法。
第三章词法分析
如果一个种别只含有一个单词符号,那么对于这个单词符号,种别编码就完全代表它自身了。若一个种别含有多个单词符号,那麽,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性信息。
单词符号的属性是指单词符号的特征或特性。属性值则是反映特性或特征的值。例如,对于某个标识符,常将存放它有关信息的符号表项的指针作为其属性值;对于某个常数,则将存放它的常数表项的指针作为其属性值。
第三章词法分析
作为例子考虑下述C++代码段:
while (i>=j) i- -;
经词法分析器处理后,它将转换为如下的单词符号序列:
< while, - >
< ( , - >
< id ,指向i的符号表项的指针〉
< >= , - >
< id ,指向j的符号表项的指针>
< ) , - >
< id ,指向i的符号表项的指针>
< - - , - >
< ; , - >
第三章词法分析
词法分析器作为独立子程序
我们把词法分析器安排成一个独立子程序,每当语法分析器需要一个单词符号时就调用这个子程序。每一次调用,词法分析器就从符号串中识别出一个单词符号,把它交给语法分析器。这样,把词法分析器安排成一个子程序似乎比较自然。在后面的讨论中,我们假定词法分析器是按这种方式进行工作的。
第三章词法分析
3。2 词法分析器的设计
3。2。1 输入、预处理
词法分析器工作的第一步是输入源程序文本。输入串一般放在一个缓冲区中,这个缓冲区称输入缓冲区。词法分析器的工作可以直接在这个缓冲区中进行。但在许多情况下,把输入串预处理一下,对单词符号的识别工作将是比较方便的。
预处理工作包括对空白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注解等。我们可以设想构造一个预处理子程序,他完成上面的工作。每当词法分析器调用它时就处理出一串确定长度的输入字符,并将其装入词法分析器所指定的缓冲区中(称为扫描缓冲区)。这样分析器就可以在此缓冲区中直接进行单词符号的识别工作。
第三章词法分析
分析器对扫描缓冲区进行扫描时一般使用两个指示器,一个指向当前正在识别单词的开始位置。(指向新单词的首字符),另一个用于向前搜索以寻找单词的终点。
不论扫描缓冲区设得多大都不能保证单词符号不会被缓冲区的边界所打断。因此,扫描缓冲区最好使用如下一分为二的区域:
第三章词法分析
假定每半个区可容120个字符,而这两个半区又是互补的。如果搜索指示器从单词起点出发搜索到半区的边缘但尚未达到单词的终点,那么就调用预处理子程序,令其把后续的120个字符装入另半区。我们认定在另半区一定可以达到单词的终点。这意味着得标示符和常数的长度实际上必须加以限制,否则即使缓冲区再大也无济于事。
第三章词法分析
图3。1词法分析器
3。2。2 单词符号的识别:超前搜索
词法分析器的结构图如图3。1所示。
第三章词法分析
当词法分析器调用预处理子程序处理出一串输入字符串放进扫描缓冲区之后,分析器就从此缓冲区中逐一识别单词符号。当缓冲区里的字符串被处理完之后,它又调用预处理程序装入新串。
下面我们来介绍单词符号识别的一个简单方法-----超前搜索
第三章词法分析