1

我在 Xtext 中创建的数据类型有问题。问题在于这个函数:

    «FOR e: bla.EAllAttributes»
      «e.EType.name» «e.name»;
    «ENDFOR»

这个 for 循环只为 e.EType.name 返回 EInt 或 EString。但我需要在我的 DSL 中创建的终端规则/数据类型,如 double、boolean 等。似乎每个带有字符串表达式的终端规则都以 EString 形式返回,只有数字的规则以 EInt 形式返回。枚举被正确返回,但......

预先感谢您的帮助。

4

1 回答 1

2

在手册中有一节解释您的问题。请参阅“参考文档”、“语法语言”、“语法”、“规则”、“终端规则”、“返回类型”:

每个终端规则返回一个原子值(Ecore EDataType)。默认情况下,假定应该返回 ecore::EString) 的一个实例。但是,如果您想提供不同的类型,您可以指定它。

该部分还概述了您必须提供的值转换器的语法更改和注册。

还有另一个部分“数据类型规则”,基本上说它与“终端规则”情况相同,并将您转发到“值转换器”部分。

于 2012-12-23T18:30:18.237 回答