编泽原理 第三章词法分析
编译原理 第三章 词法分析
编译原理 词法分析 墨这一章将讨论词法分析程序的构造。 慧词法分析的任务:从左至右逐个字符地对源程序进 行扫描,产生一个个的单词符号,把作为字符串的 源程序改造成为单词符号串的中间程序。 前一部分讨论手工构造方法,后一部分讨论自动构 造方法。 第2列
编译原理 第2页 词法分析 这一章将讨论词法分析程序的构造。 词法分析的任务:从左至右逐个字符地对源程序进 行扫描,产生一个个的单词符号,把作为字符串的 源程序改造成为单词符号串的中间程序。 前一部分讨论手工构造方法,后一部分讨论自动构 造方法
编泽原理 词法分析 3.1对于词法分析器的要求 墨词法分析器的功能和输出形式 词法分析器的功能是输入源程序,输出单词符号。 单词符号是一个程序语言的基本语法符号。程序语 言的单词符号一般可分为下列五种。 (1)关键字(保留字或基本字) (2)标识符 (3)常数(整型、实型、布尔型、文字型等) (4)运算符 (⑤)界符(逗号、分号、括号、/*,*/等) 第3负
编译原理 第3页 词法分析 3.1对于词法分析器的要求 词法分析器的功能和输出形式 词法分析器的功能是输入源程序,输出单词符号。 单词符号是一个程序语言的基本语法符号。程序语 言的单词符号一般可分为下列五种。 (1)关键字(保留字或基本字) (2)标识符 (3)常数(整型、实型、布尔型、文字型等) (4)运算符 (5)界符(逗号、分号、括号、/* , */等)
编译原理 词法分析 慧词法分析器所输出的单词符号常常表示成如下的二 元式: (单词种别,单词符号的属性值) 第4觉
编译原理 第4页 词法分析 词法分析器所输出的单词符号常常表示成如下的二 元式: (单词种别,单词符号的属性值)
编泽原理 词法分析 考虑下述c++代码段: while (i>=)i--; 经词法分析器处理后,它将被转换为如下的单词符号序列: <>=,> 第5页
编译原理 第5页 词法分析 考虑下述c++代码段: while(i>=j)i--; 经词法分析器处理后,它将被转换为如下的单词符号序列: <while,-> <(,-> <id,指向i的符号表项的指针> <>=,-> <id,指向i的符号表项的指针> <),-> <id,指向i的符号表项的指针> <--,-> <;,->
编译原理 词法分析 词法分析器作为一个蚀立子程序 可使整个编译程序的结构更简沽、清晰和条理化。 墨也可以把词法分析器安排成一个子程序,每当语法 分析器需要一个单词符号时就调用这个子程序。每 一次调用,词法分析器就从输人串中识别出一个单 词符号,把它交给语法分析器。 第6觉
编译原理 第6页 词法分析 词法分析器作为一个独立子程序 可使整个编译程序的结构更简沽、清晰和条理化。 也可以把词法分析器安排成一个子程序,每当语法 分析器需要一个单词符号时就调用这个子程序。每 一次调用,词法分析器就从输人串中识别出一个单 词符号,把它交给语法分析器
编泽原理 词法分析 3.2词法分析器的设计 输入、预处理 词法分析器工作的第一步是输入源程序文本。输入串 一般是放在一个缓冲区中,这个缓冲区称输入缓冲 区。 第7列
编译原理 第7页 词法分析 3.2词法分析器的设计 输入、预处理 词法分析器工作的第一步是输入源程序文本。输入串 一般是放在一个缓冲区中,这个缓冲区称输入缓冲 区
编译原理 词法分析 go on (estar 图3.1词法分析器 第8页
编译原理 第8页 词法分析
编泽原理 词法分析 墨扫描缓冲区进行扫描时一般用两个指示器,一个 指向当前正在识别的单词的开始位置(指向新单 词的首字符),另一个用于向前搜索以寻找单词 的终点。 起点指示器 搜索指示器 第第9页
编译原理 第9页 词法分析 扫描缓冲区进行扫描时一般用两个指示器,一个 指向当前正在识别的单词的开始位置(指向新单 词的首字符),另一个用于向前搜索以寻找单词 的终点。 起点指示器 搜索指示器
编译原理 词法分析 超前扫描 关健字的识别:(如FORTRAN语言) 1D099K=1,10 2IF(5.EQ.M)=10 3D099K=1.10 4IF(5)=55 第10页
编译原理 第10页 词法分析 超前扫描 关健字的识别 :(如FORTRAN语言 ) 1 D099K=1,10 2 IF(5 .EQ.M)I=10 3 D099K=1 .10 4 IF(5)=55