簡體   English   中英

如何運行Xtext .mydsl文件?

[英]How to run the Xtext .mydsl file?

這個問題似乎很明顯,但是我只是從Xtext開始。 因此,在創建xtext項目並運行mydsl.xtext文件之后。
它啟動了新的eclipse迭代。 我在一個新項目中創建一個新的.mydsl文件。 但是我不知道下一步該怎么做! 如何運行.mydsl文件? 我如何使用我的DSL ??
創建DSL后,所有Xtext教程都將停止,並且不顯示如何使用它。 我遵循了15分鍾的Xtext教程
我的代碼是ecl​​ipse給出的hello字代碼,目前還沒有什么特別的。

如果您想讓Java Main讀取模型並執行生成器,則可以查看此代碼段

package org.eclipse.xtext.example.domainmodel;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.xtext.generator.GeneratorContext;
import org.eclipse.xtext.generator.GeneratorDelegate;
import org.eclipse.xtext.generator.IGeneratorContext;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.util.CancelIndicator;
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.xtext.validation.IResourceValidator;
import org.eclipse.xtext.validation.Issue;

import com.google.common.collect.Lists;
import com.google.inject.Injector;

/**
 * @author dietrich - Initial contribution and API
 */
public class Main {

    public static void main(String[] args) {
        // TODO traverse directory
        List<String> files = Lists.newArrayList("model/a.dmodel", "model/b.dmodel");
        Injector injector = new DomainmodelStandaloneSetup().createInjectorAndDoEMFRegistration();
        ResourceSet rs = injector.getInstance(ResourceSet.class);
        ArrayList<Resource> resources = Lists.newArrayList();
        for (String file : files) {
            Resource r = rs.getResource(URI.createFileURI(file), true);
            resources.add(r);
        }

        IResourceValidator validator = injector.getInstance(IResourceValidator.class);
        for (Resource r : resources) {
            List<Issue> issues = validator.validate(r, CheckMode.ALL, CancelIndicator.NullImpl);
            for (Issue i : issues) {
                System.out.println(i);
            }
        }

        GeneratorDelegate generator = injector.getInstance(GeneratorDelegate.class);
        JavaIoFileSystemAccess fsa = injector.getInstance(JavaIoFileSystemAccess.class);
        fsa.setOutputPath("src-gen-code/");
        GeneratorContext context = new GeneratorContext();
        context.setCancelIndicator(CancelIndicator.NullImpl);

        for (Resource r : resources) {
            generator.generate(r, fsa, context);
        }
    }

}

保存時。 您暫時打開的編輯器上的yourdsl文件,它將自動構建它。 一旦成功構建而沒有錯誤,您的工作區中的項目內將有一個名為src-gen的目錄。 在那里,您將擁有剛剛基於yourdsl Generator.xtend生成的dsl文件。

Xtext項目的結果是由您自己設計的領域特定語言,可以對其進行解析,驗證,鏈接並用於在IDE(據我所知為Eclipse或Intellij)內​​部生成代碼,並且無頭。

根據您希望在DSL中擁有的功能,您必須在XText項目中更改並創建不同的類。

通常,第一步包括:

  • 創建您的語法( .xtext文件),以指定應如何解析DSL並以語法方式顯示。
  • 運行語法的語言生成(右鍵單擊.xtext文件->運行方式->生成Xtext工件)
  • 運行另一個eclipse實例(以-> Eclipse Application運行)以查看您的語法。 為此,創建一個新項目,並在文件中放入一個DSL文件結尾的文件。 對話框將要求您將DSL項目性質添加到項目中。 同意並嘗試編輯文件。 該文件的行為應與您的xtext語法中指定的相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM