【发布时间】:2009-12-15 23:07:47
【问题描述】:
最近,作为我日常工作的一部分,我一直在学习 IBM Rhapsody 并使用它从 UML 生成 C++ 代码。
昨天让我感到震惊的是,考虑为我的 C++ 编译器添加状态机支持可能很酷,所以我在这里记下了一些笔记:http://ellcc.org/wiki/index.php/State_machines_and_Active_Classes
我这样做的动机是:
- 这似乎是一个很酷的主意。
- 与当前的 Rhapsody/普通 C++ 编译器相比,该编译器可以进行更好的语义检查(具有更好的错误检查)。
- 当编译器本身理解状态机结构时,有许多优化的可能性。
我可能会尝试将我的语法扩展到除提案之类的内容之外,看看它的效果如何。
您对该提案有何看法?它看起来可读吗?看起来值得吗?
编辑:
感谢您推荐特定库来执行状态机的答案,但这不是我的问题。我使用自己编写的库和代码实现了许多状态机。
我真的在寻找关于将状态机扩展设计为类 C++ 语言的想法、批评等,而不是这种更改是否适合添加到标准 C++ 中。将其视为特定领域的扩展,我的领域是实时控制应用程序。
我已经开始在我的编译器中实现扩展,如下所述:http://ellcc.org/wiki/index.php/State%5Fmachines%5Fand%5FActive%5FClasses
到目前为止,从提案到实施,这个概念没有太大变化,但在细节上发生了一些变化,我正在完善我对问题语义的理解。
然而,时间会证明整个概念是否有价值。 ;-)
【问题讨论】:
-
我可能应该将这篇文章命名为“向类 C++ 语言添加状态机支持的提议”。
-
你可以看看 Qt 状态机框架。
-
我不太确定如何阅读。您对以下答案的一些 cmets 似乎表明您最终希望将此作为提案提交给 C++ 标准化委员会。但是在这个问题中,您说您对它是否是标准 C++ 的适当补充不感兴趣。让我有点难以弄清楚你想要什么样的反馈。
-
@jalf:我这样做是作为语言设计的实验。它可能会也可能不会有用。我正在修改我自己的编译器来实现它。从目前的反应来看,我不太可能将它作为 C++ 扩展提出。 ;-)
标签: c++ compiler-construction uml language-design state-machine