第3章词法分析与有限自动机资料

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

词法分析器
单词流
int,i,=,-
单 词 符 号
1,-
;,-
i,-
++,-
;,-
},-
1、词法分析器的任务和输出形式
(2)单词符号
单词符号是程序设计语言的基本语法单位和最小语义单位。
(3)单词符号的种类
标识符:标记常量、变量、函数等的名字,如fun、i
关键字:具有固定意义的标识符,如if、while、for
1、词法分析器的任务和输出形式
(1)词法分析器的任务
自左至右逐个字符地对源程序进行扫描,按语言的构词规则识别出 一个个单词,把作为字符串的源程序改造为单词符号串的中间程序。
void, -
main,-
(, -
源 void main( )
),-
语{
{,-
言 int i=1; 程 i++; 序}
字符串流
① 起点指示器:指向当前正在识别的单词的开始位置(指向新单词的首字符) ② 搜索指示器:用于向前搜索以寻找单词的终点
(4)扫描器的工作
调用预处理子程序,把N(如120)个输入字符装进扫描缓冲区的某半区, 搜索指针从起点指针开始向前寻找单词的终点,若在该半区内查找到单词 的终点,便输出二元式,再把起点指针移到此处的后一个字符,继续搜索 下一个单词,如果在搜索到该半区的边缘,尚未到达单词终点,那么就调 用预处理子程序,把后续的N个字符装进另半区,继续搜索。
(4)单词符号的输出形式
常用单词种别编码方案
标识符:一种
单词种别编码
关键字:全体视为一种或一字一种 常 数:按类型分种,如整数、实数、布尔型 运算符:一符一种 界 符:一符一种
返回
1、词法分析器的任务和输出形式
(5)举例
假定单词类别用整数编码,标识符、常数、关键字、运算符和界符的
编码依次为1、2、3、4、5。C++语句 if(a>=90) b=c;在经过词法分析
① 建立输入缓冲区,将源程序分批读入输入缓冲区中
② 过滤掉源程序中的注释;剔除一些无用的空白符、跳格符、回车符、换 行符等编辑性字符;进行宏替换;实现文件包含的嵌入和条件编译的嵌 入等。
③ 将预处理结果送扫描器的扫描缓冲区
(2)预处理程序作为独立子程序
预处理可作为一个子程序完成上述三个任务,并被词法分析器调用, 每调用一次,它就处理出一串确定长度(如120个字符)的输入字符,并 送进扫描缓冲区。

字符串形式 字符
法 分
的源程序


Fra Baidu bibliotek
单词 取下一单词 语







返回
2、将词法分析工作分离的考虑
(2)好处
① 简化设计: 由词法分析器处理注解和空白字符,可简化语法分析器的 设计。此外,在设计新语言时,分离词法和语法规则可以进行更全面 的语言设计。
② 改进编译效率: 编译的大部分时间消耗在读源程序和分离一个个单词 符号上,专用的经过精心设计的读源程序字符流和处理单词符号的词 法分析器可以加快编译速度。
③ 增强编译系统的可移植性:不同语言的字母表的特殊性,构词规则的 差异和其它与设备有关的不规则性可以限制在词法分析器中进行处理。
3.2 词法分析器的设计
1 输入缓冲区和预处理程序 2 扫描器的工作原理 3 状态转换图与单词的识别 4 状态转换图的代码实现
返回
1、输入缓冲区和预处理程序
(1)预处理程序
2、将词法分析工作分离的考虑
(1)将词法分析器设计为语法分析器的子程序
在实现编译程序时,常将词法分析程序从语法分析中独立出来,将其 设计为语法分析器的子程序,每当语法分析器需要一个单词符号时就调 用词法分析器,每一次调用,词法分析器就从输入串中识别出一个单词 符号,并将该单词类别和单词值返回给语法分析器。
用来区分该类单词中的哪一 个单词,它是单词本身的机 内编码。单词符号的属性是 指单词符号的特性或特征。 属性值是反应特性或特征的 值。例如,对于某个标识符, 常将存放它的有关信息的符 号表项的指针作为其属性值; 而对于某个常数,则是将存 放它的常数表项的指针作为 其属性值。
1、词法分析器的任务和输出形式
3、状态转换图与单词的识别
(1)状态转换图
状态转换图是一种有限方向图,状态转换图可用于识别3型语言,它 是设计和实现扫描器的一种有效工具,是有限自动机的直观图示。它由以 下几个要素构成:
单词符号
常 数:各种类型的常数,如实型0.618,布尔型TRUE
运算符:如+、-、*、/、<=、 <、>、 >= 、==
界 符:如,、;、(、),{,}
1、词法分析器的任务和输出形式
(4)单词符号的输出形式
二元式: ( 单词种别, 单词符号的属性值)
表示单词的种类,它是语 法分析所需要的信息。一 个语言的单词符号如何划 分种类、分为几类、如何 编码都属于技术性问题, 主要取决于处理上的方便。 通常让每种单词对应一个 整数码,这样可最大限度 地把各个单词区别开来。
编译原理
第3章 词法分析与有限自动机
安庆师范学院计算机与信息学院
本章目标
❖ 解释词法分析器的工作原理及设计实现 ❖ 介绍单词的描述工具:正规文法和正规式 ❖ 定义DFA和NFA的概念 ❖ 介绍“正规式→NFA→DFA→最小化DFA”的转换方法 ❖ 介绍有限自动机、正规文法和正规式的等价性 ❖ 介绍词法分析器的自动构造工具-LEX的原理与实现
2、扫描器的工作原理
(1)扫描器
执行词法分析的程序称为词法 分析程序,或称词法分析器, 或称扫描器。
(2)扫描缓冲区
一个可以互补使用的一分为二的扫描缓冲区。扫描缓冲区总长度为 2×N(如N=120)个字符,扫描器单词长度的要求是单词长度≤1/2扫描缓 冲区长度。
返回
2、扫描器的工作原理
(3)设置两个指示器
器处理后输出的二元式及其单词表示如下:
二元式
单词
(3, ’if’) (5, ’(’) (1,指向a的符号表项的指针) (4, ’>=’) (2, 90) (5, ’)’) (1,指向b的符号表项的指针) (4, ’=’) (1,指向c的符号表项的指针) (5, ’;’)
关键字if 界符( 标识符a 运算符>= 常数90 界符) 标识符b 运算符= 标识符c 界符;
教学内容
3.1 词法分析器的设计思想 3.2 词法分析器的设计 3.3 单词的描述工具 3.4 有限自动机 3.5 正规式、正规文法和有限自动机的等价性 3.6 词法分析器的自动构造工具——LEX 3.7 本章小结
3.1 词法分析器的设计思想
1 词法分析器的任务和输出形式 2 将词法分析工作分离的考虑
相关文档
最新文档