词法分析器:
- 作用:
- 与符号表进行交互,存储和读取符号表中的标识符的信息
- 读入源程序的输入字符,将他们组成词素,生成并输出一个词法单元序列,每个词法单元序列对应一个于一个词素
- 过滤掉程序中的注释和空白
- 将编译器生成的错误消息与源程序的位置联系起
- 相关概念:
- 词法单元:由一个词法单元名和一个可选的属性值组成,词法单元名是一个表示某种词法单位的抽象符号,词法单元名是语法分析器的输入符号
- 在很多程序设计语言中:
- 每个关键字有一个词法单元,一个关键字的模式就是该关键字本身
- 表示运算符的词法单元,可以表示单个运算符,也可以表示一类运算符
- 一个表示所有标识符的词法单元
- 一个或多个表示常量的词法单元,比如数字和字面值字符串
- 每一个标点符号有一个词法单元,比如左右括号、逗号和分号
- 属性值:
- 一个标识符的属性值是一个指向符号表中该标识符对应条目的指针
- 例:
- 在很多程序设计语言中:
- 模式:描述了一个词法单元的词素可能具有的形式
- 词素:是源程序中与某个词法单元的模式匹配的一个字符序列,由词法分析器识别为该词法单元的一个实例
- 例:
- 词法单元:由一个词法单元名和一个可选的属性值组成,词法单元名是一个表示某种词法单位的抽象符号,词法单元名是语法分析器的输入符号
- 词法错误恢复策略:
- 恐慌模式恢复:从剩余的输入中不断删除字符,直到词法分析器能够在剩余输入的开头发现一个正确的词法单元为止
- 可能采取的其他错误恢复动作:
- 从剩余的输入中删除一个字符
- 向剩余的输入中插入一个遗漏的字符
- 用一个字符来替换另一个字符
- 交换两个相邻的字符
参考——《编译原理(第二版)》