Cross-reference resolution involves several mechanisms. In this section we introduce the main concepts behind these mechanisms and describe how they interact. We will also write tests to get familiar with cross-reference resolution.
Xtext relies on EMF for the in-memory representation of a parsed program, thus, it is necessary to understand how cross-references are represented in EMF.
In EMF, when a feature is not of the basic type (string, integer, and so on), it is actually a reference (an instance of EReference
). A
containment reference
defines a stronger type of association. The referenced object is contained in the referring object, called the
container; in particular, an object can have only one container. For non-containment references, the referenced object is stored somewhere else, for example, in another object of the same resource or even in a different resource. A cross-reference is implemented as a non-containment...