Interpreterパターン

Interpreter パターン - Wikipedia

構文解析に使用する。普段ではあまり使わないパターンかな。

Contextクラス

解析対象をトークンに分割する。

  • 解析文字列をメンバに持つ。
  • 非トークン文字列リストをメンバに持つ。
  • 現在のトークンを取得する操作を持つ。(解析文字列をいずれかの非トークン文字列が現れるまで読んでいく)
Nodeクラス

構文要素を表すクラス。解析結果とNodeクラス構造は等しくなる。
ノード基本クラスと各種ノードクラスがいる。

  • 最下ノードクラスは値をメンバに持つ。
  • 構文的に子供が発生する場合は、メンバにノードクラスを持つ。
  • ノードクラス群は自分の子供としてどのノードがくるかを知っている。
  • Contextから自分の担当するトークンパターンを読み込んで、データの取得などを行ったら、残りは下位ノードにContextを渡して処理をやってもらう。