词法分析器的作用
词法分析是编译的第一阶段。词法分析器的主要任务是读入源程序的输入字符、将它们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。这个词法单元序列被输出到语法分析器进行语法分析
词法分析器通常还要和符号表进行交互。当词法分析器发现了一个标识符的词素时,它要将这个词素添加到符号表中,在某些情况下,词法分析器会从符号表中读取有关标识符的种类的信息,以确定向语法分析器传送哪个词法单元。
词法分析器在编译器中负责读取源程序,因此它还会完成一些识别词素之外的具体其他任务。
(1)过滤掉源程序中的注释和空白(空格、换行符和制表符以及在输入中用于分隔词法单元的其他字符)
(2)将编译器生成的错误消息和源程序的位置联系起来。
有时,词法分析器可以分成两个级联的处理阶段:
1)扫描阶段主要负责完成一些不需要生词词法单元的简单处理,比如删除注释和将多个连续的空白字符压缩成一个字符
2)词法分析阶段是较为复杂的部分,它处理扫描阶段的输出并生成词法单元
把编译器的分析部分分为词法分析和语法分析阶段主要有以下几个原因
A. 最重要的一点是考虑编译器的设计。将词法分析和语法分析分离开来,使得任务简化。
B. 提高编译器的效率。将两个阶段分离开来,使得我们能够专注于处理每个阶段对应的任务
C. 增强编译器的可移植性。输入设备相关的特殊性可以被限制在词法分析器中