Interpreter patternとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Interpreter patternの意味・解説 

Interpreter パターン

(Interpreter pattern から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/11/19 18:16 UTC 版)

Interpreter パターンは、コンピュータプログラミングにおけるデザインパターンの一つである。Interpreter パターンの基本的な考えは、定義された種類の問題を素早く解くために、Compositパターンを使って ドメイン固有言語を実装することである。特化言語は汎用の言語よりも数倍から数百倍高速に問題を解ける場合が多い。

Interpreter パターンの使用例

  • データベースに特化した問い合わせ言語(SQLなど)
  • 通信プロトコルを記述するために良く用いられる特化したコンピュータ言語
  • 特化言語を導入した汎用のコンピュータ言語

Java

以下の Java の例は、汎用のプログラミング言語がより特化した言語を解釈する例を、ここでは 逆ポーランド記法 を用いて示す。

入力:

'42 4 2 - +' equals 44

パーサー:

import java.util.*;
 
interface Expression {
    public void interpret(Stack<Integer> s);
}
 
class TerminalExpression_Number implements Expression {
    private int number;
    public TerminalExpression_Number(int number)       { this.number = number; }
    public void interpret(Stack<Integer> s)  { s.push(number); }
}
 
class TerminalExpression_Plus implements Expression {
    public void interpret(Stack<Integer> s)  { s.push( s.pop() + s.pop() ); }
}
 
class TerminalExpression_Minus implements Expression {
    public void interpret(Stack<Integer> s)  { s.push( - s.pop() + s.pop() ); }
}
  
class Parser {
    private ArrayList<Expression> parseTree = new ArrayList<Expression>(); // only one NonTerminal Expression here
 
    public Parser(String s) {
        for (String token : s.split(" ")) {
            if      (token.equals("+")) parseTree.add( new TerminalExpression_Plus() );
            else if (token.equals("-")) parseTree.add( new TerminalExpression_Minus() );
            // ...
            else                        parseTree.add( new TerminalExpression_Number(Integer.valueOf(token)) );
        }
    }
 
    public int evaluate() {
        Stack<Integer> context = new Stack<Integer>(); 
        for (Expression e : parseTree) e.interpret(context);
        return context.pop();
    }
}
 
class InterpreterExample {
    public static void main(String[] args) {
        // ここで上述の式を評価している 
        String expression = "42 4 2 - +";
        Parser p = new Parser(expression);
        System.out.println("'" + expression +"' equals " + p.evaluate());
    }
}

関連項目




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Interpreter pattern」の関連用語

Interpreter patternのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Interpreter patternのページの著作権

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのInterpreter パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS