【问题标题】:Xtext typesafe variable qualifierXtext 类型安全变量限定符
【发布时间】:2016-10-18 19:53:54
【问题描述】:

我有一个用于具有多种类型变量的建模语言的 xtext 语法。在某些情况下,我想界定变量可以具有的类型。 当前的工作流程是只使用一个变量限定符(如下面的语法)并使用一个验证器来只允许我想要的类型。然后每次我访问引用时,我都必须明确地转换它。

有没有更好的解决方案?

VariableReference:
    ref=[Variable]
;
VariableQualifier:
    (namespace+=NamespaceReference '.')* element=VariableReference
;
EnumerationReference:
    ref=[Enumeration]
;
EnumerationQualifier:
    (namespace+=NamespaceReference '.')* element=EnumerationReference
;
NamespaceReference:
    ref=[Namespace]
;

【问题讨论】:

    标签: grammar xtext


    【解决方案1】:

    此类问题的一种通用模式是在语法上拥有一个通用引用,该引用指向所有可能目标的抽象超类型(变量|枚举|命名空间的通用超类型)。

    例如:

    VariableReference:
       ref=[AbstractElement] ({VariableReference.parent=current} '.' ref=[AbstractElement])*;
    

    另请注意,通常并不真正需要建模和引用命名空间。您可以改为使用事物的完全限定名称。

    例如

    VariableReference:
       ref=[AbstractElement|QualifiedName]
    

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多