我的语法中有这样的规则:
`CLASS: 'extends' '=' superClass=[CLASS];`
正如您可以看到我的班级没有像name=ID
这样的名字,我想通过包含CLASS声明的文件名来引用。为了实现这一点,我创建了自定义QualifiedNameProvider,使用:
DefaultDeclarativeQualifiedNameProvider
def QualifiedName qualifiedName(CLASSDeclaration cd) {
var fileName = ???????
return QualifiedName::create(fileName)
}
当我返回硬编码字符串时这很好用,但我不知道如何获取定义类的文件名。
感谢您的想法
答案 0 :(得分:1)
您可以使用eResource
的{{1}}来获取可以处理以获取文件名的URI。请注意:[Class]是[Class | ID]的缩写,表示解析ID。
如果你想在文件名中加一个点,你可能需要像[Class | FQN]
这样的东西。你可以使用EObject
创建限定名称