跨项目中所有文件的 Xtext 交叉引用

Xtext cross-reference across all files in project

我正在用 xtext 制作一个非常简单的 DSL。项目将包含定义消息名称或引用消息名称的文件。我已经包括了一个简化的例子:

语法:

Model:
    statements+=(MessageDefinition | MessageUsage)*;
MessageDefinition:
    '[MESSAGE_DEF]' name=ID;
MessageUsage:
    '[MESSAGE_USAGE]' usage=[MessageDefinition];

File1.ex:

[MESSAGE_DEF] EXAMPLE_1
[MESSAGE_DEF] EXAMPLE_2
[MESSAGE_USAGE] EXAMPLE_1

File2.ex:

[MESSAGE_USAGE] EXAMPLE_2

在这个例子中,来自 EXAMPLE_1 的交叉引用的工作方式使得 "Open Declaration" 的用法将我带到了定义。但是,EXAMPLE_2 上的交叉引用不起作用。我认为默认的范围规则会阻止不同的文件共享引用。

我需要添加什么才能使项目中的所有文件共享相同的全局范围以进行交叉引用?

附加信息:

该项目是在标准向导中使用 "Xtext Project" 创建的,我只根据预生成的代码编辑了语法,其他一切都是默认值。我想我需要添加一些自定义范围 behaviour/rules 以将所有文件加载到全局范围中,但我不确定应该如何完成?

如果您

,它会很好地处理您的语法和范围界定
  1. 已在您的运行时工作区中自动启用构建
  2. 您建模的项目启用了 xtext 特性和 xtext 构建器(右键单击 -> 配置 -> ...)
  3. 如果是 java 项目模型文件必须驻留在源文件夹或源文件夹中的包中