0

Xtext に DSL があり、.xtext ファイルで定義されているルール、ターミナルなどを再利用して、プロジェクトに含まれる他のツールの構成ファイルを生成したいと考えています。構成ファイルは BNF に似た構文を使用するため、実際の Xtext コンテンツに非常に似ており、必要な変換は最小限です。理論的には、Xtext を解析して構成を吐き出すスクリプトを簡単に作成できます...

問題は、エコシステム全体に適合するように実装するにはどうすればよいかということです。言い換えれば、Xtext/EMF でモデルからモデルへの変換を行う方法は?

4

2 に答える 2

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 に答える
1

両方のメタモデル (ecore、xsd、...) がある場合、最善の方法は ATL ( http://www.eclipse.org/atl/ ) を使用することです。

于 2012-11-14T10:50:07.767 に答える