【发布时间】:2014-10-23 01:51:07
【问题描述】:
我有一个代码生成器,它采用语法树并将其转换为源文件(文本)。
基本上,它遍历树的所有节点,将节点映射到文本并将生成的文本附加到StringBuilder。
现在我希望使用Xtend 实现节点到文本映射器,如下所示:
public class NodeXMapper
{
private XtendRunner xtendRunner = ...;
public String map(final NodeX aNode)
{
return xtendRunner.runScript("def String map(NodeX aNode) {
''' «aNode.fieldX» - «aNode.fieldY» '''
}", aNode);
}
}
xtendRunner.runScript(String aScript, final Object... aParams)是一个方法,它将参数aParams传递给Xtend脚本aScript并返回结果。
如何实现该方法?
更新一:Here我找到了这段代码,似乎是用Java运行Xtend代码:
// setup
XtendFacade f = XtendFacade.create("my::path::MyExtensionFile");
// use
f.call("sayHello",new Object[]{"World"});
但我在 Eclipse 的 Type hiearchy 视图中找不到 XtendFacade 类。
【问题讨论】:
-
@KonstantinV.Salikhov 谢谢。该链接上的答案是“简单算术示例中包含解释器的简单示例”。我在 Eclipse 的示例项目中找不到简单的算术示例。它在哪里?
-
这是一个也使用 XTendFacade 的测试基类:github.com/eclipse/xtext/tree/master/examples/…,尽管它似乎不再在其他地方的存储库中。
标签: java code-generation xtend