问题标签 [state-machine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
18 回答
29824 浏览

state-machine - 用于状态机

我会在哪些编程领域使用状态机?为什么 ?我怎么能实现一个?

编辑:请提供一个实际的例子,如果它不是太多的要求。

0 投票
1 回答
2458 浏览

networking - 使用状态机的网络服务器/客户端的通用架构

全部,

所以,我发明了一个简单的协议,我想用它来让客户端与服务器交谈。这是典型的(我认为)三相布局:

  • 连接建立(最终将包括能力协商)
  • 实际数据交换 - 数据包愉快地来回传输',由相应的接收器解释,并相应地作用于它们
  • Connection Teardown - 一方说“不想再”,另一方说“就这样吧”(最终将允许另一方发送一些数据直到完成,而不是简单地关闭对话)

该框架是一个简单的设置:服务器执行 java.net.ServerSocket.accept() 并启动一个线程来处理客户端的传入连接,该客户端创建一个 java.net.Socket() 到服务器所在的主机/端口在等待。双方使用 java.io.InputStream 和 java.io.OutputStream 并互相喷出数据,组装传出和解析传入的消息。很好,到目前为止。

到目前为止,该协议是硬编码的。连接建立和拆除几乎没问题,而数据交换部分——我想是全双工的——几乎是一团糟。

所以,我想,让我们做一个好方法,并使用同名的设计模式来设置状态机。我非常清楚服务器和客户端的状态分别应该是什么,发生转换应该发生什么样的事件,以及发生转换时应该采取什么行动。这看起来不错——在纸面上,就是这样。在实践中,我遇到了几个我无法在纸上解决的问题。

特别是,状态机的输入......有点多样化。我怎么可能同时写入数据、读取数据和检查连接(它可能已关闭或已断开)?此外,第 1 和第 3 阶段应该设置计时器,以避免潜在的无限等待答案的时间。

因此,我将不胜感激任何可以弥合理论状态机和代码状态机之间差距的帮助。

顺便说一句,我也可以阅读 C/C++/C# - 无需翻译成 Java(这是我正在使用的)。

0 投票
4 回答
1361 浏览

state-machine - 如何构建 LR 状态机解析器?

我想尝试创建一个 LR 解析器生成器。有谁知道描述如何从语法创建状态机表的好(免费)资源?

0 投票
3 回答
2056 浏览

c++ - 在 C++ 状态机中实现事件条件

我将分层 FSM 用于嵌入式 C++ 应用程序接口。我想使用小函数来确定是否可以触发某些状态间事件,以及使用它们来影响数据库中的更改:但是,为每个状态创建一个具有不同事件函数的新类也令人生畏将指向它们的指针设置为回调。(我们在这里谈论 300 个函数。)

如果 C++ 支持 lambda 函数,我会使用它们,但我对项目架构没有太大的权重,所以我不愿意使用需要大量库集成(如 boost)或包含的第三方解决方案额外的预处理器步骤。

有任何想法吗?

0 投票
2 回答
308 浏览

c# - 是否可以在状态之间转换,直到 wf 中发生多个事件?

我正在 Visual Studio 2008 中使用 C# 和 WF 开发状态机工作流。在我的一个状态中,我需要等待多个事件发生,直到工作流可以转换到下一个状态。举个例子,考虑一个一致投票的场景。我找不到办法做到这一点。有没有人有这个问题的解决方案或解决方法?

0 投票
3 回答
801 浏览

c++ - 无法编译 FSM 示例代码

有一个很好的状态机教程,名为UML 教程: Robert C. Martin 的有限状态机。但我无法编译它提供的示例代码。我得到 *FsmTest.cpp(46) : error C2664: 'SetState' : cannot convert parameter 1 from 'class UnlockedState *' to 'class TurnstileState '

请帮忙。谢谢。

0 投票
4 回答
3484 浏览

design-patterns - 状态机实现

我正在尝试构建一个棋盘游戏......看起来它必须使用状态机来实现......

我知道 GoF 的状态模式,但我确信必须有其他方法来实现状态机。请让我知道..如果您知道任何包含有关不同实现细节的文章或书籍(权衡每个实现),请指导我..谢谢

0 投票
2 回答
3330 浏览

regex - DFA -> 正则表达式

我在纸上写了一个 DFA,想把它翻译成一组正则表达式。有人知道这样做的好工具吗?

0 投票
2 回答
3004 浏览

c# - 如何在接口 C# 中调用事件?

所以我有一个设计问题。我有一个具有代表和事件的鼠标类。即MouseButtonPressed、MouseMoved。并且被状态引擎调用。

我想要发生的是创建一个像 IClickable 或 IDraggable 或 somthing 这样的接口,并在这些接口内有事件,当鼠标事件被调用时会被调用。

然后在 MouseDevice 类中它有

所以基本上我希望在调用 buttonClicked 时调用 Clicked。

有没有办法做到这一点?

0 投票
5 回答
1209 浏览

state-machine - 您是否曾经必须创建有限状态机?

这不包括你可能在大学里做过的有限状态机。

我想知道谁必须创建一个,为什么?

制造这台机器最困难的方面是什么?