module com.perforce.example.p4dsl.GenerateP4Dsl import org.eclipse.emf.mwe.utils.* import org.eclipse.xtext.generator.* import org.eclipse.xtext.ui.generator.* var grammarURI = "classpath:/com/perforce/example/p4dsl/P4Dsl.xtext" var file.extensions = "p4" var projectName = "com.perforce.example.p4dsl" var runtimeProject = "../${projectName}" Workflow { bean = StandaloneSetup { scanClassPath = true platformUri = "${runtimeProject}/.." // The following two lines can be removed, if Xbase is not used. registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage" registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel" } component = DirectoryCleaner { directory = "${runtimeProject}/src-gen" } component = DirectoryCleaner { directory = "${runtimeProject}.ui/src-gen" } component = Generator { pathRtProject = runtimeProject pathUiProject = "${runtimeProject}.ui" pathTestProject = "${runtimeProject}.tests" projectNameRt = projectName projectNameUi = "${projectName}.ui" language = { uri = grammarURI fileExtensions = file.extensions // Java API to access grammar elements (required by several other fragments) fragment = grammarAccess.GrammarAccessFragment {} // generates Java API for the generated EPackages fragment = ecore.EcoreGeneratorFragment { // referencedGenModels = " // platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel, // platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel // " } // Serializer 2.0 fragment = serializer.SerializerFragment { generateStub = false } // the serialization component (1.0) // fragment = parseTreeConstructor.ParseTreeConstructorFragment {} // a custom ResourceFactory for use with EMF fragment = resourceFactory.ResourceFactoryFragment { fileExtensions = file.extensions } // The antlr parser generator fragment. fragment = parser.antlr.XtextAntlrGeneratorFragment { // options = { // backtrack = true // } } // java-based API for validation fragment = validation.JavaValidatorFragment { // composedCheck = "org.eclipse.xtext.validation.ImportUriValidator" // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" } // scoping and exporting API // fragment = scoping.ImportURIScopingFragment {} // fragment = exporting.SimpleNamesFragment {} // scoping and exporting API fragment = scoping.ImportNamespacesScopingFragment {} fragment = exporting.QualifiedNamesFragment {} fragment = builder.BuilderIntegrationFragment {} // generator API fragment = generator.GeneratorFragment { generateMwe = false generateJavaMain = false } // formatter API fragment = formatting.FormatterFragment {} // labeling API fragment = labeling.LabelProviderFragment {} // outline API fragment = outline.OutlineTreeProviderFragment {} fragment = outline.QuickOutlineFragment {} // quickfix API fragment = quickfix.QuickfixProviderFragment {} // content assist API fragment = contentAssist.JavaBasedContentAssistFragment {} // generates a more lightweight Antlr parser and lexer tailored for content assist fragment = parser.antlr.XtextAntlrUiGeneratorFragment {} // generates junit test support classes into Generator#pathTestProject fragment = junit.Junit4Fragment {} // project wizard (optional) // fragment = projectWizard.SimpleProjectWizardFragment { // generatorProjectName = "${projectName}" // modelFileExtension = file.extensions // } // rename refactoring fragment = refactoring.RefactorElementNameFragment {} // provides the necessary bindings for java types integration fragment = types.TypesGeneratorFragment {} // generates the required bindings only if the grammar inherits from Xbase fragment = xbase.XbaseGeneratorFragment {} // provides a preference page for template proposals fragment = templates.CodetemplatesGeneratorFragment {} // provides a compare view fragment = compare.CompareFragment { fileExtensions = file.extensions } } } }