问题标签 [fsm]

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 投票
10 回答
44566 浏览

code-generation - 图形有限状态机编辑器

我正在寻找一个复杂的图形 FSM 编辑器,它可以以有据可查的输出格式(如 SCXML 或类似格式)导出模型。

有人可以推荐我一个工具吗?

0 投票
6 回答
5529 浏览

scala - 有限状态机和 FSM 间信令

对具有本机语言的建议(因此没有 FSM 生成工具)支持状态机开发和执行以及消息/信号的传递。这适用于电信,例如这种复杂程度的 FSM 的实施。

我考虑过 Erlang,但希望得到一些反馈、建议、教程指针、替代方案,尤其是基于 Java 的框架。也许是斯卡拉?

仅开源。我不是在寻找 UML 或正则表达式相关的解决方案。

由于这是为了实现电信协议,FSM 可能并不重要。许多状态,许多转换,基于信号,输入约束/保护。动态实例化将是一个加号。switch 语句是不可能的,它很快就会嵌套到不可用的状态。if/else 稍微好一点。

我宁愿依赖图形设计;FSM 描述的格式应该是人类可读/可编辑/可管理的。

--

我决定专注于基于 Actor 的 C++ 解决方案

例如,Theron 框架提供了一个起点http://theron.ashtonmason.net/并且为了避免在基于 FSM 的事件处理程序中使用 switch 语句,这个 C++ FSM 模板框架看起来很有用http://satsky.spb.ru/articles/ fsm/fsmEng.php

0 投票
2 回答
1795 浏览

fsm - 如何构建以二进制显示模数 4 的有限状态机

有人可以告诉我如何构建一个以二进制显示模数 4 的有限状态机吗?

0 投票
4 回答
713 浏览

python - Python 在 int() 调用上优雅失败?

我必须在课堂上制作一个基本的 FSM,并用 Python 编写它。作业要求我们从文本文件中读取机器的转换。例如,一个具有 3 个状态的 FSM,每个状态都有 2 个可能的转换,可能的输入“a”和“b”,会有一个如下所示的文本文件:

我试图想出一种更 Pythonic 的方式来一次读取一行并将状态转换为整数,同时将输入 vals 保留为字符串。基本上是这样的想法:

当然,当它尝试 int("a") 时,它会抛出一个 ValueError。我知道我可以使用传统的循环并捕获 ValueError 但我希望有一种更 Pythonic 的方式来执行此操作。

0 投票
2 回答
2485 浏览

python - 如何在 tkinter 中用箭头连接两个状态圈?

我目前正在用 tkinter 编写一个 fsm 编辑器。但是,我坚持连接两个状态。我有两个问题:

1)如何使过渡箭头根据鼠标移动变得可增长?

2)如何将箭头的起点粘贴在一个状态上,将箭头的终点粘贴在另一个状态上?

PS。您认为 tkinter 的文档是否足够好?

0 投票
2 回答
284 浏览

c++ - 需要 C++ 模板方面的帮助

我相当确定这是一个模板问题,因为我似乎无法以任何其他方式解决它 - 但也欢迎非模板解决方案。

有限状态机有许多程序状态,每个状态都可以对许多事件做出反应。

所以,我想为 Event、State 和 FSM 定义类。FSM 有一个状态集合(可能是向量,如果 STL 在嵌入式系统中出现问题,可能是链表),而 State 有一个事件集合。

每个状态和事件都有一个唯一的 Id 和一个用于调试 porpoise 的名称字符串。

尴尬的是,我不希望 Id 是整数,而是枚举的元素。每个 FSM 的状态和事件都有不同的枚举。

如何最好地编码?你能举两个简单的 FSM 的例子,或者一个有两个状态的 FSm,每个状态有两个事件吗?

例如,如果我有

我希望能够声明一个接受构造函数参数的事件类

请注意,我不想只重载构造函数,因为这是限制性的——如果添加了新的事件枚举怎么办?

与状态类似,然后让我的 FSM 每个都有一个状态列表。

或者我只是一个人,坚持使用 eventId 的枚举,而传递一个 int 会简单得多

谢谢。


顺便说一句,我宁愿避免使用 Boost,因为它本身不确定它在嵌入式系统中的工作情况。我更喜欢内部开发,以便完全控制。

0 投票
12 回答
52486 浏览

python - Python 状态机设计

这个 Stack Overflow 问题(C 状态机设计)相关,Stack Overflow 的人能否与我(和社区)分享您的 Python 状态机设计技术?

目前,我正在寻找基于以下内容的引擎:

但我确信在利用 Python 的动态特性(例如动态调度)的同时,有很多方法可以解决这个问题。

我追求的是“引擎”的设计技术,它接收“事件”和“调度”,而不是基于机器“状态”的那些。

0 投票
1 回答
571 浏览

conditional-statements - 如何设计这个特定的有限状态机?

我试图弄清楚如何设计以下系统,我认为可以将其定义为有限状态机:

假设我们有一堆 16 个积木(塔楼、墙壁、大门)一起形成了一座城堡。玩家可以将积木拖到平面图上的 16 个位置,如果操作正确,他们将看到整个城堡。所有的塔(有四个)都是相等的,所以它们可以在四个角落中的任何一个上。一些墙壁也是如此。

总而言之,平面图上有 16 个点,您可以在其中放置一个积木,每个点可以有 17 个“状态”:空 + 16 个积木中的任何一个。做一些数学运算会导致 17^16=很多组合。

该程序从一个空的平面图和一堆积木开始。然后它应该显示一条消息,例如“建造你自己的城堡,从塔开始”。当用户正确放置一个塔时,它应该说“做得好,现在建造所有四个塔”。你明白了。

问题是:玩家可以做的事情太多了。在错误的地方放置一个块,移除一个块,正确地在平面图上放置墙壁或塔,忽略给他们的方向,等等。

如果我可以避免使用数千个 if-then 语句来决定我应该采取下一步、显示错误消息还是根据玩家正在做的事情返回上一步,那就太棒了。

您如何描述构建序列的每个步骤的 NEXT、PREVIOUS 和 ERROR 条件?有什么设计方法吗?非常感谢您的意见。

0 投票
6 回答
54538 浏览

computer-science - 为什么是 {a^nb^n | n >= 0} 不规则?

在我正在学习的 CS 课程中,有一个不规则语言的示例:

我可以理解这是不规则的,因为由于缺少内存组件,因此无法编写有限状态自动机/机器来验证和接受此输入。(如果我错了请纠正我)

正则语言上的维基百科条目也列出了这个例子,但没有提供(数学)证明它为什么不是正则的。

任何人都可以启发我并为此提供证据,或者给我一个很好的资源吗?

0 投票
3 回答
832 浏览

c++ - 调试有限状态机拼写检查代码

我需要有人调试我在下面编写的 c++ 代码行,以便它可以运行。它旨在使用状态到状态转换来拼写检查单词“and”。