当我想在Xtext工作中的语法规则之间进行交叉引用时,我需要使用关键字name
。例如。:
Constant:
name=NAME_TERMINAL "=" number=Number;
ConstUsage:
constant=[Constant | NAME_TERMINAL];
是否有可能将这个词改为另一个词(例如id
)?我需要它,例如如果我有规则,它使用参数name
的其他东西。
你可以使用IQualifiedNameProvider
的自定义实现,例如通过继承DefaultDeclarativeQualifiedNameProvider
。
public class MyDslQNP extends DefaultDeclarativeQualifiedNameProvider{
QualifiedName qualifiedName(Element e) {
Package p = (Package) e.eContainer();
return QualifiedName.create(p.getName(), e.getId());
}
}
请参阅https://dietrich-it.de/xtext/2011/07/16/iqualifiednameproviders-in-xtext-2-0.html以获取完整示例