2015-11-13 124 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。