gpt4 book ai didi

java - Xtext 顺序敏感的作用域

转载 作者:行者123 更新时间:2023-12-01 10:10:52 25 4
gpt4 key购买 nike

我对 Xtext 和 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 ,但是当谈到全局范围时,我发现文档不是很有帮助。有一些我可以看一下的起点吗?

预先感谢您提供任何提示或提示:)

最佳答案

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

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

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

关于java - Xtext 顺序敏感的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com