【インタープリターパターン】
Interpreterパターン とは?
💡 文法ルールをクラスで表して、文章を自動で読み解く通訳機
📌 このページのポイント
- 文法の各ルールを個別のクラス(Expression)として表現する
- 抽象構文木(AST)を組み立てて文を解釈・評価する
- シンプルな文法向き。複雑な言語解析にはパーサジェネレータを使うほうが現実的
プログラムが他の言語や式を読んで実行するって、どうやって作るの?
そこで使えるのがInterpreterパターンだよ。文法のルールをクラスとして表現して、入力された文字列を解釈して実行する仕組みを作れるんだ。
文法をクラスで表現って、どういうこと?
例えば「数値」「足し算」「掛け算」をそれぞれクラスで作るんだよ。「3 + 5」を解析するとき、「3」と「5」をNumberクラス、「+」をAddクラスで表してツリー構造に組み立てる。それを評価(interpret)すると結果の8が得られるよ。
正規表現もこれで作れそうだね!
まさに!正規表現エンジンやSQLパーサ、シェルスクリプトの解析なんかがInterpreterパターンの代表例だよ。Compositeパターンと組み合わせてツリー構造を作るのが定番だね。
ツリー構造?
「3 + 5 * 2」のような式を解釈するとき、掛け算を先に計算するために木のような入れ子構造(抽象構文木)を作るんだよ。葉ノードが数値、枝ノードが演算子になる形だね。
小さな言語を自作したいときにも使えそうだね!
そう!ゲームのスクリプト言語やビジネスルールエンジンにも活用されるよ。ただし文法が複雑になると管理しにくくなるから、そのときはANTLRなどのパーサジェネレータを使うほうがいいね。
まとめ:ざっくりこれだけ覚えればOK!
「Interpreterパターン」って出てきたら「文法をクラスで表して文を解釈する設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Interpreter Pattern」 = 解釈者パターン
💬 Interpreterは「通訳者・解釈者」という意味で、異なる言語を翻訳する通訳士のように、プログラムが文を読んで意味を解釈するイメージだよ