java - 从 xtext 交叉链接 Java 类

标签 java dsl xtext

问题:

我想要一个 xtext DSL,我可以在其中交叉链接到 JAR 中包含的 java 类型。

示例:

假设我们有一个简单的 DSL,例如:

Object:
    'object' name=ID '{'
    property=Property
    '}';

Property:
    'property' name=ID '{'
    object=ObjectOrInclude
    '}';

ObjectOrInclude:
    Include | Object;

Include:
    'include' include=[Object|ID];

此外,我们的类路径中有一个 JAR 提供了几个实现该接口(interface)的类

public interface IObject{
…
}

交叉链接包含应该允许我们引用来 self 的DSLS 的EObjects 以及JAR 提供的类。我假设我必须以某种方式将我的 Java 接口(interface)集成到 xtext 索引中,并为每个类提供 ID 和 ResourceDescription,以便链接器可以解析这些类。然而,我不知道如何实现索引的这种扩展。

问题:

如何将我的 Java 类放入 xtext 索引中以便交叉链接起作用?

最佳答案

这通常是通过使用 Xtype 或 Xbase 来完成的。不幸的是,您想同时引用 EObjects 和 JvmTypes。您可以通过实现一个 jvmmodelinferrer 将您的对象映射到 JvmTypes 来做到这一点。看看https://www.eclipse.org/Xtext/documentation/104_jvmdomainmodel.html了解如何做到这一点

关于java - 从 xtext 交叉链接 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824077/

相关文章:

python - 将自定义公式转换为 python 函数

java - Xtext:无法解析引用

xtext - 将 "text"与 XText 逐行匹配

java - 如何找到引用方法的第一个声明方法

java - 我的递归条件是否正确计算二叉树高度?

java - 在表达式的自定义解析器中结合 Java 解析器

java - 如何使用 Spring Integration 处理外部系统的异步文件处理?

java - EDIFACT 语法、解析器和库 (Java)

java - (int & Integer.MAX_VALUE) % int 在 Java 中做什么?

java - 为 JPanel 调用 repaint()