Можно ли изменить ключевое слово для перекрестных ссылок между грамматическими правилами / объектами в Xtext? - PullRequest
0 голосов
/ 01 марта 2019

Когда я хочу сделать перекрестные ссылки между правилами грамматики в Xtext, мне нужно использовать для этого ключевое слово name.Например:

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

ConstUsage:
    constant=[Constant | NAME_TERMINAL];

Можно ли заменить это слово на другое (например, id)?Мне это нужно, например, в случае, когда у меня есть правило, которое использует параметр name для чего-то другого.

1 Ответ

0 голосов
/ 01 марта 2019

вы можете использовать пользовательскую реализацию 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 для полного примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...