【问题标题】:Xtext order-sensitive scopingXtext 顺序敏感范围
【发布时间】:2016-03-30 20:02:30
【问题描述】:

我对 Xtext an Scopes 有一个非常具体的问题。 我的语言需要顺序敏感范围,我不确定如何做到这一点,尤其是每次发生某些变化时都不必解析每个符号。

我举个例子: 我们有三个文件,每个文件都导出一些符号并删除一些符号。

文件1:

Add symbol A, B, C

文件2:

Imports A, B, C from File1
Removes B, C
Adds D

文件3:

Imports A, D from File2
Adds B

更复杂的是,文件的顺序由每个文件中的版本号给出,并且导入是隐式的。

我已经查看了Xtext Documentation,但是当涉及到全局范围时,我发现文档不是很有帮助。有什么我可以看看的起点吗?

提前感谢任何提示或提示:)

【问题讨论】:

    标签: java scope xtext


    【解决方案1】:

    默认全局范围将使所有文件中的符号对同一项目中的所有其他文件可见。一种可能的解决方案是保留范围,并在链接阶段实现您的自定义行为:子类 DefaultLinkingService 并覆盖 getLinkedObjects(...)。使用范围获取给定名称的所有已声明符号的列表。然后,您可以根据文件的顺序敏感语义选择这些符号之一。

    如果您需要包含声明符号的文件的其他信息,可以将其放入 IEObjectDescription 的用户数据中:子类 DefaultResourceDescriptionStrategy,覆盖createEObjectDescriptions(...),并使用EObjectDescription.create(...) 创建具有任意字符串→字符串映射的描述。这些映射可以在链接服务和其他服务中读取,而不需要解析相应的EObjects。

    这种基于链接的方法的缺点是您必须自定义内容辅助提议提供程序才能根据文件语义过滤掉符号。默认提案提供者将提供它在范围内找到的所有符号。

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2018-03-23
      • 2010-12-16
      相关资源
      最近更新 更多