본문 바로가기

Design Patterns/영문 위키(Wikipedia)

Interpreter pattern

먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다.

영어 실력이 부족한 관계로 오역이 있을 수도 있습니다.

원문 주소 : 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