Import 如何在XText 2.9中关闭全局作用域?

Import 如何在XText 2.9中关闭全局作用域?,import,scope,xtext,Import,Scope,Xtext,有人知道如何在XText 2.9中关闭全局作用域吗?我想关闭全局作用域,以便只能访问我导入的文件的元素。例如: file1.mydsl: element A(C){ ; } subelement C{ ; } file2.mydsl: element B(C){ ; } 这应该会在file2.mydsl中返回一个错误,因为我没有导入“file1.mydsl”。我应该添加行-import“file1.mydsl”-以避免错误。在Xtext 2.9中如何实现这一点?我有一个工作

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

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

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

这应该会在file2.mydsl中返回一个错误,因为我没有导入“file1.mydsl”。我应该添加行-import“file1.mydsl”-以避免错误。在Xtext 2.9中如何实现这一点?我有一个工作代码,可以实现我想要的功能,但该代码使用Xtext 2.8,在2.9版本上不起作用。

您好,您仍然可以切换到基于importURI的作用域

fragment=org.eclipse.xtext.generator.adapter.FragmentAdapter{ fragment=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);

    }

}