如何引用属性引用而不是“命名”引用?

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

这个问题是对/how-to-add-a-separate-in-in-xtext-list的跟进。

我有以下语法部分:

 Fixture:
                            name            = ID
    ('('                    abbreviation    = ID ')')?
    ':'                     type            = FixtureType 
    'startDmxChannel' '='   startDmxChannel = INT
    ';';

FixtureGroup:
                            name            = ID 
    ('('                    abbreviation    = ID ')')?
    ':'                     fixtures += [Fixture.abbreviation]*
    ';';

我在实例中有以下部分:

Fixtures
{
    FrontRight1  (FR1) : FunPar startDmxChannel=1;
    FrontRight2  (FR2) : FunPar startDmxChannel=9;
    FrontRight3  (FR3) : FunPar startDmxChannel=17;
    FrontRight4  (FR4) : FunPar startDmxChannel=25;
}

FixtureGroups
{
    FrontRight: FrontRight1 FrontRight2 FrontRight3 FrontRight4;

我想在最后一行使用缩写名称:

    FrontRight: FR1 FR2 FR3 FR4;

甚至更好,名称或缩写的组合如:

    FrontRight: FrontRight1 FR2 FR3 FR4;

怎么做到这一点?

eclipse grammar dsl xtext
1个回答
1
投票

这里涉及三件事

  • 对于全局引用(在文件之间):自定义IDefaultResourceDescriptionStrategy(通过子类化DefaultResourceDescriptionStrategy)允许索引多个名称下的元素并向userdata添加信息,例如:如果索引名称是缩写
  • 对于本地参考,同样可以在org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.internalGetAllDescriptions(Resource)完成
  • 然后你可以调整MyDslScopeProvider来过滤正确的参考。
  • 如果引用是本地的,你可以在你的MyDslScopeProvider做所有事情
© www.soinside.com 2019 - 2024. All rights reserved.