Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分 1 2. 性状 1 3. 适用场景 主治 适应症 1 3.1. 所有场景()。 1 3.2. 语法解析 构建ast 2 3.

Atitit 下推自动机﹙PDA说明书

 

目录

1. 概念组成与原理成分 1

2. 性状 1

3. 适用场景 主治 适应症 1

3.1. 所有场景()。 1

3.2. 语法解析 构建ast 2

3.3. 监视器模式 2

4. Bp 最佳实践 用法 2

5. 缺点 不良反应 2

5.1. 比起fsm强大了很多 2

5.2. 依然有写功能可能不好实现 2

6. 禁忌 不适应场合 2

7. 注意事项 2

8. 相互作用与其他类库模式 3

8.1. 类似的有fsm  turing 3

9. 过量与滥用后果 3

10. 原理 3

11. 理解曲线动力学 3

11.1. 学习曲线,鉴于fsm状态机和,turing机之间  3

12. 储藏 3

13. 包装与api接口 3

14. 执行标准 3

15. 生产组织与个人  attilax 3

16. Ref 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

 

猜你喜欢

转载自blog.csdn.net/attilax/article/details/80709100