最近、本業の一環として、IBM Rhapsody を学習し、それを使用して UML から C++ でコードを生成しています。
昨日、自分の C++ コンパイラにステート マシンのサポートを追加することを考えるのはクールかもしれないと思い、ここにいくつかメモを書き留めました。
これを行う私の動機は次のとおりです。
- クールなアイデアのようです。
- コンパイラーは、現在の Rhapsody/通常の C++ コンパイラーよりもはるかに優れたセマンティック チェック (より優れたエラー チェックを含む) を実行できます。
- コンパイラ自体がステート マシンの構造を理解している場合、多くの最適化の可能性があります。
提案のようなものを除いて、それがどれほどうまく機能するかを確認するために、文法を拡張しようとするかもしれません.
その提案についてどう思いますか。読みやすそうですか?価値があるように見えますか?
編集:
ステート マシンを実行するために特定のライブラリを推奨する回答に感謝しますが、それは私の質問ではありませんでした。私は、ライブラリと私が書いたコードの両方を使用して、多くのステート マシンを実装してきました。
この変更が標準 C++ への追加に適しているかどうかではなく、C++ ライクな言語へのステート マシン拡張の設計に関するアイデアや批判などを本当に探していました。私のドメインがリアルタイム制御アプリケーションであるドメイン固有の拡張機能と考えてください。
ここで説明されているように、コンパイラで拡張機能の実装を開始しました: http://ellcc.org/wiki/index.php/State%5Fmachines%5Fand%5FActive%5FClasses
これまでのところ、提案から実装に至るまでコンセプトを大きく変更する必要はありませんでしたが、詳細にいくつかの変更があり、問題のセマンティクスの理解を深めています。
ただし、コンセプト全体に価値があるかどうかは、時が経てばわかります。;-)