2013-01-19 2 views
3

구문 분석 트리, AST 및 메타 모델 간의 관계를 설명 할 수 있습니까? 저는 xtext가 EMF Ecore 메타 모델을 문법에서 파생시키고 antlr을 가진 파서를 생성한다는 것을 알고 있습니다. 하지만 어떻게 파싱 될 것인가? 먼저 입력이 렉서 (lexer)를 거쳐 파서 (parser)가 파서 규칙에서 파싱 트리를 생성한다. 맞습니까? 그리고 파스 트리에서 Xtext는 AST도 생성합니까? 무엇 때문에? 그리고이 경우 metamodel은 어떤 용도로 사용됩니까? 나는 모든 정의를 약간 혼동합니다.xtext : AST, Metamodel 및 구문 분석 트리 간의 관계

답변

3

당신은 3 단계 구문 분석 절차에 대해 옳았습니다. 먼저 렉서가 입력 스트림으로 시작한 다음 Antlr 기반 구문 분석 트리가 만들어지고 마지막으로 Xtext가 구문 분석 트리에서 EMF 기반 AST를 생성했습니다. 첫 번째 두 단계는 모든 파서 (생성자)에 대해 자연스럽고 세 번째 단계는 설명이 필요합니다. 약간의 동기 부여가있는 약간 긴 설명을 시작하겠다. 그런 다음 일반적으로 메타 모델과 EMF에 대해 곧 이야기 할 것이다.

먼저 생성 된 파서는 식별자 확인 (변수 또는 함수 호출 처리에 필요)을 지원하지 않으므로 수동으로 추가해야하므로 수동으로 코딩 된 후 처리 단계가 거의 모든 언어에 필요합니다. 이미 존재하는 구문 분석 트리의 확장이 필요합니다.

두 번째로 EMF는 강력한 반사 API와 함께 모델에 적합한 유형 안전 API를 제공하여 모델의 처리를 쉽게하는 매우 일반적이지만 유용한 구성 요소를 만들 수 있습니다 (예 : Acceleo 또는 , ETL, VIATRA2과 같은 모델 변환 도구 Xtend의 한 측면. Antlr과 EMF의 구문 분석 트리 API의 차이점을 정확하게 말할 수는 없지만, LPG 파서 생성기의 API로 작업했습니다. 제 생각에는 EMF가 사용하기가 더 쉽습니다.

EMF를 사용하면 GMF 기반 그래픽 편집기와 같은 다른 EMF 기반 편집기와 함께 풍부한 Xtext 기능을 재사용 할 수 있습니다. 기본 아이디어는 이전 EclipseCon 프리젠 테이션 (TMF meets GMF - Combining Textual and Graphical Modeling)을 참조하십시오.

일반적으로 해석 정보를 사용하여 구문 분석 트리를 확장해야하는 경우 이미 사용 된 패러다임을 다시 사용하면 다른 언어 도구와 언어를 쉽게 통합 할 수 있습니다.

EMF는 메타 모델링의 개념에 의존합니다. EMF는 모델에 사용할 수있는 요소 집합과 연결에 대한 정보와 같은 추가 제약 조건을 정의해야합니다. 이 개념은 DTD 또는 SML 스키마와 같은 XML 스키마 정의와 유사합니다. 모델을 설명하는 일관된 방법이 있습니다. Xtext는 EMF와 함께 다음과 같은 여러 가지 방식으로 작동합니다.

  • 우선 문법을 기반으로 모든 EMF 기반 도구에서 사용할 수있는 EMF 메타 모델을 생성하고 등록합니다.
  • 파싱 프로세스의 최종 결과는 EMF API로 EMF API를 사용하여 읽고 수정할 수 있습니다. 변경 사항은 텍스트 형식으로 다시 직렬화됩니다.

나는 대답이 충분히 분명했다. 필요한 경우 더 많은 설명을 요청하십시오.

+0

고맙습니다. 내가 처음 두 단계에 대해 지금 알고 4. 검증 을 연결 1. 렉싱 2. 구문 분석 3. 다음 Xtext 문서에서 는 4 단계의 분석 과정에 대한 발언은, 구성.연결 단계에서 모델 요소 간의 참조가 생성됩니다. 그러나 유효성 검사 단계는 어떻게됩니까? – ph09

+1

유효성 검사 단계에서 생성 된 EMF 모델은 EMF 도구를 사용하여 유효성을 검사합니다. 선언적 유효성 검사기를 사용하면 해당 단계에서 실행됩니다. –

관련 문제