【发布时间】:2015-08-21 15:31:26
【问题描述】:
XText 新手,我正在努力解决以下 MWE 语法的两个问题。
Metamodel:
(classes += Type)*
;
Type:
Enumeration | Class
;
Enumeration:
'enumeration' name = ValidID '{' (literals += EnumLiteral ';')+ '}'
;
EnumLiteral:
ValidID
;
Class:
'class' name = ValidID '{'
(references += Reference)*
'}'
;
Reference:
'reference' name = ValidID ':' type = Class ('#' opposite = [Reference])?
;
所以我的问题是:
由于枚举字面量列表是ValidID,它似乎是用EStrings来表示的。该文档似乎没有处理 ECore 中原始类型的情况。如何检查文字中的非重复项,并在编辑器中充分报告(即错误应该在第一次出现重复的文字时)?
尽管我尽了最大努力,我还是无法为相反的参考编写自定义范围。由于 XText 使用反射来检索作用域方法,我怀疑我没有正确的方法:我试过
def scope_Reference_opposite(Reference context, EReference r),对吗?非常感谢一个例子,我相信我可以轻松地适应我的“真实”DSL。
非常感谢您的帮助,您将节省我大量时间在文档中一次又一次地寻找解决方案...
【问题讨论】:
标签: xtext