编译原理课件chap03(陈火旺)

编译原理课件chap03(陈火旺)

ID:44126485

大小:1.75 MB

页数:97页

时间:2019-10-18

编译原理课件chap03(陈火旺)_第1页
编译原理课件chap03(陈火旺)_第2页
编译原理课件chap03(陈火旺)_第3页
编译原理课件chap03(陈火旺)_第4页
编译原理课件chap03(陈火旺)_第5页
资源描述:

《编译原理课件chap03(陈火旺)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章词法分析第三章词法分析编译程序首先是在单词级别上来分析和翻译源程序的。词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。因此,词法分析是编译的基础。执行词法分析的程序称为词法分析器。3。1对词法分析器的要求3.1.1词法分析器功能和输出形式输入源程序,输出单词符号。程序语言的单词符号一般分为五种:关键字,标识符,常数,运算符,界符第三章词法分析词法分析器输出的单词符号常常表示为二元式:(单词种别,单词符号的属性值)单词种别通常用整数编码。一个语言

2、的单词符号如何分种,分成几种,怎样编码是一个技术问题。它取决于处理上的方便。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可视其全体为一种,也可以一字一种。采用一字一种的分法实际处理起来较为方便。运算符可采用一符一种的分法,但也可以把具有一定共性的运算符视为一种。至于界符一般一符一种的分法。第三章词法分析如果一个种别只含有一个单词符号,那么对于这个单词符号,种别编码就完全代表它自身了。若一个种别含有多个单词符号,那麽,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性信息。单词符号的属

3、性是指单词符号的特征或特性。属性值则是反映特性或特征的值。例如,对于某个标识符,常将存放它有关信息的符号表项的指针作为其属性值;对于某个常数,则将存放它的常数表项的指针作为其属性值。第三章词法分析作为例子考虑下述C++代码段:while(i>=j)i--;经词法分析器处理后,它将转换为如下的单词符号序列:<(,->=,-><),-><--,-><;,->第三章词法分析3.1.2词法分析器作为独立子程序我们把词

4、法分析器安排成一个独立子程序,每当语法分析器需要一个单词符号时就调用这个子程序。每一次调用,词法分析器就从符号串中识别出一个单词符号,把它交给语法分析器。这样,把词法分析器安排成一个子程序似乎比较自然。在后面的讨论中,我们假定词法分析器是按这种方式进行工作的。第三章词法分析3。2词法分析器的设计3。2。1输入、预处理词法分析器工作的第一步是输入源程序文本。输入串一般放在一个缓冲区中,这个缓冲区称输入缓冲区。词法分析器的工作可以直接在这个缓冲区中进行。但在许多情况下,把输入串预处理一下,对单词符号的识别工作将是比较方便的。预处

5、理工作包括对空白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注解等。我们可以设想构造一个预处理子程序,他完成上面的工作。每当词法分析器调用它时就处理出一串确定长度的输入字符,并将其装入词法分析器所指定的缓冲区中(称为扫描缓冲区)。这样分析器就可以在此缓冲区中直接进行单词符号的识别工作。第三章词法分析分析器对扫描缓冲区进行扫描时一般使用两个指示器,一个指向当前正在识别单词的开始位置。(指向新单词的首字符),另一个用于向前搜索以寻找单词的终点。不论扫描缓冲区设得多大都不能保证单词符号不会被缓冲区的边界所打断。因此,扫描缓

6、冲区最好使用如下一分为二的区域:第三章词法分析假定每半个区可容120个字符,而这两个半区又是互补的。如果搜索指示器从单词起点出发搜索到半区的边缘但尚未达到单词的终点,那么就调用预处理子程序,令其把后续的120个字符装入另半区。我们认定在另半区一定可以达到单词的终点。这意味着得标示符和常数的长度实际上必须加以限制,否则即使缓冲区再大也无济于事。第三章词法分析图3。1词法分析器3。2。2单词符号的识别:超前搜索词法分析器的结构图如图3。1所示。第三章词法分析当词法分析器调用预处理子程序处理出一串输入字符串放进扫描缓冲区之后,分析

7、器就从此缓冲区中逐一识别单词符号。当缓冲区里的字符串被处理完之后,它又调用预处理程序装入新串。下面我们来介绍单词符号识别的一个简单方法-----超前搜索第三章词法分析关键字的识别像FORTRAN这样的语言,关键字不加保护(只要不引起矛盾,用户可以用它们作为普通标识符),关键字和用户自定义的标识符或标号之间没有特殊的界符作间隔。这使得关键字的识别甚为麻烦。请看下面例子:1DO99K=1,102IF(5.EQ.M)I=103DO99K=1.104IF(5)=55这四个语句都是正确的FORTRAN语句。语句1和2分别是DO和IF语

8、句,它们都是以某基本字开头的。语句3和4是赋值语句,它们都是以用户自定义的标识符开头的。第三章词法分析为了从1、2中识别出关键字DO和IF,我们必须要能够区别1、3和区别2、4。语句1、3的区别在于等号之后的第一个界符:一个为逗号,另个为句末符。语句2、4的主要区别在于右括号后的第一个字符

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。