这个问题是对/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;
如何做到这一点?
答案 0 :(得分:1)
这里涉及三件事
IDefaultResourceDescriptionStrategy
(通过子类DefaultResourceDescriptionStrategy
)可以为多个名称下的元素建立索引,并向用户数据添加信息,例如如果索引名称是缩写org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.internalGetAllDescriptions(Resource)
MyDslScopeProvider
来过滤正确的参考。MyDslScopeProvider