是否可以在Xtext中的语法规则/对象之间更改用于交叉引用的关键字?

时间:2019-03-01 09:26:52

标签: dsl xtext

当我想在Xtext工作中的语法规则之间进行交叉引用时,我需要为此使用关键字name。例如:

Constant:
    name=NAME_TERMINAL "=" number=Number;

ConstUsage:
    constant=[Constant | NAME_TERMINAL];

是否可以将此单词更改为另一个单词(例如id)?我需要例如如果我有规则,该规则将参数name用于其他内容。

1 个答案:

答案 0 :(得分:0)

您可以使用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