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

问题描述 投票:0回答:1

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

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

ConstUsage:
    constant=[Constant | NAME_TERMINAL];

是否有可能将这个词改为另一个词(例如id)?我需要它,例如如果我有规则,它使用参数name的其他东西。

dsl xtext
1个回答
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以获取完整示例

© www.soinside.com 2019 - 2024. All rights reserved.