2012-12-23 43 views
1

我在创建数据类型时遇到了问题。问题出在这个函数内:Xtend/Xtext数据类型

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

这个for-loop只为e.EType.name返回EInt或EString。但我需要在我的DSL中创建的终端规则/数据类型,比如double,boolean等等。看起来每个带有字符串表达式的终端规则都是以EString形式返回的,而只有数字的规则以EInt形式返回。枚举正确返回,虽然...

在此先感谢您的帮助。

回答

2

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

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

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

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