Import 如何在XText 2.9中关闭全局作用域?
有人知道如何在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中如何实现这一点?我有一个工作
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);
}
}