【发布时间】:2019-02-22 21:48:43
【问题描述】:
我正在尝试为我的 iOS 项目构建 DSL。
为此,我计划以State Machine 的形式构建Semantic Model。 (术语来自 Fowler 关于 DSL 的书)。
主要思想:State Machine被编码为states和transitions之间的集合,然后可以编写一些单元测试来检查some_state1上的some_action是否将系统引导到some_state2。
问题是我的应用程序有很多后台线程,因此在给定时刻状态机中可以有多个状态处于活动状态。
我读过这样的状态机是Nondeterministic finite automaton,浏览过 wiki 页面,但这对我来说看起来太理论化了。
这是一个示例状态机:
s8只有在收到t7和t8时才能被激活,这意味着它应该“等待”。
问题:
1.状态机中有"wait"之类的东西吗?
2.也许,这不是NFA,而是两个状态机?我应该关心如何命名这种语义模型吗?
3、s8是否可以用一些后台线程来实现,它接受来自s4和s7的通知,并且只有当它们都发送通知时才被激活(这意味着当达到超时时单元测试失败,然后应该在模型的某处提到超时)?
【问题讨论】:
标签: dsl state-machine finite-automata non-deterministic