编译原理(四)

时间:2024-04-11 15:47:58

第4章 词法分析

词法分析程序又称扫描器,任务有两个:
(1) 识别单词 ——从用户的源程序中把单词分离出来;
(2) 翻译单词 ——把单词转换成机内表示,便于后续处理。

4.1 词法分析的基本概念

4.2 词法分析程序的设计

4.1 词法分析的基本概念

4.1.1 单词的分类与识别
4.1.2 单词的机内表示
4.1.1 单词的分类与识别
单词的分类 按单词的语法功能可分为
  1. 标识符 —— 用户为一些变量起的名字; 常 数 —— 以自身形态面对用户和系统;
  2. 特殊符 ——
    (1) 关键字 —— 系统内部定义,具有固定的意义, 通常用来区分语法单元;
    (2) 界 符 ——
    单字符界符 —— + - * / , ; : = < …
    双字符界符 —— <= <> >= == /* */ …
单词的识别

字母开头 —— 关键字或标识符;
数字开头 —— 数值型常量;
‘ 或 “ 开头 —— 字符型常量或字符串常量;
其它 —— 多数以自身形态识别,如+,:=,…

※ 如何区别关键字和标识符?
目前,大多数编译程序使用“保留字”,即关键字不能用作标识符。系统预先造好关键字表,识别出的字符串,先查“关键字”表,查到了,视为关键字, 否则,视为标识符

4.1.2 单词的机内表示

程序设计语言中的单词不但类别不同,而且长短不一,机内表示可以达到两个目的:
① 长短统一 ② 语法和语义信息分开
目前,大多数词法分析采用如下二元式形式:
编译原理(四)
编译原理(四)

4.2 词法分析程序的设计

4.2.1 词法分析程序的分类
4.2.2 一个简单词法分析器的实现
4.2.3 词法分析结果示例
4.2.1 词法分析程序的分类

(1) 作为独立一遍的扫描器
编译原理(四)
(2) 作为语法分析器的子程序的扫描器
编译原理(四)

4.2.2 一个简单词法分析器的实现

(1)识别器:识别单词的有限自动机
(2)翻译器:根据有限自动机所识别出的对象, 完成从单词串到单词的Token串的翻译编译原理(四)
编译原理(四)
编译原理(四)

4.2.3 词法分析结果示例

编译原理(四)
编译原理(四)