【インタープリターパターン】
Interpreterパターン とは?
最終更新:
💡 式のルールをクラスにして、組み合わせた式を評価する
文法のルールをクラスで表現し、その組み合わせで作った式を解釈・評価するデザインパターン。小さな計算式や条件式の評価器などを設計するときに使える。
📌 このページのポイント
計算式を読み取って実行する仕組みを作りたいな。
その設計に使えるのがInterpreterパターンだよ。「数値」「足し算」「掛け算」などを式のクラスとして表し、組み合わせた式を評価するんだ。
文法をクラスで表現するって、どういうこと?
図の「3 + 5 × 2」はどうなるの?
足し算の左の子を3、右の子を「5 × 2」の掛け算にするよ。掛け算が5と2を評価して10を返し、足し算が3と10を足して13を返すんだ。木の形が演算のまとまりを表しているね。
文字列を渡せば、自動でその木になるの?
文字を読み、文法や優先順位に従って木を作る解析処理は別に必要だよ。Interpreterパターンだけで、あらゆる入力の解析方法まで自動的に決まるわけではないんだ。
複雑な言語にも向いている?
小さな文法なら式クラスを追いやすいけれど、ルールが増えると管理が難しくなるよ。ANTLRのように文法からパーサーを生成する道具も選択肢になる。ただし、解析結果をどう評価・実行するかは別途設計が必要だね。
まとめ:ざっくりこれだけ覚えればOK!
「Interpreterパターン」って出てきたら「文法をクラスで表して文を解釈する設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Interpreter Pattern」 = 解釈者パターン
💬 Interpreterは「通訳者・解釈者」という意味で、異なる言語を翻訳する通訳士のように、プログラムが文を読んで意味を解釈するイメージだよ