Appearance
第六章 词法分析
一、语言符号的分类
语言的符号通常分为5类:基本字、标识符、常数、运算符、界符
- 基本字:例如
begin
,if
,end
等语言预定义的具有特定含义的字符串,也称关键字或保留字 - 标识符:用来作为实体的名字或语句符号,通常是一个以字母开头的字母数字串。
- 常数:如整数、实数和字符串等。
- 运算符:如算术运算符,关系运算符,逻辑运算符等。
- 界符:如
, ; : ( )
等。
二、词法分析器的输出形式
二元式(符号的种别 符号自身的值)
本课程中:
- 基本字、运算符、界符一符一种
- 标识符为一种
- 常数按类型分种
三、词法分析器的结构
扫描缓冲区:完成预处理后,词法分析器从输入缓冲区输入一个 固定长度的字符串到另一个缓冲区,这个缓冲区称为扫描缓冲区。
双缓冲区结构:设置左右两个缓冲区,当左缓冲区读完后,新读入的字符存入右缓冲区;反之存放在左缓冲区。
- 起点指针:指示正在扫描的单词的起点
- 搜索指针:用于向前搜索,寻找单词的结束
四、符号的识别
- 基本字:有特定标志,直接识别;允许用作其他用途,则需要向前搜索
- 标识符:标识符以字母打头,后接字母/数字串,识别时扫描到界符即可
- 常数:识别出常数后翻译成数值存入常数表
- 运算符:一个字符的运算符,扫描到该字符即可;多个字符组成的运算符,要将其合成后再确定
- 界符:单字界符
五、状态转换图
结点:圆圈表示结点,代表状态
有向边:连接结点,边上标记字符表示该状态下可能接收或识别的字符
标识符识别的状态图