ATL은 모델을 변형 모델로 만들 수있는 변환 언어이지만이 변환 언어를 사용하면 텍스트를 모델 변환 (이미 정의 된 Ecore 메타 모델이 있음)으로 만들 수 있는지 알고 싶습니다. 다른 변환 언어와 관련이 있어야합니다.변형 언어 텍스트를 모델로
ATL에서 가능하지 않은 경우 변환 언어는 무엇입니까?
ATL은 모델을 변형 모델로 만들 수있는 변환 언어이지만이 변환 언어를 사용하면 텍스트를 모델 변환 (이미 정의 된 Ecore 메타 모델이 있음)으로 만들 수 있는지 알고 싶습니다. 다른 변환 언어와 관련이 있어야합니다.변형 언어 텍스트를 모델로
ATL에서 가능하지 않은 경우 변환 언어는 무엇입니까?
모델을 추상화하는 방법에 따라이를 "리버스 엔지니어링"또는 "디자인 복구"라고합니다.
"텍스트"를 모델로 변환하려면 해당 텍스트의 파서가 무엇이든간에 필요합니다. 일반적으로이 텍스트는 프로그래밍 언어 용으로 많이 사용됩니다. 텍스트가 COBOL, Java 또는 C++ 인 경우 해당 언어에 대한 전체 파서가 필요하며 작성하기 쉽지 않습니다. 이러한 언어는 생각보다 크고 복잡하며 문서화가 잘되어 있지 않기 때문에 거래를하게됩니다. 벤더에 특정한 변형이 있습니다.
파서만으로는 충분하지 않습니다. 모델 요소는 요소 (예 : "포함", "사용", "호출"관계가있는 클래스) 간의 관계가있는 엔터티를 나타냅니다. 이러한 관계를 코드에서 추출해야하므로 이러한 사실을 추출하기 위해 코드의 정적 분석이 필요합니다. 이 분석을 "어떤"언어로 작성해야합니다.
이러한 작업을위한 이상적인 도구는 program transformation (PT) system입니다. 이러한 도구는 언어 정의를 수용하고 소스 코드를 작성하는 AST (컴파일러 데이터 구조의 일종)를 파싱하고 코드를 변환하거나 분석하여 관심있는 관계를 추출 할 수있게합니다. 일반적으로 PT 시스템 고유의 DSL로 작성됩니다. AFAIK, DMS (우리 회사의 PT 시스템)는 일반 언어 용으로 성숙한 파서를 가진 유일한 회사입니다. YMMV.
EMFText, Xtext.
처음에는 XPath 2 printer and parser을 구현하는 데 사용했습니다. 또한 많은 예제가 있습니다 here.