JvmModelInferrer 방식을 사용하여 입력 파일에서 클래스를 생성하는 간단한 작은 DSL을 구현했습니다. 나는 일반 자바 프로젝트의 코드 내에서 파서와 코드 제너레이터를 어떻게 호출 할 수 있는지 알아 내려고한다. 그래서 내 비 -Xtext 프로젝트의 메인 클래스의 어느 시점에서 파일을 만들어서 DSL 용 Xtext 파서/codeGenerator로 전달하면 결과는 클래스 파일이 원하는 폴더에 생성됩니다 (내 자바 프로젝트 내에서). 이 사례는 문서에서 다루지 않으므로 도움이 될 것입니다. 고마워요!Java 프로젝트에서 Xtext 파서/JvmModelInferrer를 호출하는 방법
UPDATE : 내 코드는 지금까지 다음과 같습니다
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);
감사합니다, 나는 IGenerator 주입 및 doGenerate (Resource input, IFileSystemAccess fsa) 메서드를 프로그래밍 방식으로 호출하는 두 번째 접근 방식을 작업하고 있지만 IFileSystemAccess 인스턴스를 만들거나 수없는 것 같습니다. 인젝터 ... 어떤 아이디어? –
지금까지 내 코드를 표시하도록 질문을 업데이트했습니다. 모두 예외를 던지고있는 fsa를 만드는 것과는 별개의 것으로 보인다. –
코드 생성기에서 작동 할 루트 폴더를 제공하는 방식으로 파일 시스템 액세스의 수동 설정이 필요합니다. 그러나 Eclipse 외부에서 작업하는 경우 EclipseResource 기반 클래스 대신 JavaIOFileSystemAccess 클래스를 사용하고 싶습니다. –