2015-05-12 26 views
0

在我的DSL内有一些包(每个文件一个),导入,类和类成员。 说一个文件包含包含类c1的包p1,并且类c1包含成员m1。另一个文件包含软件包p2,其中包含具有成员m2的类c2。如何使用Xtext实现“公共静态”成员可见性?

我希望成员m1具有像使用public static修改的Java成员那样的可见性。从包p2中,在包含p1之后,在类c2中,成员m2的值可以是对m1(m2 = c1.m1)的引用。

导入工作,但我只能看到导入的实体直接包含的元素(包括p1.c1。*会解决我的问题,但我不想这样做)是否有另一种解决方案这种类型范围界定?

+0

请问你的语法看起来像 –

+0

@ChristianDietrich在一个简化的例子,我想从其他引用类型其他包中的类。 包装: \t '包' 名称= QualifiedName的 \t进口+ =导入* \t类+ = *类; \t \t Class:'class'name = ID'{'elements + = Element * \t'}'; QualifiedName:ID('。'ID)*; QualifiedNameWithWildCard:QualifiedName('。*')?; 导入:'import'importedNamespace = QualifiedNameWithWildCard; 元素:类型|引用; 类型:'type'name = ID; 参考:type = [Type] name = ID; –

回答

0
Reference: type=[Type] 

是短期的

Reference: type=[Type|ID] 

|ID意味着ID将被解析。 的ID不允许点(.

所以你可能要改变语法

Reference: type=[Type|QualifiedName] 
相关问题