是否可以更改 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