[英]How to add custom import statements in the generated java file in xtext using jvmmodelInferrer?
[英]How to invoke Xtext parser/JvmModelInferrer from a Java project
我已经实现了一个简单的小DSL,它通过使用JvmModelInferrer方法从输入文件生成类。 我试图找出如何在常规Java项目的代码中调用解析器和代码genarator。 因此,在我的非Xtext项目的主类中的某些时候,我可以创建一个文件,将其传递给我的DSL的Xtext解析器/ codeGenerator,结果将类文件生成到我选择的文件夹中(在我的java项目中)。 此案例未在文档中介绍,因此非常感谢任何帮助,谢谢!
更新:到目前为止,我的代码如下所示:
private static IGenerator generator;
/**
* @param args
*/
public static void main(String[] args) {
// this line registers the EMF for our DSL
Injector injector = new HyRuleStandaloneSetup().createInjectorAndDoEMFRegistration();
ResourceSet rs = new ResourceSetImpl();
File file = new File(
"C:/Documents and Settings/chmamat2/runtime-EclipseXtext/hyrule.project/src/hyrule/project/main.hrule");
Resource resource = rs.getResource(URI.createURI(file.toURI().toString()), true);
//setup the generator
generator = injector.getInstance(IGenerator.class);
//setup the file system access
final EclipseResourceFileSystemAccess2 fsa = new EclipseResourceFileSystemAccess2();
generator.doGenerate(resource, fsa);
基本上,您可以将DSL作为EMF模型打开:创建EMF资源集,然后使用ResourceSet API打开文件(通过创建表示文件的文件或平台uri),并打开其内容。
但是,这仅在您不使用Xbase时才有效。 如果使用Xbase,则必须使用Xtext API提供的Guice注入器来实例化ResourceSet。 如果初始化ResourceSet,它的工作方式与以前相同。
要使用注入器,请使用StandaloneSetup类对其进行实例化 - 如果您计划将Eclipse IDE中的代码与您自己的编辑器一起使用,或者通过向基于Xtext的执行工厂注册eclipse扩展,请不要这样做。 例如,在我的Xtext Reflective Tree编辑器项目中查看已注册的编辑器 。
要调用代码生成器,您还有以下几种可能性:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.