深入浅出词法分析Ⅱ(词法单元的识别 )

本文深入探讨词法分析的核心——有穷自动机(NFA与DFA),介绍正则表达式如何转化为NFA,以及NFA如何转换为DFA。详细解析了McMaughton-Yamada-Thompson算法,讲解了DFA的构造过程和状态最小化方法。
摘要由CSDN通过智能技术生成

核心——识别器(有穷自动机)

有穷自动机识别字符串的过程

  • 开始,自动机处于初始状态
  • 输入字符串的第一个字符,这时自动机会查询当前状态上与输入字符相匹配的边,并沿这条边转换到下一个状态。
  • 继续输入下一个字符,重复第二步,查询当前状态上的边并进行状态转换
  • 当字符串全部输入后,如果自动机正好处于接受状态上,则自动机接受了这一字符串。

有 穷 自 动 机 { 不确定有穷自动机NFA: 确定的有穷自动机DFA:有且只有一条离开该状态,以该符号为标号的边 有穷自动机 \begin{cases} \text {不确定有穷自动机NFA:}\\ \text{确定的有穷自动机DFA:有且只有一条离开该状态,以该符号为标号的边} \end{cases} { 不确定有穷自动机NFA:确定的有穷自动机DFA:有且只有一条离开该状态,以该符号为标号的边

NFA

DFA

1.DFA是NFA的一个特例

  • 没有输出 ε \varepsilon ε后的转换
  • 对于每一个状态s和每个输入符号a,有且只有一条标号为a的边离开s(就是没有分叉)

2.NFA允许从一个状态发出多条具有相同符号a的边也允许发出标有 ε \varepsilon ε的边
(不确定性1)简单来说就是可以不输入任何字符( ε \varepsilon ε)就可以转换到下一个状态
(不确定性2)NFA遇到两条边上有相同的符号的时候会自动猜测应该选择哪一条边,而且是正确的
3.NFA,DFA,正则表达式是等价的

4.DFA简单识别串算法

正则表达式转NFA——McMaughton-Yamada-Thomp-son算法

基本规则:

1.表达式 ε \varepsilon ε

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值