如何从Java调用Xtend代码?
我有一个代码生成器,它采用语法树并将其转换为源文件(文本)
基本上,它遍历树的所有节点,将节点映射到文本,并将结果文本附加到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 scriptaScript
并返回结果
我如何实现这种方法
更新1:Here我找到了这段代码,它似乎在Java中运行Xtend代码:
// setup
XtendFacade f = XtendFacade.create("my::path::MyExtensionFile");
// use
f.call("sayHello",new Object[]{"World"});
但是我在Eclipse的类型层次结构视图中找不到XtendFacade
类
# 1 楼答案
你找到的解释器是旧的Xtend1语言的,这不是你要找的
您所指的新Xtend已编译,因此没有解释器
但是,您可以使用Xbase构建一种解释表达式语言See the documentationand Github举一个例子,说明如何做到这一点。然后可以从Java运行表达式语言的解释器