module de.ugoe.cs.swe.bnftools.Ebnf import org.eclipse.emf.mwe.utils.* import org.eclipse.xtext.generator.* import org.eclipse.xtext.ui.generator.* var grammarURI = "classpath:/de/ugoe/cs/swe/bnftools/Ebnf.xtext" var file.extensions = "bnf" var projectName = "de.ugoe.cs.swe.bnftools.ebnf" var runtimeProject = "../${projectName}" Workflow { bean = StandaloneSetup { platformUri = "${runtimeProject}/.." } component = DirectoryCleaner { directory = "${runtimeProject}/src-gen" } component = DirectoryCleaner { directory = "${runtimeProject}.ui/src-gen" } component = Generator { pathRtProject = runtimeProject pathUiProject = "${runtimeProject}.ui" 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 = "uri to genmodel, uri to next genmodel" } // the serialization component fragment = parseTreeConstructor.ParseTreeConstructorFragment {} // a custom ResourceFactory for use with EMF fragment = resourceFactory.ResourceFactoryFragment { fileExtensions = file.extensions } // the following fragment tries to use the Antlr Generator fragment which can be installed via update manager from http://download.itemis.com/updates/ fragment = AntlrDelegatingFragment {} /* If you don't want to use the Antlr fragment for some reason, remove the antlr fragment and uncomment the packrat parser fragment below. fragment = parser.PackratParserFragment {} */ // check-based API for validation /* fragment = validation.CheckFragment {} */ // 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 {} // formatter API // skip it as it is not sufficient for our case... // fragment = formatting.FormatterFragment {} // labeling API fragment = labeling.LabelProviderFragment {} // outline API fragment = outline.TransformerFragment {} fragment = outline.OutlineNodeAdapterFactoryFragment {} fragment = outline.QuickOutlineFragment {} // java-based API for content assistance fragment = contentAssist.JavaBasedContentAssistFragment {} // the following fragment tries to use the Antlr based content assist // fragment which can be downloaded from http://www.itemis.com // and will be ignored if it's not available. fragment = DelegatingGeneratorFragment { delegate = "de.itemis.xtext.antlr.XtextAntlrUiGeneratorFragment" message="You are generating without ANTLR. " } fragment = builder.BuilderIntegrationFragment {} // project wizard (optional) /* fragment = projectWizard.SimpleProjectWizardFragment { generatorProjectName = "${projectName}.generator" modelFileExtension = file.extensions } */ // quickfix API fragment = quickfix.QuickfixProviderFragment {} } } }