Xtext手动为语法添加值

时间:2013-02-20 05:56:28

标签: java xtext xtend

我有一个可以解析容器和模块列表的语法,然后按字母顺序生成这些容器。但是,我还想将模块名称添加到容器列表中。

例如:

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);
}

我能够生成CONTAINER配置中的内容。但我想将模块名称“internal”和“external”合并到容器中。然后按字母顺序对它们进行排序。

有没有办法在xtext中执行此操作?这属于发电机或范围部分吗?

1 个答案:

答案 0 :(得分:2)

这应该进入发电机。您需要它生成所有CONTAINERMODULE节点的列表。我假设您已经在Xtend中编写了生成器:

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

遍历排序列表:

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

然后每种类型一个generateContainer()方法。