有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何从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) 个答案

  1. # 1 楼答案

    你找到的解释器是旧的Xtend1语言的,这不是你要找的

    您所指的新Xtend已编译,因此没有解释器

    但是,您可以使用Xbase构建一种解释表达式语言See the documentationand Github举一个例子,说明如何做到这一点。然后可以从Java运行表达式语言的解释器