0

我有一个关于 Eclipse 的 Xtext 的问题。

我有一个简单的例子,我相信它非常接近在线文档和howtos中给出的例子(例如:http ://blog.efftinge.de/2012/05/implementing-fowlers-state-machine-dsl.html )。

我的语法如下所示:

MyModel : 
 properties += PropertyDefinition+
  rules += Rule+
;

PropertyDefinition :
 'property' name=ID '{'
   propertyValues += PropertyValue+
 '}'
;

PropertyValue :
 name=ID code=ID ';'
;

Rule :
 'rule:' value=[PropertyValue]
;

我的问题是规则“规则”中的交叉引用不起作用。所以我的问题基本上是,我对交叉引用的使用与上面链接中提供的交叉引用有什么区别。

他们的示例开箱即用,无需自定义范围或类似内容。所以我想,我的也应该如此。

先感谢您!:)

4

1 回答 1

2

PropertyValue 包含在命名元素 (PropertyDefinition) 中,默认情况下会将 PropertyValue 的名称转换为限定名称,即

PropertDefintion.name+'.'+PropertyValue.name

如果要引用限定名称,则交叉引用需要为此使用句法规则:

Rule : 'rule' value=[PropertyValue|QualifiedName]

如果您不想使用限定名称,则必须更改 IQualifiedNameStrategy。只需在运行时模块中绑定不同的实现,例如:

public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
  return SimpleNameProvider.class;
}
于 2013-11-29T07:38:26.093 回答