上海交通大学:《编译原理》课程教学资源(PPT课件)第三章 词法分析

编译原理 第三章词法分析 上海交通大学 张冬茉 Email:Zhang-dm@cssjtu.edu.cn 2004年3月
1 编译原理 第三章 词法分析 上海交通大学 张冬茉 Email:zhang-dm@cs.sjtu.edu.cn 2004年3月

本章目的 词法分析器从输入串中识别单词,编 译程序对源程序的分析由此开始。单词 构词规则可由状态转换图表示,手工编 程实现这些状态转换图,便可产生高效 的词法分析器。构词规则也可由正规式 表示,据此转换成识别单词的有限自动 机,这就得到了识别单词的状态转换图。 软件工具Lex能实现这种转换
2 本章目的 词法分析器从输入串中识别单词,编 译程序对源程序的分析由此开始。单词 构词规则可由状态转换图表示,手工编 程实现这些状态转换图,便可产生高效 的词法分析器。构词规则也可由正规式 表示,据此转换成识别单词的有限自动 机,这就得到了识别单词的状态转换图。 软件工具Lex能实现这种转换

第三章词法分析 §3.1构造一个简单的词法分析器 、词法分析器的功能 程序与由自然语言书写的文章一样,它是由 系列的句子组成的,而句子是由单词按一定规 则组成的,单词是由字符组成的,因此归根结 蒂源程序是由程序语言的字母表上的字符串组 成。词法分析就应从输入字符串中识别出一个 个单词,并对其中由用户定义的名字,在符号 表中予以登记
3 第三章 词法分析 §3.1 构造一个简单的词法分析器 一、词法分析器的功能 程序与由自然语言书写的文章一样,它是由一 系列的句子组成的,而句子是由单词按一定规 则组成的,单词是由字符组成的,因此归根结 蒂源程序是由程序语言的字母表上的字符串组 成。词法分析就应从输入字符串中识别出一个 个单词,并对其中由用户定义的名字,在符号 表中予以登记。

「例31有下列程序段: begin length:=length+l if length <20 then read (nextch) end: 它的输入字符串和识别出的单词流如图31(a) (b)所示。其中表示空白(空格)键,符号≌ 表示 RETURN键符, length和 nextel为程序中 定义的变量,它们在符号表中应予以记载 4
4 [例3.1]有下列程序段: begin length:=length+1; if length<20 then read (nextch) end; 它的输入字符串和识别出的单词流如图3.1(a)、 (b)所示。其中__表示空白(空格)键,符号↙ 表示RETURN键符,length和nextch为程序中 定义的变量,它们在符号表中应予以记载

词法分析与语法分析的关系 由词法分析识别出的单词流是语法分析的输入 语法分析据此判别它们是否构成合法句子。由 词法分析开始形成的符号表,在以后的编译各 阶段要频繁使用。 词法分析可以作为单独一遍,如图32(a)所示, 但由于词法分析比较简单,将它作为语法分析 的子程序,每当语法分析程序需要一单词时, 就调用词法分析子程序,从输入串中识别当前 单词,这是一种十分自然有效的工作方法,结 构如图32(b所示
5 词法分析与语法分析的关系: 由词法分析识别出的单词流是语法分析的输入, 语法分析据此判别它们是否构成合法句子。由 词法分析开始形成的符号表,在以后的编译各 阶段要频繁使用。 词法分析可以作为单独一遍,如图3.2(a)所示, 但由于词法分析比较简单,将它作为语法分析 的子程序,每当语法分析程序需要一单词时, 就调用词法分析子程序,从输入串中识别当前 单词,这是一种十分自然有效的工作方法,结 构如图3.2(b)所示。

输入串 ↓词法分析器 一法分析]一的法分析器取下 】符号表 法分析器 (a)词法分析为单独一遍 )词法分析器是一子程序 图3.2词法分析器与语法分析器的关系 6
6 词法分析器 语法分析器 输入串 单词流 图3.2 词法分析器与语法分析器的关系 (a) 词法分析为单独一遍 (b) 词法分析器是一子程序 语法分析器 词法分析器 符号表 输入串 取下一 单词 返回下 一单词

1.单词符号的种类 单词符号是程序语言最基本的语法符号,通常有五 种 (1)基本字。有的称关键字或保留字,如if、 while、 for、do、goto等,它们具标识符的特征,但它们 是由语言定义的,其意义是固定的。多数语言中 规定,它们不能作为标识符或标识符的前缀,用 户不能用它们来定义用户使用的名字,在这种情 况下,我们称它们为保留字,如 Pascal和C等。但 也有的语言允许将基本字作为标识符或标识符的 前缀,如 Fortran和PL/1; 7
7 1. 单词符号的种类 单词符号是程序语言最基本的语法符号,通常有五 种: (1)基本字。有的称关键字或保留字,如if、while、 for、do、goto等,它们具标识符的特征,但它们 是由语言定义的,其意义是固定的。多数语言中 规定,它们不能作为标识符或标识符的前缀,用 户不能用它们来定义用户使用的名字,在这种情 况下,我们称它们为保留字,如Pascal和C等。但 也有的语言允许将基本字作为标识符或标识符的 前缀,如Fortran和PL/1;

