2016-11-17 8 views
-1

質問は明らかですが、私はちょうどXtextで始まっています。 したがって、xtextプロジェクトを作成し、mydsl.xtextファイルを実行した後。
eclipseの新しい反復を起動します。新しいプロジェクトに新しい.mydslファイルを作成します。しかし、私は次に何をすべきかわからない! .mydslファイルを実行するにはどうすればよいですか? DSLはどのように使用しますか?
Xtextのチュートリアルはすべて、DSLの作成後に終了し、使用方法を示していません。 私は次のようでしたthe 15 minutes Xtext tutorial
私のコードは日食で与えられたhello wordコードですが、この時点では特別なものはありません。Xtext .mydslファイルを実行するには?

+0

新しいEclipseインスタンスが開いたら、新しいプロジェクトを作成し、その内部にDSLファイル拡張子を持つ新しいファイルを作成します。すべてを正しく実行した場合、このファイルはDSLのXtextエディタで開き、編集は文法で指定されているように動作します。 – lwi

答えて

0

Xtextプロジェクトの結果は、あなた自身でデザインされたドメイン固有言語で、IDE(EclipseまたはIntellijが私が知る限り)とヘッドレスのコード生成に解析、検証、リンク、および使用できます。

DSLに含める機能によっては、XTextプロジェクト内で別のクラスを変更して作成する必要があります。

は、通常、最初のステップは、次のとおりです。

  • は、あなたのDSLを解析する方法を指定し、構文的に見て、あなたの文法(.xtextファイル)を作成します。
  • ラン文法の言語生成(右.xtextファイルをクリック - >として実行 - >のXtextの成果物を生成する)
  • ラン(として実行 - > Eclipseのアプリケーション)別の日食のインスタンスのアクションであなたの文法を参照するには。そのためには、新しいプロジェクトを作成し、DSLファイルがプロジェクト内で終わるファイルを配置します。プロジェクトにDSLプロジェクトの性質を追加するダイアログが表示されます。同意してファイルを編集してみてください。このファイルはxtext文法で指定されたとおりに動作するはずです。
+0

私は自分自身を間違って表明している可能性がありますので、申し訳ありません。私は次のステップについて尋ねています。 プロジェクトとファイルを作成しましたが、DSLファイルが終了していて、期待どおりに動作しています。しかし、私は最後のファイルを実行haw。私のDSLを使用しているものです。私は、私のプロジェクトがMavenやGraleを実行する方法を期待できると思っていました。 –

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に基づいて生成したばかりのファイルがあります。

関連する問題