【编译原理】词法分析(正规式与自动机)

本文详细介绍了正规文法、正规式和有穷自动机(DFA与NFA)的基本概念及相互之间的等价性。通过正规文法的产生式和正规式的转换规则,阐述了它们描述语言的能力。此外,还探讨了如何将NFA转化为等价的DFA以及DFA的最小化过程,包括子集法和分割法。这些理论在编译原理和形式语言理论中具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
 
 

一·单词的形式化描述工具

正规文法

3型文法,是一个四元式:G = (VN, VT, S, P)
 
正规式

也称为正则表达式,形式诸如:(a|b)*(aa|bb)(a|b)*
 
正规文法与正规式的等价性

一个正规语言可以由正规文法定义,也可以由正规式定义——它们当然就可能是等价

可以使用的转化规则(理解🌟)

正规文法的产生式正规式
A→xB B→yA = xy
A→xA|yA = x*y
A→x A→yA = x|y

在这里插入图片描述

 
 
 

二·有穷自动机(有限自动机)

 
确定的有穷自动机(DFA)

是一个五元组 M = (K, ∑, f, S, Z)

其中:K是状态集,∑是输入符号集,f是转化映像,S是唯一初态,Z是终态集

给定当前状态和输入符号,f就可以唯一确定下一个状态
 

不确定的有穷自动机(NFA)

是一个五元组 M = (K, ∑, f, S, Z)

其中:K是状态集,∑是输入符号集,f是转化映像,S是初态集,Z是终态集

不确定是说下一个状态可以有多个
 
 
NFA转化为等价的DFA——NFA的确定化(🌟)

DFA是NFA的一种特例。和刚刚说的“正规文法和正规式的等价”一样,如果两个自动机所定义的语言相同,则它们等价

算法:子集法

通俗的说:既然“不确定”的原因是因为同时有多个状态,那么我们就把这些状态的集合看作一种状态,然后再BFS。最终这些子集的转化关系就称为了一个DFA。

典型例题:《编译原理(清华大学第三版)》P64 3
 
 
确定的有穷状态机的化简——DFA的最小化(🌟)

DFA的最小化,其实就是消除无用状态和合并等价状态。其实关键在于合并等价状态。那么,怎样的两个状态是等价的呢?

状态的等价需要满足两个条件:

  1. 一致性条件:它们都是可接受状态不可接受状态(即都是终态非终态
  2. 蔓延性条件:我们用所有的输入符号进行转化,它们都可以转化到等价的状态

算法:分割法

通俗的说:先根据是否为终态分为两组,然后对同一组中的状态,用所有输入符号去试着转化,如果转化不到一组,则再分。不断进行上述操作。

典型例题:《编译原理(清华大学第三版)》P65 8

 

 

三· 正规式和有穷自动机的等价性

在这里插入图片描述

 
 

 

四· 正规文法和有穷自动机的等价性

在这里插入图片描述

 
 
 
 

 
 
 
 

 
 
 
 

E N D END END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值