请求链接xText中的特定节点

时间:2013-06-17 16:24:39

标签: xtext

在我的DSL中,我有一个cunstruct,如:

myInstance.abc == 2 -> [...]

template myTemplate
    const int abc;
endtemplate

instance myInstance of myTemplate with abc:=2;

实例的创建可以在代码中的任何位置,因为实例是静态的并且不会更改。永远。所以我希望在代码中放置实例无关紧要。

但是在确定范围时,第一行将首先提供,所以为了这样做,我需要事先将myInstance链接到myTemplate。但是链接尚未到达代码的那一部分。有没有办法从我的自定义ScopeProvider中请求链接特定节点?

编辑:

之类的东西
SomeLibrary.ensureLinked((EObject)templateInstance);

1 个答案:

答案 0 :(得分:0)

在您的范围提供程序中,您可以访问整个DOM。因此,只需扫描DOM以查找所有“实例”,并将其作为范围提供。您不限于作为范围提供程序的参数给出的元素,但您可以将DOM导航到任何可到达的元素。

范围提供程序通常返回适用于当前范围的所有元素。 xText然后按名字命名。因此,您通常为整个块定义范围提供程序,而不是为块内的每个元素定义。在实现中,您必须浏览表示块的DOM部分。