我有一個的Xtext DSL,我想重複使用的規則,終端等在我.xtext文件中定義生成對參與項目的其他一些工具的配置文件。配置文件使用類似於BNF的語法,所以它與實際的Xtext內容非常相似,並且它只需要最少的轉換。從理論上講,我可以很容易地編寫一個腳本,將解析的Xtext吐出我的配置...的Xtext/EMF怎麼辦模型到模型轉換?
的問題是,我怎麼去,使之與整個生態系統配合實現它?換句話說 - 如何在Xtext/EMF中進行模型到模型的轉換?
我有一個的Xtext DSL,我想重複使用的規則,終端等在我.xtext文件中定義生成對參與項目的其他一些工具的配置文件。配置文件使用類似於BNF的語法,所以它與實際的Xtext內容非常相似,並且它只需要最少的轉換。從理論上講,我可以很容易地編寫一個腳本,將解析的Xtext吐出我的配置...的Xtext/EMF怎麼辦模型到模型轉換?
的問題是,我怎麼去,使之與整個生態系統配合實現它?換句話說 - 如何在Xtext/EMF中進行模型到模型的轉換?
如果你同時擁有的元模型(Ecore元,XSD,...),你最好的拍攝是使用ATL(http://www.eclipse.org/atl/)。
如果我理解你糾正你想從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);
}