在同一语法规则中交叉引用多个名称
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)
在我的 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)