在同一语法规则中交叉引用多个名称

Cross reference to multiple names in the same grammar rule

在我的 DSL 中,我有两个不同的规则可用于定义实体:

第一种方式是在预设词后跟实体名称:

Actor Bob

Actor Alice

第二种方式是在两个实体之间建立关系:

Bob -> Alice

这和写作一样

Actor Bob -> Actor Alice

现在我有一个关于这些实体的交叉引用的问题。创建对 Actors 的交叉引用很容易,因为我只是引用规则

Actor: 
'Actor' name = ID

但是当我在同一规则中有两个 ID 时会发生什么?我将如何进行交叉引用

Arrow:
'Actor'? name+=ID '->' 'Actor'? name+=ID

由于同一条规则中有多个名称?

谢谢!

要更改元素的索引方式,您必须调整 org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy.createEObjectDescriptions(EObject, IAcceptor<IEObjectDescription>) 并将所有名称下的元素添加到索引中。

如果您也想对本地定义执行此操作,则必须进行调整 org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.internalGetAllDescriptions(Resource)