0

我在 Xtext 中有一个 DSL,我想重用我的 .xtext 文件中定义的规则、终端等,为项目中涉及的其他一些工具生成配置文件。配置文件使用类似于 BNF 的语法,因此它与实际的 Xtext 内容非常相似,并且需要最少的转换。从理论上讲,我可以轻松编写一个脚本来解析 Xtext 并吐出我的配置......

问题是,我该如何实施它以适应整个生态系统?换句话说 - 如何在 Xtext/EMF 中进行模型到模型的转换?

4

2 回答 2

1

如果你有两个元模型(ecore,xsd,...),你最好的办法是使用 ATL(http://www.eclipse.org/atl/)。

于 2012-11-14T10:50:07.767 回答
1

如果我理解你是正确的,你想从 xtext 模型转到它的 EMF 模型。这是实现此目的的代码示例,在必要时替换您的特定模型。

    public static BeachScript loadScript(String file) throws BeachScriptLoaderException { 
    try {
        Injector injector = new BeachStandaloneSetup().createInjectorAndDoEMFRegistration();
        XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
        resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
        Resource resource = resourceSet.createResource(URI.createURI("test.beach"));
        InputStream in = new ByteArrayInputStream(file.getBytes());
        resource.load(in, resourceSet.getLoadOptions());
        BeachScript model = (BeachScript) resource.getContents().get(0);
        return model;

    } catch (Exception e) {
        throw new BeachScriptLoaderException("Exception Loading Beach Script " + e.toString(),e );
    }
于 2012-12-01T08:08:32.447 回答