2017-10-31 11 views
0

나는 다음과 같은 문법이있는 경우 :Xtext는 다중 상속으로 Ecore 모델을 생성 할 때 기능을 "인수 분해"할 수 있습니까?

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals 

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl" 

WithX: 
    A | B | C; 

A: 
    "a" x=INT y=INT; 

B: 
    "b" x=INT y=INT; 

C: 
    "c" x=INT; 

다음 Xtext가 생성하는 좋은 슈퍼 클래스 다음는 Ecore 모델은 x 인수 분해합니다 :

Ecore model generated from the first grammar

을 그러나, 나는에 규칙을 추가하는 경우 문법은 y 인수 분해합니다 :

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals 

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl" 

WithX: 
    A | B | C; 

WithY: 
    A | B ; 

A: 
    "a" x=INT y=INT; 

B: 
    "b" x=INT y=INT; 

C: 
    "c" x=INT; 

T 암탉 생성는 Ecore 모델은 더 이상 어떤 기능을 인수 분해하지 않습니다

Ecore model generated from the second grammar

WithYWithX에서 xy를 얻을 수있는 대기가 있습니까?

답변

0

방금 ​​내 질문에 답변했습니다. 나는 단순히 WithXWithY 사이의 관계 추가했다 :

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals 

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl" 

WithX: 
    WithY | C; 

WithY: 
    A | B ; 

A: 
    "a" x=INT y=INT; 

B: 
    "b" x=INT y=INT; 

C: 
    "c" x=INT; 

을 그리고 지금 생성

Ecore model generated from fixed grammar

만세 :)