2016-11-17 21 views
-1

這個問題似乎很明顯,但我只是從Xtext開始。 因此在創建xtext項目並運行mydsl.xtext文件之後。
它啓動了一個新的eclipse迭代。我在一個新項目中創建一個新的.mydsl文件。但我不知道下一步該怎麼做!我如何運行.mydsl文件? 我如何使用我的DSL
所有Xtext教程在創建DSL後停止,並且不顯示如何使用它。 我正在關注the 15 minutes Xtext tutorial
我的代碼是由eclipse給出的hello字代碼,在這一點上沒什麼特別的。如何運行Xtext .mydsl文件?

+0

當新的eclipse實例打開時,創建一個新項目並在裏面創建一個帶有DSL文件擴展名的新文件。如果你一切正確,這個文件將用你的DSL的Xtext編輯器打開,編輯應該像你的語法中指定的一樣工作。 – lwi

回答

0

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

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

通常第一個步驟包括:

  • 創建你的語法(.xtext文件),指定你的DSL應該如何解析和語法上看起來。
  • 運行的語言生成的語法(右鍵點擊.xtext文件 - >運行爲 - >產生的Xtext文物)
  • 運行另一個Eclipse實例(如運行 - > Eclipse的應用程序)在行動中看到你的語法。爲此,創建一個新項目,並將DSL文件的文件放在項目中。對話框會要求您將DSL項目的性質添加到項目中。同意並嘗試編輯該文件。這個文件應該像xtext語法中指定的那樣工作。
+0

我可能錯誤地表達了自己,所以很抱歉。我在問下一步。 我已經創建了項目和我的DSL文件結尾的文件,它的行爲如預期。但嗨,我運行最後一個文件。那個使用我的DSL的人。我以爲期望可以給我一種執行我的項目maven或gradle的方法。 –

0

如果你想要一個Java主讀模式並執行發電機當你保存你可以看看這個片斷

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); 
     } 
    } 

} 
0

yourdsl文件在你暫時打開的編輯器上,它會自動構建它。一旦它成功建立並且沒有錯誤,你的工作區中就會有一個名爲src-gen的目錄。在那裏,您將擁有您的dsl根據您的yourdsl Generator.xtext生成的文件。