0
Рассмотрим следующую Ecore модель (в Xcore обозначениях):Ecore EClass в XText
class Foo {
contains Element[] elements
}
class Bar extends Foo {
int n
}
class Element {
String name
}
и следующие правила XText:
FooBar: Foo | Bar;
Foo: {Foo} 'foo' '{' elements+=Element (',' elements+=Element)* '}';
Foo: {Bar} 'bar' n=INT '{' elements+=Element (',' elements+=Element)* '}';
Element: {Element} name=ID;
таким образом, что текстовые модели, как это:
foo {one, two}
bar 2 {three, four}
Есть ли способ реорганизовать повторение вдали от правил? Я знаю, что я мог бы ввести новый EClass ElementContain
и правила для Foo
и Bar
ссылаются на его правило, однако это загромождает метамодель.
Так что, если существуют контексты, где 'Bar' имеет смысл, но' Foo' не, я в значительной степени обязан использовать композицию вместо или в дополнение к наследование? –
Да. Нет шаблонов/фрагментов для правил грамматики. Не стесняйтесь подавать запрос на улучшение в Eclipse Bugzilla –