All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jnario.spec.GenerateSpec.mwe2 Maven / Gradle / Ivy

The newest version!
module org.jnario.spec.GenerateSpec

import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*
import org.eclipse.xtend.core.parser.JFlexGeneratorFragment
import org.eclipse.xtend.core.parser.JFlexLoader

var grammarURI = "classpath:/org/jnario/spec/Spec.xtext"
var file.extensions = "spec"
var projectName = "org.jnario.spec"
var runtimeProject = "../${projectName}"
var backtrack = false
var memoize = false

Workflow {
	bean = StandaloneSetup {
		scanClassPath = true
		platformUri = "${runtimeProject}/.."
		registerGenModelFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
		registerGenModelFile = "platform:/resource/org.eclipse.xtend.core/model/Xtend.genmodel"
		registerGenModelFile = "platform:/resource/org.jnario/model/Jnario.genmodel"
	}

	bean = StandaloneSetup {
		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : resourceSet {}
		scanClassPath = true
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
		registerEcoreFile = "platform:/resource/org.eclipse.xtend.core/model/Xtend.ecore"
		registerEcoreFile = "platform:/resource/org.jnario/model/Jnario.ecore"
		registerEcoreFile = "platform:/resource/${projectName}/model/Spec.ecore"
	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}/emf-gen"
	}

	component = org.jnario.PatchedEcoreGenerator {
		genModel = "platform:/resource/${projectName}/model/Spec.genmodel"
		srcPath = "platform:/resource/${projectName}/src"
		srcPath = "platform:/resource/org.eclipse.xtext.common.types/src"
		srcPath = "platform:/resource/org.eclipse.xtext.xbase/src"
		srcPath = "platform:/resource/org.eclipse.xtend.core/src"
		srcPath = "platform:/resource/org.jnario/src"
	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}/src-gen"
	}

	component = DirectoryCleaner {
		directory = "${runtimeProject}.ui/src-gen"
	}
	
		component = JFlexLoader : jFlexMain {}
	

	component = Generator {
		pathRtProject = runtimeProject
		pathUiProject = "${runtimeProject}.ui"
		pathTestProject = "../../tests/org.jnario.tests"
		projectNameRt = projectName
		projectNameUi = "${projectName}.ui"
		language = {
			forcedResourceSet = resourceSet
			uri = grammarURI
			fileExtensions = file.extensions

			// Java API to access grammar elements (required by several other fragments)
			fragment = grammarAccess.GrammarAccessFragment {}

			// Serializer 2.0
			fragment = serializer.SerializerFragment {
				generateStub = false
			}

			// a custom ResourceFactory for use with EMF
			fragment = resourceFactory.ResourceFactoryFragment {
				fileExtensions = file.extensions
			}

			// The antlr parser generator fragment.
			fragment = parser.antlr.XtextAntlrGeneratorFragment {
				options = auto-inject {}
				antlrParam = "-Xconversiontimeout"
				antlrParam = "10000"
				options = {
					classSplitting = 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.ImportNamespacesScopingFragment {}
			fragment = exporting.QualifiedNamesFragment {}
			fragment = builder.BuilderIntegrationFragment {}

			// generator API
			fragment = generator.GeneratorFragment {
				generateMwe = false
				generateJavaMain = false
			}

			// 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 {
				options = auto-inject {}
				antlrParam = "-Xconversiontimeout"
				antlrParam = "10000"
				options = {
					classSplitting = true
				}
			}

			// generates junit test support classes into Generator#pathTestProject
			fragment = junit.Junit4Fragment {}

			// 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 {
				generateXtendInferrer = false
			}

			// provides a preference page for template proposals
			fragment = templates.CodetemplatesGeneratorFragment {}

			// rename refactoring
			fragment = refactoring.RefactorElementNameFragment {
				useJdtRefactoring = true
			}

			// provides a compare view
			fragment = compare.CompareFragment {
				fileExtensions = file.extensions
			}
			
//			fragment = JFlexGeneratorFragment auto-inject {
//				patternPath = "/org/eclipse/xtend/core/parser/antlr/internal/patterns.incl"
//				additionalRulePath = "/org/eclipse/xtend/core/parser/antlr/internal/rules.incl"
//			}
//			fragment = JFlexGeneratorFragment auto-inject {
//				ui = true
//				patternPath = "/org/eclipse/xtend/core/parser/antlr/internal/patterns.incl"
//				additionalRulePath = "/org/eclipse/xtend/core/parser/antlr/internal/rules.incl"
//			}
//			

		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy