编辑: wtshxd 2019-07-03
2015/9/6 《编译原理与技术》讲义

1 编译原理与技术 词法分析(1) 2015/9/6 《编译原理与技术》讲义

2 词法分析 ? 词法分析器介绍 ? 正规式与正规集 ? 有限自动机 ? 词法分析器的自动生成-Lex 2015/9/6 《编译原理与技术》讲义

3 词法分析器介绍 ? 词法分析器的功能 高级语言 源程序 词法分 析器 语法分 析器 token get_next_token 编译器其 它阶段 符号表 字符流 记号 (流) 2015/9/6 《编译原理与技术》讲义

4 词法分析器介绍 ? 词法分析器的功能 ? 读源程序,产生记号序列 ? 剥去源程序中的注释(块、行)和 空白 符?预处理-宏处理与文件包含 2015/9/6 《编译原理与技术》讲义

5 词法分析器介绍 ? 词法分析器作为独立子程序 ? 简化设计 ? 提高编译效率 ? 增强可移植性 2015/9/6 《编译原理与技术》讲义

6 词法分析器介绍 ? 记号、模式与单词 ? 记号-同类单词的总称 ? 模式-描述构成记号的字符串的规则 ? 单词-源程序中能匹配任一记号的字符串 2015/9/6 《编译原理与技术》讲义

7 程序语言的记号(1) 记号 单词 模式 关键字 WHILE while while FOR for for 标识符 ID temp, i, max 字母开头的字母数字串 常数 NUM 3.

14

100 数字字符串{.数字字符串} 2015/9/6 《编译原理与技术》讲义

8 程序语言的记号(2) 记号 单词 模式 运算符 MUL * * GT >

>

界符 , , , 串常量 STRING hello '

there'

双(单)引号中间的字符 串(不包括引号本身) 2015/9/6 《编译原理与技术》讲义

9 词法分析器介绍 ? 词法分析器的二元输出 单词(字符 串)的类别 匹配记号的单词多于 一个时,须提供额外 的信息以区别之 2015/9/6 《编译原理与技术》讲义

10 词法分析器介绍 ? 词法分析器的二元输出 记号影响语法 分析的决策 属性(如类型、 偏移)则关系到 记号的翻译 2015/9/6 《编译原理与技术》讲义

11 词法分析器介绍 ? e.g.1 pascal源程序片段: begin length := length + 1;

if length 2015/9/6 《编译原理与技术》讲义

15 词法分析器介绍 ? 超前搜索 ? FORTRAN中的关键字 不保留 1) DO100K=1,10 2) DO100K=1.10 3) IF(5.EQ.M) I=10 4) IF(5)=55 ? 有关算符的识别 C/C++, java的+等,与之对应 2015/9/6 《编译原理与技术》讲义

16 词法分析器介绍 ? 词法错误 ? 可检测非法字符的出现 ? if VS fi ? 词法分析器的设计 ? 手工编写-采用汇编语言或高级语言 ? 自动生成-Lex 2015/9/6 《编译原理与技术》讲义

17 词法分析器介绍 ? 状态转换图 用于记号的识别.状态之间用带有标记(字符)的 有向边连接;

每读入一个字符会引起状态变化,直 至单词(记号)被识别出来. 开始状态:状态转换图的初始状态(尚未读字符) 接受状态:某个单词被识别时所处的状态(终态) 单词(记号)的识别过程即是从开始状态出发到某 接受状态的变化过程. 2015/9/6 《编译原理与技术》讲义

18 词法分析器介绍 ? 状态转换图

0 1

2 字母 其它 字母或数字 识别标识符的转换图 *

0 3

4 数字 其它 数字 识别整数的转换图 * 2015/9/6 《编译原理与技术》讲义

19 词法分析器介绍 ? 状态转换图

0 5 数字 . 识别Pascal无符号数的转换图 * 数字

6 7

8 9

10 11 数字 数字 E +|- 数字 数字 其它 E 数字 其它 其它 2015/9/6 《编译原理与技术》讲义

20 词法分析器介绍 ? 状态转换图

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题