2012-11-08 3 views
1

Xtext에 대한 질문이 있습니다. 나는 Xtext가 .xtext 파일에 프로그램 된 DSL을위한 Ecore Modell을 생성한다는 것을 알고있다. xtext가 Ecore 모델에서 EClass, EAttribute, EEnum 및 ERefernce 만 생성한다는 사실을 제대로 알고 있습니까? 규칙의 속성을 만들어 EOperaption을 만들 수있는 방법이 없습니까?Xtext - Operation

+0

글쎄, 내가이 개체의 유형과 이름 .. 참조 개체를 얻을 수 있다면 그것을 필요하지 않을 것입니다 참조의 이름. 후자는 ERerferenceObject.name으로 가져올 수 있습니다 ...하지만 첫 번째는 실제로 참조 된 EClass 만 Object를 수집 할 수없는 문제입니다. 이것은 내 dsl : setEntity = ([Entity])의 예제 코드입니다 ... ERerfence setEntity의 이름을 얻을 수 있으며 참조 된 EObject의 ECeass 및 EReference의 EClass를 얻을 수 있지만 이름이나 기타 정보는 얻을 수 없습니다. 그 개체 내에 있습니다. – soMasu

답변

2

Xtext를 사용하면 기존 EPackage를 가져 오거나 문법 정의에서 새 EPackage를 추론 할 수 있습니다. EOperations는 구체적인 구문과 관련이 없기 때문에 EOperations에는 유추 할 수있는 것이 없습니다. EOperations를 사용하려면 수동으로 유지 관리되고 가져온 패키지로 전환하는 것이 좋습니다.

1

Sebastian의 답변에 추가 : 추론 된 모델을 계속 사용하려면 모델 포스트 프로세서를 사용하여 모델을 조정할 수 있습니다. 모델에서 하나 또는 두 가지만 조정하려는 경우 - 예 : 을 추가하면 작업이 추가됩니다.

+0

글쎄,이 개체의 _type_ 및 _name_ .. ** ** 참조 된 개체를 참조 할 수있는 경우 필요가 없습니다. 후자는 ERerferenceObject.name으로 가져올 수 있습니다 ...하지만 첫 번째는 실제로 참조 된 EClass 만 Object를 수집 할 수없는 문제입니다. 이것은 내 dsl : setEntity = ([Entity])의 예제 코드입니다 ... ERerfence detEntity의 이름을 얻을 수 있으며 참조 된 EObject의 ECeass와 EReference의 EClass를 얻을 수 있지만 이름이나 다른 정보는 얻을 수 없습니다. 그 개체 내에 있습니다. – soMasu

+0

@soMasu : 당신이 무슨 말을하고 있는지 잘 모르겠습니다. 그러나'xyz.getSetEntity(). getAbc()'를 할 때'Entity'로부터 물건을 얻을 수 없다면 이것은 완전히 다른 이야기입니다. 이것은 "해결"이 성공하지 못했음을 의미합니다. –

+0

간단히 말해서 나는 compileClass (EClass o)와 같은 메소드를 가지고 있으며 주어진 이름과 타입을 가진 모든 속성과 이름과 타입을 가진 모든 참조를 가진 템플릿을 만들고 싶다. Attributes는 for 루프에서 getEAllAttributes와 EAttribute.name 및 EAttributeType.name을 사용하여 간단히 수행 할 수있는 문제는 아닙니다. 하지만 참고 문헌은 내가 필요로하는 정보를 얻지 못하는 문제이다. – soMasu