XTEXT类型规则中的类继承

时间:2015-11-13 10:39:48

标签: inheritance dynamic xtext abstraction

让我们假设我必须建立一个抽象类" Car"与一个所有者的交叉引用(类名是#34;所有者")并且让我们说我还必须建模三个具体的子类" Car"被称为" SUV","豪华轿车"和" Sportscar"具有一些额外的特定属性。

是否可以在XTEXT中建模这样的继承?...例如像:

abstract Car:
   owner=[Owner]
;

SUV extends Car:
   SuvDetails=ID
   ...
;

Limousine extends Car:
   LimousineDetails=ID
   ...
;
etc...

或者我必须写一行" owner = [Owner]"来自" Car"在每个子类中(甚至可能没有定义抽象类汽车)?

或者你通常如何在XTEXT中为抽象类,继承和类似概念建模?

亲切的问候和非常感谢! : - )

1 个答案:

答案 0 :(得分:0)

实际上,如果要进行继承,则需要定义自己的元模型并将其导入语法。

不可能在规则之间进行继承。但你可以这样做:

Car:
   (({SUV} 'suv') | 
    ({Limousine} 'limo')) owner=[Owner] details=ID
;

Xtext将创建一个EClass Car,SUV和Limousine。 SUV和豪华轿车将继承Car。当“汽车”规则适用时,EClass SUV或豪华轿车将是实时的。