Atitit 下推自动机﹙PDA﹚说明书
目录
11.1. 学习曲线,鉴于fsm状态机和,turing机之间 3
1. 概念组成与原理成分
下推自动机可以形象的理解为,把有限状态自动机扩展使之可以存取一个栈。每一个下推自动机都接受一个形式语言。下推自动机存在确定与非确定两种形式,两者并不等价。﹙对有限状态自动机两者是等价的﹚被非确定下推自动机接受的语言是上下文无关语言。
2. 性状
3. 适用场景 主治 适应症
3.1. 所有场景()。
更复杂场景使用turing机
3.2. 语法解析 构建ast
3.3. 监视器模式
4. Bp 最佳实践 用法
5、处理事件输入,实现状态跳转逻辑。 双case
这里有两种写法,一种是在状态中判断事件:一种是事件中判断状态:
本人观点:一般业务场景来说,状态的数量是确定的切数目较少,不同状态下需要处理的事件也不一样。而触发的事件数量则比较多,采用上面第二种方式在事件中判断状态也有利于把里面一层的switch/case剥离出来当成单独的函数,做一些代码模块结构的优化,故推荐使用第二种方式,事件中判断状态。
5. 缺点 不良反应
5.1. 比起fsm强大了很多
5.2. 依然有写功能可能不好实现
6. 禁忌 不适应场合
7. 注意事项
这里需要注意的两个问题:
1、避免把某个“程序动作”当作是一种“状态”来处理。那么如何区分“动作”和“状态”?“动作”是不稳定的,即使没有条件的触发,“动作”一旦执行完毕就结束了;而“状态”是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。
2、状态划分时漏掉一些状态,导致跳转逻辑不完整。
所以维护上述一张状态表就非常必要,而且有意义了。从表中可以直观看出那些状态直接存在跳转路径,那些状态直接不存在。如果不存在,就把对应的单元格置灰。 每次写代码之前先把表格填写好,并且对置灰的部分重点review,看看是否有“漏态”,然后才是写代码。QA拿到这张表格之后,写测试用例也是手到擒来。
8. 相互作用与其他类库模式
8.1. 类似的有fsm turing机
9. 过量与滥用后果
10. 原理
11. 理解曲线动力学
11.1. 学习曲线,鉴于fsm状态机和,turing机之间
下推自动机比有限状态自动机复杂:除了有限状态组成部分外,还包括一个长度不受限制的栈;下推自动机的状态迁移不但要参考有限状态部分,也要参照栈当前的状态;状态迁移不但包括有限状态的变迁,还包括一个栈的出栈或入栈过程。
12. 储藏
13. 包装与api接口
14. 执行标准
15. 生产组织与个人 attilax
16. Ref