Xtext:如何实现 IQualifiedNameProvider 到 return 文件名

Xtext: How to implement IQualifiedNameProvider to return file name

我的语法规则是这样的:

`CLASS: 'extends' '=' superClass=[CLASS];`

如您所见,我的 class 没有任何类似于 name=ID 的名称,我想通过包含 CLASS 声明的文件名进行引用。为此,我创建了自定义的 QualifiedNameProvider,它扩展了 DefaultDeclarativeQualifiedNameProviderwith:

def QualifiedName qualifiedName(CLASSDeclaration cd) {
    var fileName = ???????
    return QualifiedName::create(fileName)
}

这在我返回硬编码字符串时工作正常,但我不知道如何获取定义了 class 的文件名。

谢谢你的想法

您可以使用 EObjecteResource 来获取您可以处理以获取文件名的 URI。请注意:[Class]是[Class|ID]的缩写,意思是解析一个ID。

如果你想在文件名中使用一个点,你可能需要 [Class|FQN]

你可以使用IQualifiedNameConverter 创建限定名称