인터프리터 패턴이란?

문법 규칙을 클래스화 한 구조로써, 일련의 규칙으로 정의된 언어를 해석하는 패턴

인터프리터 언어의 인터프리터와 같은 의미로 쓰임

구조

structure.png

  • Context
    인터프리터가 구문해석을 실행하기 위한 정보를 제공. 문맥에 대한 정보를 모두 가지고 있음.
  • AbstactExpression
    공통 인터페이스 정의
  • TerminalExpression
    해당 표현 이후에 그 이상 전개 되지 않는 표현.
    코드상에서 해당 표현 이후에는 더 이상 다른 Expression 객체를 호출하지 않음.
  • NonterminalExpression
    이미 전개된 표현

장점

  • 각 문법 규칙을 클래스로 표현하여 언어를 쉽게 구현 가능
  • 언어의 변경이나 확장이 쉬운편
  • Visitor 패턴을 활용, 기존 Expression 구조의 변경 없이 새로운 종류의 해석을 정의할 수 있음

단점

  • 문법 규칙의 갯수가 많아지면 시스템의 복잡도가 올라간다.

참고