【问题标题】:Referencing C++ Types in Xtext Grammar/DSL在 Xtext 语法/DSL 中引用 C++ 类型
【发布时间】:2012-11-01 22:23:18
【问题描述】:

我花了几天时间试图想出一个在 Xtext DSL 中引用 C++ 类型的解决方案。至此,我对参考 Java/JVM 类型的 Xtext/Eclipse 机制已经相当熟悉了。

大概要执行类似于 JVM 导入机制的操作,我必须将现有的(可能相当大的)CDT 索引保存为 Ecore,并将该 Ecore 导入我的 Xtext Grammar。

我正在考虑的另一种选择是对现有 CDT 索引进行一些编程挂钩。看起来这个选项可能更难,因为它可能涉及更多的自定义代码来实现。

有没有人在 Xtext 语法/DSL 中发现并成功实现了 C++ 类型的引用?有什么例子吗?对更好的解决方案有什么建议吗?就此而言,我提出的任何一个解决方案看起来是否合理/可行?

谢谢。

【问题讨论】:

    标签: c++ eclipse-cdt xtext


    【解决方案1】:

    要真正能够在 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 模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多