让我们假设我必须建立一个抽象类" 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中为抽象类,继承和类似概念建模?
亲切的问候和非常感谢! : - )
答案 0 :(得分:0)
实际上,如果要进行继承,则需要定义自己的元模型并将其导入语法。
不可能在规则之间进行继承。但你可以这样做:
Car:
(({SUV} 'suv') |
({Limousine} 'limo')) owner=[Owner] details=ID
;
Xtext将创建一个EClass Car,SUV和Limousine。 SUV和豪华轿车将继承Car。当“汽车”规则适用时,EClass SUV或豪华轿车将是实时的。