我需要使用 xtend 2.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 xbase
EnumModel:
pckg=EnumPackage;
EnumPackage:
{EnumPackage}
importSection=XImportSection?
'package' name=QualifiedName '{'
(enums+=MyEnum)*
'}';
MyEnum:
'enum' name=ValidID '{' (items+=ValidID)* '}';
使用此语法,DSL 可能如下所示:
package de.mytest.enumpackage {
enum MyEnumTest {
YES
NO
MAYBE
}
}
预期生成的 Java 枚举将是:
package de.mytest.enumpackage;
public enum MyEnumTest {
YES,
NO,
MAYBE
}
我尝试使用 toEnumerateType() 实现 xtend 方法 infer(),但没有成功。另外我找不到任何例子!我的 google-fu 似乎不够好!
使用 toEnumerateLiteral(),它也可以在 toClass() 内部工作,但它显然会生成一个类......
你有什么想法吗?
提前致谢,迈克尔
最佳答案
这应该对你有用:
myEnum.toEnumerationType(myEnum.name) [
myEnum.items.forEach [ literal |
myEnum.toEnumerationLiteral(literal)
]
]
关于java - xtend toEnumerateType/通过 xtend 生成 Java 枚举的示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958710/