Xtext:如何实现IQualifiedNameProvider来返回文件名

时间:2016-09-02 11:08:44

标签: xtext

我的语法中有这样的规则:

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

正如您可以看到我的班级没有像name=ID这样的名字,我想通过包含CLASS声明的文件名来引用。为了实现这一点,我创建了自定义QualifiedNameProvider,使用:

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

当我返回硬编码字符串时这很好用,但我不知道如何获取定义类的文件名。

感谢您的想法

1 个答案:

答案 0 :(得分:1)

您可以使用eResource的{​​{1}}来获取可以处理以获取文件名的URI。请注意:[Class]是[Class | ID]的缩写,表示解析ID。

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

这样的东西。

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