编译原理学习笔记之词法分析中的状态机与自动机

本文详细介绍了词法分析中有限状态机的概念,包括确定有限自动机(DFA)和不确定的有限自动机(NFA)的区别及其构建方法。通过正规式到DFA的转换,展示了NFA到DFA的子集构造法,并讨论了DFA的化简过程,旨在帮助读者深入理解编译原理中的状态机与自动机。
摘要由CSDN通过智能技术生成

有限状态机

关于词法记号的识别可以用有限状态机来描述

有限状态机以转化图的形式描述状态的转化

比如对于正规式d->a

其中初始状态为0,匹配到a之后,到达状态1,1的双圈表示最终状态;类似地

正规式d->ab

正规式d->a|b

正规式d->a*

该状态表示可以匹配零个a到达最终状态0,也可以匹配无数个a到达最终状态0

正规式d->a?

表示a出现0次或1次,因此有两个最终状态

因此我们可以将独立地正规式加以组合处理来解决复杂的正规式

比如对关系运算符的匹配

其中诸如 *return...的结果表示指针回退一位,吐出多读入的other字符

再比如标识符的匹配id ->letter (letter | digit )*

其中匹配过程可以概括为三步

  • 检查关键字表,如果在表中发现该词法单元则返回相应的记号并退出,否则转向2

  • 该词法单元是标识符,在符号表中查找,若找到该词法单元则返回该条目的指针并退出,否则执行3

  • 在符号表中建立一个新的条目,把该词法单元填入,并返回此新条目的指针

对于无符号数num ->digit+ (.digit+)? (E (+ | -)? digit+)?

这个就稍微有点复杂了,因此直接通过正规式有些很难写出状态转化图,因此我们需要借助中间手段来实现这一过程

一般的流程如下图所示

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值