如何在 XText 2.9 中关闭全局范围?

How to turn off global scope in XText 2.9?

有人知道如何在 XText 2.9 中关闭全局范围吗?我想关闭全局范围,以便只能访问我导入的文件的元素。例如:

file1.mydsl:
element A(C){
   ;
}
subelement C{
   ;
}

file2.mydsl:
element B(C){
   ;
}

这应该 return 是 file2.mydsl 中的一个错误,因为我还没有导入 "file1.mydsl"。我应该添加行 - import "file1.mydsl" - 以避免错误。我怎样才能在 Xtext 2.9 中做到这一点?我有一个工作代码可以满足我的要求,但该代码使用 Xtext 2.8,不适用于 2.9 版本。

您好,您仍然可以切换到基于 importURI 的范围

https://bugs.eclipse.org/bugs/show_bug.cgi?id=491110

片段=org.eclipse.xtext.generator.adapter.FragmentAdapter{ 片段 = org.eclipse.xtext.generator.scoping.ImportURIScopingFragment {} }

或者简单地通过手动添加绑定

class MyDslRuntimeModule extends AbstractMyDslRuntimeModule {

    override bindIGlobalScopeProvider() {
        importuriglobalscopeprovider
    }

    override configureIScopeProviderDelegate(Binder binder) {
        binder.bind(IScopeProvider).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
            .to(SimpleLocalScopeProvider);

    }

}