我需要以编程方式将符合XText语法的文本转换为符合XText从同一语法生成的Ecore元模型的AST。
我知道XText还会生成实现此类解析器的Java类,但是我既不知道它们在哪里,也不清楚如何使用它。
最佳答案
在Eclipse Wiki的Xtext page上可以找到关于此问题的完整答案。
new org.eclipse.emf.mwe.utils.StandaloneSetup().setPlatformUri("../");
Injector injector = new MyDslStandaloneSetup().createInjectorAndDoEMFRegistration();
XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
Resource resource = resourceSet.createResource(URI.createURI("dummy:/example.mydsl"));
InputStream in = new ByteArrayInputStream("type foo type bar".getBytes());
resource.load(in, resourceSet.getLoadOptions());
Model model = (Model) resource.getContents().get(0);
将文件扩展名(
mydsl
)更改为您自己的语言扩展名。