在Xtext语法/ DSL中引用C ++类型

时间:2012-11-13 13:31:33

标签: c++ eclipse-cdt xtext

我花了几天时间尝试提出一种在Xtext DSL中引用C ++类型的解决方案。此时,我非常熟悉参考Java / JVM类型的Xtext / Eclipse机制。

大概要做类似于JVM导入机制的事情,我必须将现有的(可能非常大的)CDT索引保存为Ecore,并将Ecore导入到我的Xtext Grammar中。

我正在考虑的另一个选择是对现有CDT指数的一些编程挂钩。看起来这个选项可能更难,因为它可能需要更多的自定义代码来实现。

有没有人在Xtext语法/ DSL中发现并成功实现了C ++类型的引用?任何例子?有什么更好的解决方案吗?对于这个问题,我提出的任何一个解决方案似乎都是合理/可行的吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

要实际能够在Xtext DSL中引用C ++或任何非Xtext元素,您必须将可引用元素引入Xtext的索引。

正确的方法是拥有一个包含CDT索引的IAllContainerState,并为每个C ++文件创建一个IResourceDescription。 CDT索引应包含有关所包含资源,类型和名称的信息,这可以映射到范围界定章节中描述的概念:https://eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping

GenericResourceServiceProvider可用于C ++资源的IResourceServiceProvider。

查看org.eclipse.xtext.resource.generic包以及它如何用于索引.ecore模型。

相关问题