2

我正在使用 Eclipse 的 Xtext 框架开发 DSL。

对于内容辅助/代码完成,我有一个昂贵的过程来生成字符串列表。

如何缓存该过程的结果?

长话短说:我的 DSL 与 Groovy 脚本接口。这些脚本提供了我在 DSL 的某些地方提供的方法。即使我使用正则表达式来解析脚本的方法,这也很慢。所以我想缓存脚本分析的结果。

根据我的分析,在验证期间(因此我并不总是有编辑器)和用户打开 DSL 文件时会调用分析代码。

无法判断验证何时结束(代码在私有方法中,Xtext 开发人员拒绝更改)。但我认为在为 Eclipse 编写编辑器/编译器时,这一定是一个常见问题。其他人如何解决这个问题?Eclipse 框架中是否有一些缓存服务?

4

2 回答 2

1

您可以使用 Xtext 提供的 JVM 模型。只要你安装了 groovy 插件,它的类型和方法应该可以通过它使用。

缓存:

在资源上有一个缓存,如果它发生变化,它会自动被驱逐。

((XtextResource)x.eResource()).getCache().get(myKey, x.eResource(), 
    new Provider<List<String>>(){
        public List<String> get() {
            return computeGroovyMethodNames();
        }
    })

缓存也可以注入:

@Inject
private IResourceScopeCache cache
于 2011-12-08T08:17:12.950 回答
0

我不确定,但我认为你可以重用org.eclipse.xtext.util.SimpleCache这种情况。

于 2011-11-29T12:35:08.640 回答