【问题标题】:code generation with Xtend使用 Xtend 生成代码
【发布时间】:2014-11-24 20:18:43
【问题描述】:

我正在实现自己的 DSL 并使用 Xtend 生成 C 代码。我已经使用 XPand/Xtend 开发了小型原型,但现在我需要将原型转换为 XTend。

在 Xpand 中,我曾经定义“生成”函数来生成 C 文件,但我不知道如何使用 XTend 做类似的事情。在这方面的任何帮助将不胜感激。

«DEFINE Generate FOR dsl::defs::module»
«FILE "Com.c" -»
/* DATE «dateString()» */
«EXPAND COM_C::COM_Def_C »
«ENDFILE»
«ENDDEFINE»

感谢和问候, Hemal Bavishi

【问题讨论】:

  • 我得到了一些提示 - 与 XPand 不同的是,您在其中定义文件的类型,您在缓冲区中获取数据,然后您需要将数据转储到文件中。这就是 JET 等其他引擎的工作方式。我将尝试记录 XPand 和 XTend 之间的区别并上传相同的内容。我喜欢这项技术,并将很快上传示例。享受:)

标签: xtend


【解决方案1】:

你可以这样做:

def xtendFunc() '''
/* DATE «dateString()» */
'''

def xtendFunc() {
var = '''/* DATE «dateString()» */'''
return var
}

(假设 'dateString()' 函数在同一个类中) 这在 Xtend 中是使用模板表达式调用的(括在三个引号 '''...''' 中)。对于第一种情况,您可以将函数的结果包含在 val(Xtend 中的最终变量)中。然后对另一个模板 COM_C:COM_Def_C 使用另一个函数。将结果附加到变量中,并使用简单的 java 写入文件。

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多