第三章

一、 对于词法分析器的要求

1.词法分析的任务

2.词法分析器:执行词法分析的程序

输入:源程序

输出:单词符号

       3.  源程序 à 词法分析器à 单词符号

       4.单词符号概念

              指语言中具有独立意义的最小的语法符号

 单词的种类:

1) 基本字2)标识符3)常数4)运算符5)界符

5.二元式表示单词

<单词种别,单词符号的属性值>

二、 词法分析器的设计

1.     结构

2.

1)输入缓冲区、预处理子程序

2)扫描缓冲区、扫描器

设置两个半区,设置两个指针,一个识别单词的开始,一个识别结束位置

3.     单词符号识别

1) 超前搜索

2) 直接分析法

3) 状态转化图(重点)

1.     状态转换图:一张有限方向图

2.     状态转换图的功能:识别(接受)一定的符号串(单词)

3.     状态转换图的结构

①结点:代表状态,用圆圈表示

②箭弧:状态之间用箭弧连接

③箭弧上的标记:代表在射出节点下可能出现的字符或字符串

至少要有一个终态

 

三、 正规表达式与有限自动机

 

基本思路:

à词法规则

à正规表达式

à有限自动机

à词法分析程序

 

1、正规式与正规集

2、正规式与正规集的定义(递归的定义方法)

(1)ε和φ是∑上的正规式,它们所表示的正规集分别为{ε}和φ

(2)任何a∈∑,是∑上的一个正规式,他所表示的正规集为{ a }

(3)假定U和V都是∑上的正规式,他们所表示的正规集分别记为L(U)和L(V),那么

       (a) (U|V)是正规式,所表示的正规集为L(U)∪L(V)

       (b) (UV)是正规式,所表示的正规集为L(U) · L(V)(连接积)

       (c) (U)*是正规式,所表示的正规集为 (L(U))*(闭包)

仅由有限次使用(1)(2)(3)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。

注:|(或)、 ·(连接)、*(闭包,任意有限次的自重复连接)

运算的优先级为:“ *”  > “ · ”   >  “ | ”

3、两个正规式的等价

       若两个正规式U和V所表示的正规集相同,则认为二者等价,记为:U = V

4、正规式的性质

       交换律,结合律,连接积的结合律,分配律,或的交换律

我们把状态转换图再形式化一下及所谓的有限自动机、

      

       DFA 和 NFA

       DFA定义:

一个确定有限自动机(DFA)M是一个五元式:M = (S, ∑, f, s0, F),其中

1)    S是一个有限的状态集合,它的每个元素我们称为一个状态

2)    ∑是一个有穷的输入符号的字母表,它的每个元素我们称为一个输入字符

3)    f是从 S×∑ →S的单值部分映射

4)    s0是S的一个元素,为初始状态,它是唯一的

5)    状态集合F是终止状态的集合,它是S的子集(可空)

NFA定义:

一个非确定有限自动机(NFA)M是一个五元式M = (S,∑, f, S0, F),其中

1)    S是一个有限的状态集合,它的每个元素我们称为一个状态

2)    ∑是一个有限的输入符号的字母表,它的每个元素我们称为一个输入字符

3)    f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)
(f是非单值的
àM是非确定)

4)    状态集合S0是初始状态集合,它是S的子集

5)    状态集合F是终止状态的集合,它是S的子集

 

 

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

       利用以下替换规则可以将正规式转换为有限自动机:

定理:对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M)= L(V)

 

定义1:假定I是M’的状态集的子集,定义I的ε闭包ε_CLOSURE(I)为:

       (a)若q∈I,则q∈ε_CLOSURE(I)

       (b)若q∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于ε_CLOSURE(I)

定义2:假定I是M’的状态集的子集,a ∈ ∑,定义Ia=ε_CLOSURE(J)

其中,J是所有那些可从I中的某一状态结点出发经过一条a弧而到达的状态结点的全体

 

确定有限自动机的化简(最少化)

 

对于这个地方,最重要的问题在于以下三点:

1) 正规式转换为NFA

2) 利用子集法对NFA确定化

3) DFA的化简(最小化)

 

 

 

 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值