第4章词法分析
1
本章重点
,即有穷状态自动机技术和正则式技术。
、正则式、非确定有穷状态自动机(NFA)、确定有穷状态自动机(DFA)之间的等价性及相互变换的方法。
2
词法分析程序的设计
1 词法分析程序的功能
源程序单词序列
2 单词的词类和属性
(词类符号,单词的属性值)
3 把词法分析设计成一个独立程序
(1) 语法分析程序的子程序;
(2)组织成一遍扫描。
词法分析器
3
=
8
0
;
e
n
i
L
L
i
n
e
=
8
0
;
=
=
;
;
输入
0
3
1
字母
字母
数字
数字
数字
=
;
4
5
6
2
0
0
1
字母
1
字母
1
字母
2
0
0
=
5
0
0
0
=
5
3
数字
3
数字
3
数字
3
数字
4
4
;
6
输出
1
字母
1
字母
id , Line
= ,
num, 80
;,
有限控制器
分析结束
4
while i<>j do
if i>j then i:=i-j else j:=j-i
while , i , <> , j , do , if ,
i , > , j , then , 'i ', ':= , 'i', '-' , 'j ' ,
'else', 'j ' , ':= ', 'j ', '- ', ' i '
词法分析器
1 词法分析程序的功能
5
程序语言单词的分类:
(保留字或基本字):begin, end
:用来表示各种名字
:256,3 .14,true, abc
4. 运算符:如,+、-、*、/ 等等
:如逗号,分号,冒号等
2 单词的词类和属性
6
词法分析器的输出:(词类编码,单词自身的属性值)
* 词类编码供语法分析程序使用;
* 单词自身的属性值供语义分析程序使用。
具体的分类设计以方便语法分析程序使用为原则。
* 关键字可分成一类,也可以一个关键字分成一类(一符一类)。
* 常数可统归一类,也可按类型( 整型、实型、布尔型等),每个类型的常数划分成一类。
单词自身的属性值提供的内容,是由词法分析和语义分析的任务划分决定的。
7
例如:上例的源程序经词法分析器的输出
〈while,——〉
〈id,指向i的符号表入口的指针〉
〈relop , NE 〉
〈id,指向j的符号表入口的指针〉
〈do,——〉
〈if,——〉
〈id,指向i的符号表入口的指针〉
〈id,指向j的符号表入口的指针〉
8
3 把词法分析设计成一个独立程序
(1)组织成一遍扫描;(2)作为语法分析的子程序
词法
分析
语法分析
语义分析和
中间代码生成
源程序
中间代码
符号表管理
错误的诊查处理
9
(1)词法分析程序的主要任务
扫描源程序,产生单词符号
(2)词法分析程序的其他任务
滤掉空格,跳过注释、换行符
追踪换行标志,复制出错源程序,
宏展开,……
(3)词法分析工作从语法分析工作独立出来的原因
简化设计
改进编译效率
增加编译系统的可移植性
词法分析程序的工作
10
编译原理电子课件教案-第4章-词法分析 来自淘豆网www.taodocs.com转载请标明出处.