第三章 词法分析(1).ppt
《第三章 词法分析(1).ppt》由会员分享,可在线阅读,更多相关《第三章 词法分析(1).ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、南京邮电大学计算机学院蒋凌云 教材:编译技术原理及其实现方法王汝传 编著编编 译译 原原 理理 Compiler Principles1 1 第三章 词 法 分 析3.1 3.1 引言引言 一、词法分析基本思想 二、词法分析任务 三、词法分析方式 四、词法分析方法3.2 3.2 单词的内部编码单词的内部编码 一、单词 二、内部编码3.3 3.3 正规文法和状态转换图正规文法和状态转换图 一、正规文法 二、状态转换图 三、正规文法与状态转换图3.4 3.4 词法分析程序设计与实现词法分析程序设计与实现 一、源程序的输入 二、缓冲区及预处理 三、超前搜索 四、由词法语法规则画状态转换图 五、词法分
2、析程序的设计与实现3.5 3.5 正规文法和有穷自动机正规文法和有穷自动机 一、用正规文法描述单词 二、由正规文法构造状态转换图 三、有穷自动机FA 四、有穷自动机和正规文法的关系 五、DFA与NFA的关系3.6 3.6 正规表达式和有穷自动机正规表达式和有穷自动机 一、正规表达式和正规集的定义一、正规表达式和正规集的定义 二、正规表达式的性质二、正规表达式的性质 三、正规文法、正规表达式与有穷自动机三、正规文法、正规表达式与有穷自动机 四、由正规表达式构造确定有穷自动机四、由正规表达式构造确定有穷自动机 五、确定有穷自动机的化简五、确定有穷自动机的化简3.7 3.7 词法分析程序的自动生成词
3、法分析程序的自动生成 一、问题的提出一、问题的提出 二、语言二、语言LEXLEX一般描述一般描述 三、三、LEXLEX编译程序的实现编译程序的实现 四、四、LEXLEX目标程序目标程序2 2 第三章 词 法 分 析3.1 3.1 引言引言 一、词法分析基本思想 二、词法分析任务 三、词法分析方式 四、词法分析方法3.2 3.2 单词的内部编码单词的内部编码 一、单词 二、内部编码3.3 3.3 正规文法和状态转换图正规文法和状态转换图 一、正规文法 二、状态转换图 三、正规文法与状态转换图3.4 3.4 词法分析程序设计与实现词法分析程序设计与实现 一、源程序的输入 二、缓冲区及预处理 三、超
4、前搜索 四、由词法语法规则画状态转换图 五、词法分析程序的设计与实现3.5 3.5 正规文法和有穷自动机正规文法和有穷自动机 一、用正规文法描述单词 二、由正规文法构造状态转换图 三、有穷自动机FA 四、有穷自动机和正规文法的关系 五、DFA与NFA的关系3.6 3.6 正规表达式和有穷自动机正规表达式和有穷自动机 一、正规表达式和正规集的定义 二、正规表达式的性质 三、正规文法、正规表达式与有穷自动机 四、由正规表达式构造确定有穷自动机 五、确定有穷自动机的化简3.7 3.7 词法分析程序的自动生成词法分析程序的自动生成 一、问题的提出 二、语言LEX一般描述 三、LEX编译程序的实现 四、
5、LEX目标程序3 3 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法
6、 2.2.状态矩阵法状态矩阵法4 43.1 3.1 引引 言言经过第一章的学习,我们已经初步了解了编译过程及各经过第一章的学习,我们已经初步了解了编译过程及各经过第一章的学习,我们已经初步了解了编译过程及各经过第一章的学习,我们已经初步了解了编译过程及各阶段的功能,从本章开始我门将详细叙述各阶段是如何阶段的功能,从本章开始我门将详细叙述各阶段是如何阶段的功能,从本章开始我门将详细叙述各阶段是如何阶段的功能,从本章开始我门将详细叙述各阶段是如何工作的。首先来看一下工作的。首先来看一下工作的。首先来看一下工作的。首先来看一下词法分析词法分析词法分析词法分析,这是编译的第一步,这是编译的第一步,这是
7、编译的第一步,这是编译的第一步,也是编译的重点,下面我们将将详细介绍词法分析的方也是编译的重点,下面我们将将详细介绍词法分析的方也是编译的重点,下面我们将将详细介绍词法分析的方也是编译的重点,下面我们将将详细介绍词法分析的方法。法。法。法。源源程程序序词法词法词法词法分析分析分析分析程序程序程序程序语法语法分析分析程序程序语义语义分析分析程序程序中间中间代码代码生成生成代码代码优化优化程序程序目标目标代码代码生成生成目目标标程程序序信信 息息 表表 管管 理理 程程 序序错错 误误 检检 查查 和和 处处 理理 程程 序序5 5 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想
8、词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法6 63.1 引言引言 一、一、词法分析基本思想词法分析
9、基本思想 扫描源程序扫描源程序 识别单词识别单词 变成中间程序变成中间程序L1(内部编码)。内部编码)。即从左到右逐个字符地扫描源程序,产生一个个独立的单词,即从左到右逐个字符地扫描源程序,产生一个个独立的单词,并将其改变成等价的中间程序,记为:并将其改变成等价的中间程序,记为:L1。实际上是机器的实际上是机器的 内部编码内部编码符号序列符号序列符号序列符号序列单词序列单词序列单词序列单词序列词词词词法法法法分分分分析析析析7 7 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消
10、除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法8 83.1 3.1 引引 言言 二、词法分析任务 1.1.识别单词识别单词 扫描源程序的一个个字符,按照语言的词法规则,识别出扫描源程序的一个个字符,按照
11、语言的词法规则,识别出扫描源程序的一个个字符,按照语言的词法规则,识别出扫描源程序的一个个字符,按照语言的词法规则,识别出各类有独立意义的单词。各类有独立意义的单词。各类有独立意义的单词。各类有独立意义的单词。如:如:如:如:begin begin,procedure procedure,+,5.43 5.43,abcabc等。等。等。等。9 9 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5
12、.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法10103.1 3.1 引引 言言 二、词法分析任务二、词法分析任务 2.2.2.2.消除无用字符消除无用字符消除无用字符消除无用字符 对源程序文本进行处理,消除源程序文本中的注释、空对源程序文本进行处理,消除源程序文本中的注释、空对源程序文
13、本进行处理,消除源程序文本中的注释、空对源程序文本进行处理,消除源程序文本中的注释、空格、换行符以及其他一切对语法分析和代码生成均无关格、换行符以及其他一切对语法分析和代码生成均无关格、换行符以及其他一切对语法分析和代码生成均无关格、换行符以及其他一切对语法分析和代码生成均无关的信息。的信息。的信息。的信息。1111 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配
14、存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法12123.1 3.1 引引 言言 二、词法分析任务二、词法分析任务 3.3.3.3.变成内部编码变成内部编码变成内部编码变成内部编码 将长度不一、种类不同的单词变成长度统一、格式规整、将长度不一、种类不同的单词变成长度统一、格式规整、将长度不一、种类不同的单词变成长度统
15、一、格式规整、将长度不一、种类不同的单词变成长度统一、格式规整、分类清晰的一种内部机器码表示。分类清晰的一种内部机器码表示。分类清晰的一种内部机器码表示。分类清晰的一种内部机器码表示。1313 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将
16、词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法14143.1 3.1 引引 言言 二、词法分析任务二、词法分析任务 4.4.4.4.建立各种表格建立各种表格建立各种表格建立各种表格 在词法分析时,可以根据单词特点建立不同表格,如:在词法分析时,可以根据单词特点建立不同表格,如:在词法分析时,可以根据单词特点建立不同表格,如:在词法分析时,可以根据单词特点建立不同表格,如:名字表(标识符表):源程序中的标识符集中在表中名字表(标识符表):源程
17、序中的标识符集中在表中名字表(标识符表):源程序中的标识符集中在表中名字表(标识符表):源程序中的标识符集中在表中 常数表常数表常数表常数表 数组向量表、过程表等数组向量表、过程表等数组向量表、过程表等数组向量表、过程表等 界限表:包含了保留字、运算符等界限表:包含了保留字、运算符等界限表:包含了保留字、运算符等界限表:包含了保留字、运算符等1515 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5
18、.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法16163.1 3.1 引引 言言 二、词法分析任务二、词法分析任务 5.分配存贮单元(静态变量)分配存贮单元(静态变量)对简单变量、常量及数组进行静态存贮分配对简单变量、常量及数组进行静态存贮分配 静态存贮分配静态存贮分配:在编译时就可
19、以决定应分配内存的大小。:在编译时就可以决定应分配内存的大小。动态存贮分配动态存贮分配:到运行时才进行的存贮分配。:到运行时才进行的存贮分配。如:变界数组、动态变量。如:变界数组、动态变量。静态存贮分配可以在词法分析阶段进行,也可以在语法分析静态存贮分配可以在词法分析阶段进行,也可以在语法分析阶段进行,随具体编译系统而定。阶段进行,随具体编译系统而定。1717 第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各
20、种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法18183.1 3.1 引引 言言 二、词法分析任务二、词法分析任务 6.6.进行词法检查进行词法检查 将一些单词错误检查出来,将一些单词错误检查出来,如保留字如保留字PROGRAM、VAR;又例如变量是否有说明或是否重复说明等
21、。又例如变量是否有说明或是否重复说明等。1919第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1
22、.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法2020第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法
23、分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法21213.1 3.1 引引 言言 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 在多遍扫描的编译程序中,词法分析可以单独作为一遍扫在多遍扫描的编译程序中,词法分析可以单独作为一遍扫描来完成,此时可将词法分析程序的输出放在一个中间文描来完成,此时可将词法分析程序的输出放在一个中间文件上,语法分析程序可以从该文件上取得它的输入。件上,语法分析程序可以从该文件上取得它的输入。词法分析从语法分析词法分析从语法分析独立出来的原因:独立出来的原因:(1 1)便于集中进行语法分析)
24、便于集中进行语法分析 (2 2)便于建立有效词法分析技术)便于建立有效词法分析技术 (3 3)将给语法分析提供更多更详细信息)将给语法分析提供更多更详细信息字符串表示字符串表示字符串表示字符串表示的源程序的源程序的源程序的源程序词法分析程序词法分析程序词法分析程序词法分析程序符号串表示符号串表示符号串表示符号串表示的源程序的源程序的源程序的源程序字符字符单词单词2222第三章 词 法 分 析3.1 引言引言 一、一、词法分析基本思想词法分析基本思想 二、词法分析任务二、词法分析任务 1.1.识别单词识别单词 2.2.消除无用字符消除无用字符 3.3.变成内部编码变成内部编码 4.4.建立各种表
25、格建立各种表格 5.5.分配存贮单元(静态变量)分配存贮单元(静态变量)6.6.进行词法检查进行词法检查 三、词法分析方式三、词法分析方式 1.1.将词法分析和语法分析程序分开将词法分析和语法分析程序分开 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 四、词法分析方法四、词法分析方法 1.1.直接分析方法直接分析方法 2.2.状态矩阵法状态矩阵法23233.1 3.1 引引 言言 三、词法分析方式三、词法分析方式 2.2.将词法分析程序编写成一个独立子程序将词法分析程序编写成一个独立子程序 在一遍扫描的编译程序中,往往将词法分析编成语法分析的一个子程在一遍扫描的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 词法分析1 第三 词法 分析
限制150内