[英]How to run the Xtext .mydsl file?
這個問題似乎很明顯,但是我只是從Xtext
開始。 因此,在創建xtext項目並運行mydsl.xtext
文件之后。
它啟動了新的eclipse迭代。 我在一個新項目中創建一個新的.mydsl文件。 但是我不知道下一步該怎么做! 如何運行.mydsl
文件? 我如何使用我的DSL
??
創建DSL
后,所有Xtext教程都將停止,並且不顯示如何使用它。 我遵循了15分鍾的Xtext教程
我的代碼是eclipse給出的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工件)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.