xText - 什么是交叉引用?

时间:2018-04-17 05:42:10

标签: xtext cross-reference

我无法理解交叉引用某些内容意味着什么,并且所提供的所有示例都很难解释它实际上做了什么以及它意味着什么。

有人可以解释吗?

1 个答案:

答案 0 :(得分:1)

Xtext解析文本文件并将这些文本文件转换为抽象语法树。正如“树”这个词暗示你只有父/子关系。对于许多用例来说,这并不是很好。考虑您有拥有其他实体类型成员的实体。

entity A {
}

entity B {
     myA : A
}

使用AST这是不可能的,或者你必须在整个地方都有重复的对象。或者您只需存储成员类型的名称(或其他标识符)并手动查找正确的实体。这是不好的。你真正想做的事情:

Entity a = ...;
Entity b = a.getMembers().get(0).getType();

所以你真正想做的就是把你的AST变成一个图形。在此图中,您仍然具有parent / child = containment引用,此外,您还有从树中的一个节点指向树中另一个节点(甚至是第二个文件)的交叉引用