词法分析程序

任务

从左至右扫描源程序的字符串,按照词法规则识别出一个个正确的单词,并转换为相应的二元式(类号,内码)形式,交给语法分析使用。

image-20220529214323352

  • 输入缓冲区中可以会有预处理

预处理原因:

  • 空行、回车、空格、注释进行过滤
  • 一行语句结束应配上一个特殊字符说明,如分号“;”
  • 有些语言要识别标号区,区分标号语句,找出续行符连接成完整语句等

超前搜索

  • 一般高级语言不必超前搜索,但有些对关键字不加保护的语言,单词间没有明确界符,要在上下文环境中识别单词,这时需要超前搜索。

单词分类

  • 基本字(关键字、保留字),设置基本字表,每个基本字占有一个类号,内码缺省;
  • 标识符: 变量名、数组名、函数名、过程名―常量,动态填写标识符表
  • 各种标识符统一为一类,由内码来区分不同的标识符名。通常将各标识符的符号表入口地址作为其内码
  • 对于常量,以常量的数据类型区分不同类号。对每一类(整数、浮点数)设置相应常量表。各常量在其常量表中的入口地址作为其内码
  • 运算符:设置运算符表
  • 界符:. , ; ( ):等。有时把运算符也当作界符。设置界符表