从xtext交叉链接Java类

时间:2016-11-26 23:06:51

标签: 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,提供了几个实现接口的类

public interface IObject{
…
}

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

问题

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

1 个答案:

答案 0 :(得分:1)

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