如何实现xText的代间隙模式?

时间:2013-04-17 16:10:22

标签: xtext xtend

目前,我正在修改使用xText解析自定义DSL的项目。我想为生成的类添加功能,但遗憾的是我无法实现生成间隙模式。我用这篇文章作为基础:

http://heikobehrens.net/2009/04/23/generation-gap-pattern/

我的问题是我们正在使用大量片段来自定义org.eclipse.xtext.generator.Generator。我似乎无法将这些片段重用于org.eclipse.xpand2.Generator。

总之:

  • 如何实现xtext生成器的代间隙模式
  • OR 如何将片段与xpand2-Generator
  • 一起使用
  • OR 是否有第三种解决方案允许我使用片段并实现代沟模式?

在研究此事后,我彻底感到困惑。

1 个答案:

答案 0 :(得分:1)

本文中描述的代沟模式几乎适用于任何通用代码生成框架。 Xtext也不例外。

除此之外,Xtext还提供了另一种漂亮的解决方案来填补代沟。这是Xbase。但是Xbase强迫你与java紧密集成,所以这并不总是另类。

考虑以下步骤将代沟模式添加到现有Xtext项目中:

  • 找到带有间隙的生成文件(使用您想要手动编写的代码片段)。让它成为例如MyClass的。
  • 改变发电机
    • 生成的文件重命名为AbstractMyClass。
    • 将abstract关键字添加到AbstractMyClass类定义中。
    • 将差距转移到单一方法。
    • 为差距生成抽象方法。
    • 从生成的代码中调用抽象方法。
  • 手动添加'MyClass扩展AbstractMyClass'并实现抽象gap-method

如果您对某些Xtend2代码有具体问题,请在此处或在Xtend论坛中发布问题。