编译原理 第三章词法分析 上海交通大学 张冬茉 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)所示。