問題タブ [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 - ステートマシンを使用するネットワークサーバー/クライアントの汎用アーキテクチャ

全て、

そこで、クライアントがサーバーと通信するために使用したい単純なプロトコルを作成することを発明しました。これは典型的な(私が思うに)三相レイアウトです:

  • 接続の確立(最終的には機能のネゴシエーションが含まれます)
  • 実際のデータ交換-パケットは楽しく行き来し、それに応じて動作するそれぞれの受信者によって解釈されます
  • 接続のティアダウン-一方の側は「これ以上したくない」と言い、もう一方の側は「そうなる」と言います(最終的には、会話を閉じるだけでなく、完了するまでもう一方の側がデータを送信できるようになります)

フレームワークは単純なセットアップです。サーバーは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++ステートマシンでのイベント条件の実装

組み込みC++アプリケーションインターフェイスに階層型FSMを使用しています。小さな関数を使用して、特定の州間イベントをトリガーできるかどうかを判断し、データベースに変更を加えるために使用したいと思います。ただし、州ごとに異なるイベント関数を使用して新しいクラスを作成することも困難です。コールバックとしてそれらへのポインタを設定するように。(ここでは300の関数について話しています。)

C ++がラムダ関数をサポートしている場合はそれらを使用しますが、プロジェクトアーキテクチャにあまり重点を置いていないため、ライブラリの高度な統合(ブーストなど)や組み込みを必要とするサードパーティのソリューションを使用することには消極的です。追加のプリプロセッサステップの。

何か案は?

0 投票する
2 に答える
308 参照

c# - wfで複数のイベントが発生するまで状態を遷移させることはできますか?

Visual Studio 2008 で C# と WF を使用してステート マシン ワークフローを開発しています。状態の 1 つで、ワークフローが次の状態に移行できるようになるまで、複数のイベントが発生するのを待つ必要があります。例として、全会一致の投票シナリオを考えてみましょう。これを行う方法が見つかりません。この問題の解決策または回避策はありますか?

0 投票する
3 に答える
801 参照

c++ - FSM サンプル コードをコンパイルできません

UML Tutorial: Finite State Machines by Robert C. Martinと呼ばれる優れたステート マシン チュートリアルがあります。しかし、提供されているサンプル コードをコンパイルできません。*FsmTest.cpp(46) : エラー C2664: 'SetState' : パラメーター 1 を 'class UnlockedState *' から 'class TurnstileState 'に変換できません

助けてください。ありがとう。

0 投票する
4 に答える
3484 参照

design-patterns - ステート マシンの実装

私はボードゲームを構築しようとしています...そして、ステートマシンを使用して実装する必要があるようです..

GoFのState パターンについては知っていますが、ステート マシンを実装する方法は他にもあるはずです。お知らせください..異なる実装 (それぞれのトレードオフ) に関する詳細を含む記事や本を知っている場合は、私に指示してください.. ありがとう

0 投票する
2 に答える
3330 参照

regex - DFA -> 正規表現

DFA を紙に書いたので、それを一連の正規表現に変換したいと考えています。これを行うための良いツールを知っている人はいますか?

0 投票する
2 に答える
3004 参照

c# - インターフェイスC#でイベントを呼び出す方法は?

だから私はデザインの問題を抱えています。デリゲートとイベントを持つマウス クラスがあります。つまり、MouseButtonPressed、MouseMoved です。など、状態エンジンによって呼び出されます。

私がしたいのは、IClickable や IDraggable などのインターフェイスを作成し、マウス イベントが呼び出されたときに呼び出されるインターフェイス内にイベントを設定することです。

次に、MouseDevice クラスにある

したがって、基本的には、buttonClicked が呼び出されたときに Clicked を呼び出したいと考えています。

これを行う方法はありますか?

0 投票する
5 に答える
1209 参照

state-machine - 有限状態マシンを作成しなければならなかったことがありますか?

これには、大学で行った可能性のある有限状態マシンは含まれません。

誰がなぜそれを作成しなければならなかったのか知りたいのですが?

マシンを作成する上で最も困難だったのはどのような点ですか?