是否可以更改 Xtext 中语法 rules/objects 之间交叉引用的关键字?
Is it possible to change keyword for cross referencing between grammar rules/objects in Xtext?
当我想在 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
当我想在 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