第3章--词法分析

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章 词法分析

知识结构:

功能 词法分析器的要求 单词符号分类 词法分析 单词内部形式

器的设计 设计方发

词法分析器的设计 状态图

词法分析器组成

正规表达式

单词描述工具 正规集

词法分析器 正规文法

确定有限自动机(DFA )

单词识别工具 非确定有限自动机(NFA )

DFA 的最小化

正规式与FA 的等价转换

等价转换

正规文法与FA 的等价转换

第一节 对词法分析器的要求

一、词法分析器的功能

输入源程序,输出单词符号(二元式表示)。

关键字:是由程序语言定义的具有固定意义的标识符。

标识符:用来表示各种名字,如变量等。

常数:常数的类型有整型,实型等。

运算符:算术运算符,关系运算符,逻辑运算符。

界限符:逗号,分号等。

三、单词符号内部的表示形式

内部的单词符号TOKEN字(二元式),TOKEN字占用机器字的长度,依据信息量的多少而定。

1、TOKEN字结构

CLASS:用整数表示。

VALUE:表示单词符号的属性(符号表指针)。

2、TOKEN的作用

CLASS:用于语法分析器对源程序结构的分析。

VALUE:用于语义分析器对源程序具体操作的分析。

3、单词种别码划分原则

CLASS:关键字,运算符,界限符(编译程序定义的符号)

使用一字一种编码。VALUE值省略。

VALUE:标识符,常数(用户定义的符号),存放符号表

常数表的指针。标识符,常数每一类为一种编码。

例:BEGIN A:= B END;

词法分析结果:符号表

(BEGIN,---- )Array(A ,K1 ) K1

(:= ,--- )

(B ,K3 ) K3

(END ,--- )

(;,--- )

四、词法分析器的结构

1、一遍扫描(交互式结构)。

2、多遍扫描(独立式结构)。

第二节词法分析器的设计

一、设计步骤

1、确定词法分析器的接口关系;

2、确定单词分类和TOKEN字的结构;

3、对每一类单词构造状态转换图;

4、根据状态转换图设计算法。

二、功能描述

1、组织源程序输入;

2、按词法规则拼读单词符号,并转换成二元式;

3、删除注解行,空格和无用符号;

4、检查词法错误。

三、设计方法

1、输入(读取原文件)

原文件存储方式:

一种方式将原文件一次读入内存,另一种方式利用缓冲区技

术将原文件分批读入内存。

缓冲区的设置:

输入(扫描)缓冲区,存放输入的原文件(双缓冲区)。

2、预处理

功能描述:

删除无用符号,出错信息的列表打印。

单词符号的识别:

⑴语句格式

①标识符不能被无效字符隔开。

②标识符与关键字,关键字与关键字之间用空格符隔开。

②标识符的个数不能超过限定的个数。

⑵单词符号的格式

①标识符,关键字的首字符必须是字母。

②常数的首字符必须是数字。

3、识别算法(P39)

标识符的识别;常数的识别;算符的识别;界符的识别。

四、状态转换图

1、状态转换图的表示形式

是一张有向图,结点代表状态(用○表示),结点间用箭弧线连接( ),箭弧线上的符号,表示射出结点到达射入结点可能识

别的输入符号,终态结点代表分析结束。

初态⇒

⑴ ⇒⊙初始状态,表示识别符号串的开始。

⑵双圈◎终态,表示识别符号串的结束。

⑶◎*

表示多读入一个字符。

例1:标识符的状态转换图

状态转换矩阵

字母,数字

例2:标识符“

AB1”的识别 例4 状态转换矩阵 数字

2、识别过程

从初态开始,逐步读入字符,转到下一个状态(或出错),直至终态(或不能到达终态出错)。

例3:字符串“AB+12”的识别

识别出单词AB,

多读入一个字符 +。由另一张状态转换图识别单词符号 +。继续识别剩余字符12(数字):

上述识别过程把AB +12字符串分解为三个单词符号“AB ”、“ + ” 、“12”。

3、状态转换图的实现

状态转换图非常容易用程序实现,每一个状态对应一段程序。 ⑴不含回路的分叉状态结点的程序设计

利用多分支语句CASE 或选择语句IF...THEN...ELSE...。 ⑵含回路状态结点的程序设计

利用循环语句WHILE...DO。

⑶词法分析程序的组成

状态转换图是一种特殊的流程,它可直观清晰地描述单词符号的识别过程,只要把每一个结点加入语义动作,就构成了词法分析程序。

4、词法分析程序的组成(八个模块)

主控模块;初始化模块;判定源程序文件是否存在模块;从源程序文件中读一个字模快;拼读一个单词模块;查关键字模块;输出单词模块;错误处理模块。

第三节正规式、正规集、正规文法

一、正规式的定义

∑中的符号为正规式的基本符号,单个符号或由符号与运算符组成的表达式称正规式。

运算符优先级:

重复用“ * ”表示;

连接用“•”表示或省略;

选择用“∣”表示。

例:a,ab *

,a∣b ,(a∣b)c都是正规式。

二、正规集

由正规表达式所表示的字符串的集合称为正规集。如正规式用V表示,正规集L(V)表示。

三、正规文法

相关文档
最新文档