java - xtend toEnumerateType/通过 xtend 生成 Java 枚举的示例?

标签 java enums xtext xtend

我需要使用 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/

相关文章:

java - 内部静态枚举作为泛型类型?

eclipse - 收集要安装的项目时出错 : osgi. bundle,org.eclipse.sdk,4.2.0.v201206081400

java - 在 xtext 中创建对象

dsl - XText w/XBase - 初始化生成的变量

java - 导出后从任何位置加载任何库

java - GUI netbeans、数组和 jlist

java - 编写按类获取/返回任何枚举常量的方法

enums - Jbeahve - 转换枚举参数

java - 为什么ArrayList的默认容量是10?

java - 如何在 JDO 中进行批量 Google DataStore 键查找查询