【问题标题】:How to invoke Xtend code from Java?如何从 Java 调用 Xtend 代码?
【发布时间】: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 类。

【问题讨论】:

标签: java code-generation xtend


【解决方案1】:

您找到的解释器是针对旧的 Xtend1 语言的,这不是您要寻找的。​​p>

你所指的新Xtend已经编译,所以没有解释器。

但是,您可以使用 Xbase 构建解释型表达式语言。 See the documentationand Github 以获取有关如何执行此操作的示例。然后你可以从 Java 中运行你的表达式语言的解释器。

【讨论】:

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