2013-02-20 27 views
0

我有一個語法可以解析容器和模塊列表,然後按字母順序生成這些容器。但是,我也想將模塊名稱添加到容器列表中。Xtext手動爲語法添加值

例如:

With the configuration: 
CONTAINER cont1; 
CONTAINER cont2; 
MODULE external WITH PRIORITY 1; 
MODULE internal WITH PRIORITY 2; 


The generated file should have: 
main() 
{ 
    Container(cont1); 
    Container(cont2); 
    Container(external); 
    Container(internal); 
} 

我是能夠產生什麼在容器配置。但我想將模塊名稱「internal」和「external」合併到容器中。然後按字母順序排序。

有沒有辦法在xtext中做到這一點?這是屬於生成器還是屬於範圍部分?

回答

2

這應該進入發生器。你需要它會生成一個所有的CONTAINERMODULE節點的列表。我假設你已經寫了發電機的Xtend:

val list = Lists.newArrayList(model.containers) 
list.addAll(model.modules) 

遍歷排序列表:

for(part : list.sortBy(e|e.name)) { 
    part.generateContainer() 
} 

,然後一個generateContainer()每個類型的方法。