0

私のプログラミング割り当ての一部では、状態パターンを使用して文字列を解析する必要があります。状態パターンを使用することが明示的に要求されているため、他のオプションは許可されていません。

文字列の例: " update user filter userId=user3 set name=xxx ". (太字はキーワード)。

リクエストは次のようなものです。

クエリの解析中は、状態パターンを使用する必要があります。OPERATOR、OBJECT、FILTER、VALUES の 4 つの状態があります。

State Pattern の例を見て、わかったと思いますが、それを文字列解析に適用する方法を理解できませんでした。

どなたかヒントを頂ければ幸いです。

4

2 に答える 2

1

まず、状態インターフェースを作成します。おそらく1つの方法で:parse

4つの具体的な状態を作成します。文字列の一部のみを解析するようにそれぞれを実装します。コンテキストは、文字列を分割して状態を変更する責任があります。

コンテキストクラスでは、次のことを行います。

  • OperatorStateあなたはそれが常に最初のものであることを知っているので、init
  • あなたはそれにコンテキストの状態。次の文字列に到達するまで文字列を読みます
  • キーワード( "filter")読み取った文字列を現在の状態に移動します(オペレーター)
  • 現在の状態を次の状態に変更します(FilterState

等々...

状態パターンを理解していれば、これでソリューションを構築できます。

注:キーワードと状態を含む辞書を作成して自動化することもできますが、あなたの場合は単純な解決策で十分だと思います。

幸運を

于 2013-03-09T15:04:53.033 に答える
0

状態パターンの意味を誤解している可能性があるので、間違っている場合は無視してください。

文字列を探しているとしましょう"abac"

空の状態から始めて""、文字列の文字を繰り返します。を取得した'a'場合は、state "a"get a'b'に移動し、state に移動し"ab"、get'a'に移動し、state に戻り"a"、それ以外は空の状態に戻ります。

状態になっ"abac"たら、文字列が見つかりました。正規表現を見つけるのは単純な DFA です。

于 2012-04-20T16:55:34.023 に答える