2015-11-13 94 views
0

让我们假设我必须对交叉引用的所有者(类名称为“所有者”)的抽象类“Car”进行建模,并且可以说我还必须建模三个具体的子类“汽车”称为“SUV”,“豪华轿车”和“跑车”,具有一些额外的特定属性。XTEXT类型规则中的类继承

是否有可能在XTEXT中对这样的继承进行建模?像:

abstract Car: 
    owner=[Owner] 
; 

SUV extends Car: 
    SuvDetails=ID 
    ... 
; 

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

还是我必须写行“所有者=(业主)”在每个子类“汽车”(甚至可能没有定义抽象类车)?

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

非常感谢和感谢! :-)

回答

0

事实上,如果你想做一个继承,你需要定义你自己的元模型并将其导入到你的语法中。

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

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

Xtext将创建一个EClass汽车,SUV和豪华轿车。 SUV和豪华轿车将拥有Car的继承权。当规则'汽车'将适用时,EClass SUV或豪华轿车将是instanciate。