[디자인 패턴] 인터프리터 패턴
인터프리터 패턴(Interpreter Pattern)
인터프리터 패턴은 문법 규칙이 있는 어떤 언어를 해석하는 해석기를 만들 때 사용하는 행동 패턴이에요. 대표적으로 SQL Parser, 정규식 엔진, 구문 해석기(Typescript 같은 언어 해석) 같은 것들이 있어요.
인터프리터 패턴 구조
인터프리터 패턴은 크게 4가지 요소로 구성돼요. Abstract Expression , Terminal Expression, Nonterminal Expression, Context로 이루어져요.
모든 표현식이 따라야할 interpret 메서드를 정의해요. 문법 구조의 최소 인터페이스 역할을 해요.
문법에서 가장 기본 단위(토큰)을 해석하는 클래스에요. 숫자, 단어 같은 단일 토큰을 해석해요. Interpreter 패턴의 대부분이 이 Terminal Expression으로 구성돼요.
보통 문법 규칙을 조합하는 표현식 이에요. (+, -, *, %) 여러 Expression을 조합해서 더 큰 의미를 구성해요. 재귀적으로 하위 Expression을 interpret 호출해서 의미를 계산해요.
해석 과정에 필요한 데이터를 담고 있어요. 변수의 값, 환경 설정, 캐시 등을 저장해서 필요하면 Expression에 제공해요.
예시들
이번에는 코드 예시를 직접 가져오지는 않을게요. 왜냐하면 개념적인 이해가 더 중요하다고 생각하기 때문이에요. 이건 프로그래머로서 가장 기초적이고 중요한 개념이라고 생각해요. 모든 언어가 거의 같은 과정으로 CPU에서 실행 가능하도록 기계어로 혹은 인터프리터를 통한 실행을 위한 바이트 코드로 번역할 수 ...