第三章 词法分析

词法分析是编译的第一个阶段,在单词的级别上分析和翻译源程序。

有限自动机理论与正规文法、正规式之间在描述语言方面有一一对应的关系。

词法分析的任务:从左到右逐个字符地对源程序进行扫描,产生一个个单词符号。

3.1 对词法分析器的功能和输出形式

一、词法分析器的功能和输出形式

功能:输入源程序、输出单词符号。

单词符号的总类:标准字、标识符、常数、运算符、界符。

二、词法分析器作为一个独立子程序

3.2 词法分析器的设计

一、输入、预处理

二、基本字识别:超前搜索

1、基本字识别。

2、标识符识别。

3、常数识别。

4、算符和界符的识别。

三、状态转换图

(1)状态转换图是一张有限方向图。

一张状态转换图只包含有限个状态,其中有一个为初态,至少有一个终态。

一个状态转换图可用于识别(或接受)一定的字符串。其中*表示需要回退一格。

(2)几点重要限制——不必使用超前搜索:

1、所有的基本字都是保留字;用户不能用他们作为自己的标识符。

2、基本字作为特殊标识符来处理;不用特殊的状态图来识别,只要查保留字表。

3、如果基本字、标识符和常数(或符号)之间没有确定的运算符或界符作间隔,则必须使用一个空白符做间隔。

(3)状态转换图的实现

3.3 正规表达式与有限自动机

∑(字符集)中的每个元素称为字符,字符的有穷序列构成字符串,不含任何字符的序列称为空字,∑*为字上的全体,uv的连接(积),闭包,正规闭包。

3.3.1 正规式和正规集

正规集可以用正规表达式表示。

正规表达式是表示正规集的一种方法,一个字集合是正规集当且仅当他能用正规式表示。

(1)正规式和正规集的定义

正规式和正规集的递归定义:

对于给定的字母表∑

 

 所有词法结构一般都可以用正规式描述

若两个正规式所表示的正规集相同,则称这两个正规式等价。

 对正规式,下列等价成立:

 3.3.2 确定有限自动机(DFA)

自动机M是一个五元式M=(S,∑,f,S0,F):

1、S为有穷状态集;

2、∑为输入字母表;

3、f为状态转换函数;

4、S0∈S是唯一一个初态;

5、F是S的一个子集:终态集(可空)。

f、状态转换矩阵、状态转换图反应的是同一个内容。

DFA M所识别的字的全体记为L(M)。

3.3.3 非确定有限自动机(NFA)

4、S0是非空的初态集。

从状态转换图看NFA和DFA的区别:

1、弧上的标记可以是∑*中的一个字,而不一定是单个字符。

2、同一个字可能出现在同状态射出的多条弧上。

对于任何两个有限自动机M和M’,如果L(M)=L(M‘),则称M与M’等价。

对于每个NFA M存在一个DFA M‘,使得L(M)=L(M’)。亦即DFA与NFA描述能力相同。

将NFA转换为DFA:

把NFA确定化——采用子集法:

 ∈-closure(I)为I和I经过任意条 ∈能都达到的状态。

 将该表看成一个状态转换矩阵,把其中每一个子集看成一个状态。

 3.3.4 正规文法与有限自动机的等价性

对于正规文法G和有限自动机M,如果L(G)=L(M),则称G和M是等价的。

正规文法:

1)右线形文法

A->αB或A->α

2)左线形文法

A->Bα或A->α

定理:

1、对每一个右线性正规文法G与左线性文法G,都存在一个有限自动机(FA)M,使得L(M)=L(G)。

2、对每一个FA M,都存在一个右线性正规文法GR和左线性文法GL,使得L(M)=L(GR)=L(GL)。

正规文法->有限自动机:

1)对于右线性文法:

2)对于左线性文法:

有限自动机->正规文法:

1)

2)

3.3.5 正规式与有限自动机的等价性

3.3.6 确定有限自动机的化简

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值