Xtext:如何实现 IQualifiedNameProvider 到 return 文件名
Xtext: How to implement IQualifiedNameProvider to return file name
我的语法规则是这样的:
`CLASS: 'extends' '=' superClass=[CLASS];`
如您所见,我的 class 没有任何类似于 name=ID
的名称,我想通过包含 CLASS 声明的文件名进行引用。为此,我创建了自定义的 QualifiedNameProvider,它扩展了 DefaultDeclarativeQualifiedNameProvider
with:
def QualifiedName qualifiedName(CLASSDeclaration cd) {
var fileName = ???????
return QualifiedName::create(fileName)
}
这在我返回硬编码字符串时工作正常,但我不知道如何获取定义了 class 的文件名。
谢谢你的想法
您可以使用 EObject
的 eResource
来获取您可以处理以获取文件名的 URI。请注意:[Class]是[Class|ID]的缩写,意思是解析一个ID。
如果你想在文件名中使用一个点,你可能需要 [Class|FQN]
你可以使用IQualifiedNameConverter
创建限定名称
我的语法规则是这样的:
`CLASS: 'extends' '=' superClass=[CLASS];`
如您所见,我的 class 没有任何类似于 name=ID
的名称,我想通过包含 CLASS 声明的文件名进行引用。为此,我创建了自定义的 QualifiedNameProvider,它扩展了 DefaultDeclarativeQualifiedNameProvider
with:
def QualifiedName qualifiedName(CLASSDeclaration cd) {
var fileName = ???????
return QualifiedName::create(fileName)
}
这在我返回硬编码字符串时工作正常,但我不知道如何获取定义了 class 的文件名。
谢谢你的想法
您可以使用 EObject
的 eResource
来获取您可以处理以获取文件名的 URI。请注意:[Class]是[Class|ID]的缩写,意思是解析一个ID。
如果你想在文件名中使用一个点,你可能需要 [Class|FQN]
你可以使用IQualifiedNameConverter
创建限定名称