반응형

 

 

 
 

 

 

 

문법에 대한 패턴, 간단한 연산 등 간단한 스크립트 같은거나 간단한 정규식 그리고 비교적 작은 형태일때

 

속도가 안중요할때 쓰임

 

처리 영역을 나누지 않고 한번에 처리할때

 

 

복잡한 경우에는 다루기 힘들다

 

 

interpreter 패턴은 파싱을 하지 않고 바로 객구조를 만들어 사용

 

interpreter 패턴에 멤버  함수를 정의하는 것이 번거로운 경우 vistor 패턴을 각 연산마다 적용하여

 

추상노드를 순회하도록함으로써 interpreter 패턴의 수행역할을 동일하게 할 수 있다

 

 

 

장점 : 문법에서 클래스 구조를 만들어 내고 만들어진 클래스 구조를 보고 다시 문법을 봐 성립하면 이것이 맞는 구조라 할 수 있음

 

 

 

 XML DTD 문법이 맞는지 체크하라

 

즉 간단한 문법이 있는데 이것을 프로그램으로 읽어 들였을때 맞는 것인지 확인

 

<!Element purchaseOrder (shipTo,BilTo,Item) >

<!Element shipTo (Name,Street,city,state,country,zip) >

<!Element BilTo (Name,Street,city,state,country,zip) >

<!Element Item (ProductNo,quentity, price, ItemName,orderDate) >

<!Element Name (#PCdate) >

 

 

위는 아래와 같다

 

purchaseOrder := shipTo & BilTo & Item +

shipTo := Name & Street .. 이런식

 

 

+ 는 한번이상 나타난다

* 는 0번 이상 나타난다

 

 

purchaseOrder,shipTo  왼쪽에 나타나는개 클래스 

 

 

XML 이 문법을 만드는 것인데 이 문법이 맞는것인지 아닌지를 확인 할때 interpreter 패턴을 사용 할 수 있다

 

 

 


 

클래스 구조적 포인트는

 

연산자이든, 문자열이든 동일한 부모 추상클래스를 두어서 실행시키는 함수를 virtual 로 정의해놓고 이 함수를

 

수행하는 것

 

 

즉 연산자와, 문자를 파싱할때 동일한 부모이니 연산자이든 문자이든 동일한 타입의 부모로 캐스팅 됨을 이용하여

 

보다 간결한 구조로 조사와 순회 할 수 있다는 것

 

반응형

+ Recent posts