xtend toEnumerateType/通过xtend生成Java枚举的示例?
我需要使用XTEND2.5通过DSL生成Java枚举。我的语法是这样的:xtend toEnumerateType/通过xtend生成Java枚举的示例?,java,enums,xtext,xtend,Java,Enums,Xtext,Xtend,我需要使用XTEND2.5通过DSL生成Java枚举。我的语法是这样的: grammar de.mytest.xtext.enumdsl.EnumDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations import "http://www.eclipse.org/emf/2002/Ecore" as ecore import "http://www.eclipse.org/xtext/xbase/Xbase" as x
grammar de.mytest.xtext.enumdsl.EnumDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
EnumModel:
pckg=EnumPackage;
EnumPackage:
{EnumPackage}
importSection=XImportSection?
'package' name=QualifiedName '{'
(enums+=MyEnum)*
'}';
MyEnum:
'enum' name=ValidID '{' (items+=ValidID)* '}';
package de.mytest.enumpackage {
enum MyEnumTest {
YES
NO
MAYBE
}
}
使用这种语法,DSL可以如下所示:
grammar de.mytest.xtext.enumdsl.EnumDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
EnumModel:
pckg=EnumPackage;
EnumPackage:
{EnumPackage}
importSection=XImportSection?
'package' name=QualifiedName '{'
(enums+=MyEnum)*
'}';
MyEnum:
'enum' name=ValidID '{' (items+=ValidID)* '}';
package de.mytest.enumpackage {
enum MyEnumTest {
YES
NO
MAYBE
}
}
预期的结果Java枚举为:
package de.mytest.enumpackage;
public enum MyEnumTest {
YES,
NO,
MAYBE
}
我尝试使用toEnumerateType()实现xtend方法infer(),但没有成功。我也找不到任何例子!我的谷歌fu似乎不够好
使用toEnumerateLiteral(),它也在toClass()内部工作,但它显然生成了一个类
你有什么想法吗
提前谢谢你,Michael这应该能帮到你:
myEnum.toEnumerationType(myEnum.name) [
myEnum.items.forEach [ literal |
myEnum.toEnumerationLiteral(literal)
]
]
非常感谢你的提示,塞巴斯蒂安。我不得不稍微修改一下。以下是最终对我有效的方法:-)