Design Pattern for Smalltalk – interpreter

t_Dpsc_chapter05_Interpreter_01

interpreter 패턴은 작은 규모의 language에 대한 규칙이 있고, 그 규칙으로 만들어진 구문을 해석하는 해석기를 만드는 경우에 사용되는 패턴이다.

일반적으로 잘 쓰일일은 없는 패턴인데다가 해석의 속도에 대한 효율성을 생각한다면 현실적으로 사용하기에는 권하기 힘든 패턴이기도 하다. 하지만 규칙이 복잡하지 않은 경우 (♣Configuration♣ 파일 형식이나 프로그램의 내장 script 언어 등) 라면 충분히 사용 가능하며, 그 구조상 문법규칙이 확장이 필요한 경우에도 많은 수고를 들이지 않고 필요한 만큼 해석기의 변경도 가능하다.

새로운 문법규칙을 만들려 하는경우, 제대로 된 파서를 처음부터 만든다면 문법규칙이 완성되기도 전에 파서를 수시로 수정해야 하는 상황이 될 것이다. 이 경우 Interpreter 패턴을 사용해서 테스트 단계용 파서를 만든다면, 문법규칙을 일정 수준으로 완성할 때 까지 문법과 파서를 병행해서 관리하는 개발방법을 진행할 수 있다.

Interpreter 패턴에서는 상위클래스인 추상클래스에서 메서드의 인터페이스를 정의하고 하위클래스에서 해석에 사용할 토큰을 각각 별도로 정의하고 해석을 진행한다. 토큰의 요소들은 하위클래스 내부에서 배열 (또는 딕셔너리 또는 Collection) 로 관리되기도 한다.

Interpreter 패턴의 목적은 규칙을 가진 문자열의 해석을 위한 해석기를 구성하는 구조 자체라는것을 잊지 않는다면 패턴의 무분별한 확장을 막는데에 도움이 될 것이다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.