我对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]
;
我的问题是规则“规则”中的交叉引用不起作用。所以我的问题基本上是,我对交叉引用的使用与上面链接中提供的交叉引用有什么区别。
他们的示例在没有自定义范围或类似的情况下开箱即用。所以我想,我也应该这样。
提前谢谢! :)
答案 0 :(得分:2)
PropertyValue包含在一个命名元素(PropertyDefinition)中,默认情况下会将PropertyValue的名称转换为限定名称,即
PropertDefintion.name+'.'+PropertyValue.name
如果要引用限定名称,交叉引用需要使用语法规则:
Rule : 'rule' value=[PropertyValue|QualifiedName]
如果您不想使用限定名称,则必须更改IQualifiedNameStrategy。 只需在运行时模块中绑定不同的实现,例如:
public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return SimpleNameProvider.class;
}