0

在我的 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);
4

1 回答 1

0

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

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

于 2013-06-25T20:17:46.390 回答