인터프리터 패턴
보이기
컴퓨터 프로그래밍에서 인터프리터 패턴(interpreter pattern)은 한 언어에서 문들을 평가하는 방법을 규정하는 디자인 패턴이다. 기본 개념은 특화된 컴퓨터 언어에서 각 기호(종단 또는 비종단)마다 클래스를 갖는 것이다. 언어 내 한 문의 구문 트리는 컴포지트 패턴의 인스턴스이며 클라이언트의 문을 평가(해석)하기 위해 사용된다.[1]:243 컴포지트 패턴을 참고할 것.
구조
[편집]UML 클래스와 객체 도표
[편집]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);
}
}
}
}
같이 보기
[편집]각주
[편집]- ↑ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). 《Design Patterns: Elements of Reusable Object-Oriented Software》. Addison-Wesley. ISBN 0-201-63361-2.
- ↑ “The Interpreter design pattern - Structure and Collaboration”. 《w3sDesign.com》. 2017년 8월 12일에 확인함.