인터프리터 패턴

소프트웨어 디자인 패턴

컴퓨터 프로그래밍에서 인터프리터 패턴(interpreter pattern)은 한 언어에서 문들을 평가하는 방법을 규정하는 디자인 패턴이다. 기본 개념은 특화된 컴퓨터 언어에서 각 기호(종단 또는 비종단)마다 클래스를 갖는 것이다. 언어 내 한 문의 구문 트리컴포지트 패턴의 인스턴스이며 클라이언트의 문을 평가(해석)하기 위해 사용된다.[1]:243 컴포지트 패턴을 참고할 것.

구조 편집

UML 클래스와 객체 도표 편집

 
인터프리터 디자인 패턴을 위한 샘플 UML 클래스와 객체 도표.[2]

UML 클래스 도표 편집

 

편집

C# 편집

namespace DesignPatterns.Interpreter
{
    // "Context"
    class Context
    {
    }

    // "AbstractExpression"
    abstract class AbstractExpression
    {
        public abstract void Interpret(Context context);
    }

    // "TerminalExpression"
    class TerminalExpression : AbstractExpression
    {
        public override void Interpret(Context context)
        {
            Console.WriteLine("Called Terminal.Interpret()");
        }
    }

    // "NonterminalExpression"
    class NonterminalExpression : AbstractExpression
    {
        public override void Interpret(Context context)
        {
            Console.WriteLine("Called Nonterminal.Interpret()");
        }
    }

    class MainApp
    {
        static void Main()
        {
            var context = new Context();

            // Usually a tree
            var list = new List<AbstractExpression>();

            // Populate 'abstract syntax tree'
            list.Add(new TerminalExpression());
            list.Add(new NonterminalExpression());
            list.Add(new TerminalExpression());
            list.Add(new TerminalExpression());

            // Interpret
            foreach (AbstractExpression exp in list)
            {
                exp.Interpret(context);
            }
        }
    }
}

각주 편집

  1. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). 《Design Patterns: Elements of Reusable Object-Oriented Software》. Addison-Wesley. ISBN 0-201-63361-2. 
  2. “The Interpreter design pattern - Structure and Collaboration”. 《w3sDesign.com》. 2017년 8월 12일에 확인함. 

외부 링크 편집