먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다.
영어 실력이 부족한 관계로 오역이 있을 수도 있습니다.
원문 주소 : http://en.wikipedia.org/wiki/Interpreter_pattern
Behavioral pattern - Interpreter pattern
컴퓨터 프로그래밍(computer programming)에서 interpreter pattern은 어떤 언어에서 어떻게 문장들을 평가할지를 결정하는 디자인 패턴(design pattern)이다. 기본 개념은 특화면 컴퓨터 언어(specialized computer language)에서 각 심볼(terminal 또는 nonterminal)에 대한 클래스(class)를 가지는 것이다. 언어의 어떤 문장에 대한 문맥 트리(syntax tree)는 composite 패턴의 인스턴스이며, 그 문장을 평가(해석)하기 위해 사용된다.
인터프리터 패턴의 사용 Uses for the Interpreter pattern
- SQL같은 특화된(specialized) 데이터베이스 쿼리 언어들
- 주로 통신 프로토콜(communication protocols)을 설명하기 위해 사용되는 특화된 컴퓨터 언어들
- 대부분의 다목적(general-purpose) 컴퓨터 언어들은 실제로 몇몇 특화된 언어들을 포함한다.
구조 Structure
예 Example
아래의 Reverse Polish notation 예는 interpreter 패턴을 묘사하고 있다.
expression ::= plus | minus | variable | number plus ::= expression expression '+' minus ::= expression expression '-' variable ::= 'a' | 'b' | 'c' | ... | 'z' digit = '0' | '1' | ... '9' number ::= digit | digit number
위의 문법은 아래의 reverse Polish 표현법을 포함하는 언어를 정의한다.
a b + a b c + - a b + c a - -
아래의 interpreter 패턴은 각 문법 법칙에 대한 클래스이다.
interpreter 패턴은 parsing에 대해 언급하지 않지만 완벽함을 위해서 파서(parser)를 제공한다.
마지막으로 w = 5, x = 10, z = 42 일 때 "w x z - +"라는 표현식을 평가한다.
'Design Patterns > 영문 위키(Wikipedia)' 카테고리의 다른 글
Mediator pattern (0) | 2012.06.19 |
---|---|
Iterator pattern (0) | 2012.06.18 |
Command Pattern (0) | 2012.06.15 |
Chain-of-responsibility pattern (0) | 2012.06.08 |
Proxy pattern (프록시 패턴) (0) | 2012.06.06 |