(2)标识符。用户用来命名程序中出现的变量、数 组、函数、过程、标号等,通常是 个字母开头的字母数字串;如 length, nextel等 (3)常数。包括各种类型的常数,如整型、实型、 布尔型、字符型常数,216、3.1416、TRUE alpha等。 (4)运算符。如+、=、*、/等 (5)界符。如;、:、(、)及双字符界符:=、/、* 及空白符等。 对于一个确定的程序语言来说,保留字(或基本字) 运算符、界符的数目是确定的,通常在几十个至 百余个之间。标识符、常数则由用户指定,如何 指定,使用多少个,程序语言均未加限制
8 (2)标识符。用户用来命名程序中出现的变量、数 组、函数、过程、标号等,通常是一 个字母开头的字母数字串;如length,nextch等; (3)常数。包括各种类型的常数,如整型、实型、 布尔型、字符型常数,216、3.1416、TRUE、 alpha等。 (4)运算符。如+、=、 * 、/等; (5)界符。如; 、: 、( 、)及双字符界符:= 、/* 、 */ 及空白符等。 对于一个确定的程序语言来说,保留字(或基本字)、 运算符、界符的数目是确定的,通常在几十个至 百余个之间。标识符、常数则由用户指定,如何 指定,使用多少个,程序语言均未加限制

2.单词的编码 识别出来的单词符号应采用某种中间表示,以便 为编译的后续阶段引用,其原则在于便以区别、 便于识别,表示方法可多种多样,以有利于编译 处理为准,通常单词符号可以用一个二元组来表 示: (单词类别,单词符号的属性值) 第一元用以区分单词符号所属的类,以整数编码。 第二元用以区分在该类中哪一个单词符号,即单 词符号的值,它的编码,随类别不同而不同
9 2. 单词的编码 识别出来的单词符号应采用某种中间表示,以便 为编译的后续阶段引用,其原则在于便以区别、 便于识别,表示方法可多种多样,以有利于编译 处理为准,通常单词符号可以用一个二元组来表 示: (单词类别,单词符号的属性值) 第一元用以区分单词符号所属的类,以整数编码。 第二元用以区分在该类中哪一个单词符号,即单 词符号的值,它的编码,随类别不同而不同

单词的三元组衔确定方法 有限类: 由于基本字,运算符,界符的数目有限,一般可 以对每个单词定义一个种别码,即一字一种,这 时,它的第二元就没有识别意义了,即一级编码 形式。显然以后对这类单词的识别十分简便。也 可以将关系运算符、≥、=、归为一类,则 第二元就应是区分为哪一个关系运算符的值了 无限类: 对于常数可以统归为一类,也可以按整型、实型、 布尔型、字符型分类。标识符类似处理,在这种 情况下每一类别中的常数或标识符将由单词符号 的属性值来区别是哪一个单词符号。通常将常数 表的入口指针作为常数的属性值,而将符号表的 入口指针作为标识符的属性值 10
10 单词的二元组的确定方法 •有限类: 由于基本字,运算符,界符的数目有限,一般可 以对每个单词定义一个种别码,即一字一种,这 时,它的第二元就没有识别意义了,即一级编码 形式。显然以后对这类单词的识别十分简便。也 可以将关系运算符、≥、=、归为一类,则 第二元就应是区分为哪一个关系运算符的值了。 •无限类: 对于常数可以统归为一类,也可以按整型、实型、 布尔型、字符型分类。标识符类似处理,在这种 情况下每一类别中的常数或标识符将由单词符号 的属性值来区别是哪一个单词符号。通常将常数 表的入口指针作为常数的属性值,而将符号表的 入口指针作为标识符的属性值
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第七章 代码优化.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第一章 引论(张冬茉).ppt
- 《计算机网络技术》 第四章 网络互连.ppt
- 《计算机网络技术》 第六章 计算机网络的安全.ppt
- 《计算机网络技术》 第五章 端到端协议.ppt
- 《计算机网络技术》 第二章 直连的网络.ppt
- 《计算机网络技术》 第三章 分组交换.ppt
- 《计算机网络技术》 第一章 网络知识分类.ppt
- 南通市科委培训中心:全国计算机等级考试(一级B)培训资料.pdf
- 北京师范大学《数据结构——C语言描述》教学课件:第三章 栈和队列.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:课程章节主要内容及学时分配.doc
- 北京师范大学《数据结构——C语言描述》教学课件:第二章 线性表.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第七章 图.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第五章 数组与广义表.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第六章 树和二叉树.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:实验计划.doc
- 北京师范大学《数据结构——C语言描述》教学课件:第九章 排序.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第四章 串.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第八章 查找.ppt
- 北京师范大学《数据结构——C语言描述》教学课件:第一章 绪论.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第二章 文法和语言.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第五章 语法制导翻译和中间代码生成.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第八章 代码生成.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第六章 运行时存储空间管理.ppt
- 上海交通大学:《编译原理》课程教学资源(PPT课件)第四章 语法分析.ppt
- 《Photoshop图形图像处理案例教程》 第一章 常识与基本概念.ppt
- 《Photoshop图形图像处理案例教程》 第七章 绘画工具之三.ppt
- 《Photoshop图形图像处理案例教程》 第三章 抠图.ppt
- 《Photoshop图形图像处理案例教程》 第九章 图层使用之二.ppt
- 《Photoshop图形图像处理案例教程》 第二章 基本操作.ppt
- 《Photoshop图形图像处理案例教程》 第五章 绘画工具之一.ppt
- 《Photoshop图形图像处理案例教程》 第八章 图层使用之一.ppt
- 《Photoshop图形图像处理案例教程》 第六章 绘画工具之二.ppt
- 《Photoshop图形图像处理案例教程》 第十一章 文本的输入编辑与美化.ppt
- 《Photoshop图形图像处理案例教程》 第十七章 帮助.ppt
- 《Photoshop图形图像处理案例教程》 第十三章 图像色调和色彩调整.ppt
- 《Photoshop图形图像处理案例教程》 第十二章 使用通道.ppt
- 《Photoshop图形图像处理案例教程》 第十五章 图像处理自动化.ppt
- 《Photoshop图形图像处理案例教程》 第十六章 图像的输入与输出.ppt
- 《Photoshop图形图像处理案例教程》 第十四章 使用滤镜.ppt