在Eclipse Modeling Framework(EMF)中,有ecore文件来定义模型。从这个模型可以生成代码(和其他东西)。该生成步骤由“EMF生成器模型”描述。现在我的问题是,为什么这个文件被称为“模型”而不是“配置”或类似的东西。在我看来,它没有模拟任何东西,但它描述了一代人......
答案 0 :(得分:3)
EMF的当前实现是使用bootstrapping方法创建的。 首先,描述存储在ecore和genmodel中的数据的模型是手工编写的。一旦EMF足够稳定,这些都是用EMF本身建模和生成的。 这意味着,ecore和genmodel在各方面都是EMF模型。
这与开发新编程语言的编译器类似。初始实现必须用第二语言编写,但只要编译器完成,您就可以使用新语言编写新实现,添加功能,然后使用先前版本的编译器的二进制文件来创建下一个。
来自EMF的创始人Ed Merks:
毕竟,EMF的生成器模型生成Ecore模型和它自己,所以我们实际上无法删除生成的代码。我们需要它来引导环境。这是棘手的问题。 http://ed-merks.blogspot.de/2008/10/hand-written-and-generated-code-never.html
答案 1 :(得分:3)
虽然其他答案完全正确,但“模型”和“配置”之间还有一个区别。所有EMF模型(包括此生成器模型)都可以通过每个已有的EMF工具进行修改,转换等等(因为它们都使用相同的元模型)。
与配置只能由其他工具读取的情况相比,这是一个巨大的差异,如果它知道配置序列化的确切格式。
因此,您可以创建生成器模型的UML图,您可以在基于模型的图形编辑器中使用它,您可以使用模型到模型转换插件对其进行转换,您可以将其放入EMFstore,...这些工具中的任何一个都是专门为 模型准备的。
答案 2 :(得分:2)
实际上,genmodel
以及ecore
文件在技术上也是EMF模型。因此,以这种方式调用并不奇怪。
事实上,您必须了解EMF允许描述任何类型的结构化信息。所以它可以用来描述你自己的语义,描述代码生成配置甚至描述自己(ecore)。