词法分析器

词法分析器

前言:

  • 词法分析是编译的第一阶段。它的含义是当程序进入编译器的时候首先是词法分析去分析它。也就能够得出词法分析器的主要任务。

词法分析器的主要任务:

  • 读入源程序的输入字符(好比说C语言程序的#)、将它们组成词素, 生成并输出一个词法单元序列, 每一个词法单元对应于一个词素。下一步就是进行语法分析(这不是本文章讨论的内容了), 这个词法单元序列被输出到语法分析器进行语法分析。

词法分析器的其余任务:

  • 过滤掉源程序中的注释和空白(例如: 空格、换行符、制表符以及在输入中用于分隔词法单元的其余字符);
  • 编译器生成的错误消息与源程序的位置联系起来。
  • 词法分析器能够负责记录遇到的换行符的个数,以便给每一个出错消息一个行号。在某些编译器中,词法分析器会创建源程序的一个拷贝,并将出错信息插入到适当位置。若是源程序使用了一个宏预处理器,则宏的扩展也能够由词法分析器完成。

词法分析器的处理阶段:

  • 有的时候,词法分析器能够分红两个级联的处理阶段:code

    • 扫描阶段主要负责完成一些不须要生成词法单元的简单处理,好比删除注释和将多个连续的空白字符压缩成一个字符。
    • 词法分析阶段是较为复杂的部分,它处理扫描阶段的输出并生成词法单元。

词法单元、模式和词素:

词法单元:

  • 词法单元由一个词法单元名和一个可选的属性值组成。词法单元名是一个表示某种词法单位的抽象符号,好比一个特定的关键字,或者表明一个标识符的输入字符序列。词法单元名字是由语法分析器处理的输入符号。
  • 模式描述了一个词法单元的词素可能具备的形式。当词法单元是一个关键字时,它的模式就是组成这个关键字的字符序列。对于标识和其余词法单元,模式是一个更加复杂的结构,它能够和不少符号串匹配。
  • 词素是源程序中的一个字符序列,它和某个词法单元的模式匹配,并被词法分析器识别为该词法单元的一个实例。
相关文章
相关标签/搜索