0

DSL의 전통적인 컴파일러 개발과 관련하여 Eclipse Modeling Framework (EMF)의 추가 기능을 이해하고 싶습니다.DSL을위한 Eclipse Modeling Framework의 전통적인 컴파일러 개발 기능에는 어떤 것이 있습니까?

EMF 개발 흐름은 메타 모델 (또는 표준화 된 것의 재사용, UML과 같은)의 정의로 고전적으로 시작한다는 것을 분명히 이해하고 있지만, AST 정의의 활동과 크게 다르지는 않습니다. (00- 언어) 컴파일러 민속학에서. 이기종 기술 덕분에 보완적인 노력까지 추가 할 수 있습니다.

그러나 메타 모델은 그래프로 나타나기 때문에 일반적으로 AST 클래스보다 많은 정보를 가질 수 있습니다. 따라서 EMF 툴링은 이러한 정보를 문맥 검사에 활용할 수 있습니다. 그 차이가 있습니까? 노력할만한 가치가 있니?

또한 Xtext와 같은 도구가 어떻게 든 두 커뮤니티 간의 차이를 메울 수 있음을 이해합니다.

답변

0

추상 구문 트리는 순수한 데이터 구조입니다. 이와 대조적으로, EMF 모델은 EAttributes 및 EReferences가있는 EClassifiers로 표현 된 데이터와 EOperations로 표시되는 동작으로 구성됩니다.

은 내가 그러나 추측하는 것은 메타 모델은 AST 클래스

그래서 그래, 당신 말이 맞아

에 비해 일반적으로 더 정보를 수 있다는 것이다. EMF 메타 모델에 포함 된 조금 더 많은 정보는 작업입니다.

노력할 가치가 있습니까?

크게 사용 사례에 따라 다릅니다. 작동하는 데이터와 함께 동작을 정의하는 것은 일반적으로 좋은 OO 관행으로 간주됩니다.

+0

좋아,하지만 AST는 C++이나 Ruby에도 메소드가 있다고 정의했다 ... 그래서 ... – JCLL

+0

@JCLL 메소드 일지라도 getter와 setter를 행동으로 간주하지 않는다. 다른 방법은 무엇입니까? – SpaceTrucker