Merge pull request #800 from eclipse/se/migrate_runtime_test_langs

Migration of runtime test languages
This commit is contained in:
Sven Efftinge 2015-11-14 21:52:19 +01:00
commit 5ffce2bc14
17 changed files with 1197 additions and 75 deletions

View file

@ -35,7 +35,7 @@ import org.eclipse.xtext.parser.antlr.Lexer
import org.eclipse.xtext.parser.antlr.LexerBindings
import org.eclipse.xtext.service.LanguageSpecific
import org.eclipse.xtext.util.Modules2
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
import org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
@ -49,8 +49,10 @@ import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
import static extension org.eclipse.xtext.EcoreUtil2.*
import static extension org.eclipse.xtext.GrammarUtil.*
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
import com.google.inject.Injector
import com.google.inject.Module
class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
class IdeaPluginGenerator extends AbstractStubGeneratingFragment {
@Inject extension XtextGeneratorNaming
@Inject extension XbaseUsageDetector
@Inject ContentAssistGrammarNaming caNaming
@ -396,15 +398,28 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
}
def compileFileType(Grammar grammar) {
fileAccessFactory.createXtendFile(grammar.fileType, '''
class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»()
new() {
super(«grammar.ideaLanguage».INSTANCE)
if (isGenerateXtendStub) {
fileAccessFactory.createXtendFile(grammar.fileType, '''
class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»()
new() {
super(«grammar.ideaLanguage».INSTANCE)
}
}
}
''')
''')
} else {
fileAccessFactory.createJavaFile(grammar.fileType, '''
public class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»();
public «grammar.fileType.simpleName»() {
super(«grammar.ideaLanguage».INSTANCE);
}
}
''')
}
}
def compileLanguage(Grammar grammar) {
@ -422,29 +437,57 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
}
def compileStandaloneSetup(Grammar grammar) {
fileAccessFactory.createXtendFile(grammar.ideaStandaloneSetup, '''
class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
override createInjector() {
val runtimeModule = new «grammar.runtimeModule»()
val ideaModule = new «grammar.ideaModule»()
val mergedModule = «Modules2».mixin(runtimeModule, ideaModule)
return «Guice».createInjector(mergedModule)
if (isGenerateXtendStub) {
fileAccessFactory.createXtendFile(grammar.ideaStandaloneSetup, '''
class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
override createInjector() {
val runtimeModule = new «grammar.runtimeModule»()
val ideaModule = new «grammar.ideaModule»()
val mergedModule = «Modules2».mixin(runtimeModule, ideaModule)
return «Guice».createInjector(mergedModule)
}
}
}
''')
''')
} else {
fileAccessFactory.createJavaFile(grammar.ideaStandaloneSetup, '''
public class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
@Override
public «Injector» createInjector() {
«grammar.runtimeModule» runtimeModule = new «grammar.runtimeModule»();
«grammar.ideaModule» ideaModule = new «grammar.ideaModule»();
«Module» mergedModule = «Modules2».mixin(runtimeModule, ideaModule);
return «Guice».createInjector(mergedModule);
}
}
''')
}
}
def compileIdeaSetup(Grammar grammar) {
fileAccessFactory.createXtendFile(grammar.ideaSetup, '''
class «grammar.ideaSetup.simpleName» implements «ISetup» {
override createInjectorAndDoEMFRegistration() {
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized
new «grammar.ideaStandaloneSetup»().createInjector
if (generateXtendStub) {
fileAccessFactory.createXtendFile(grammar.ideaSetup, '''
class «grammar.ideaSetup.simpleName» implements «ISetup» {
override createInjectorAndDoEMFRegistration() {
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized
new «grammar.ideaStandaloneSetup»().createInjector
}
}
}
''')
''')
} else {
fileAccessFactory.createJavaFile(grammar.ideaSetup, '''
public class «grammar.ideaSetup.simpleName» implements «ISetup» {
@Override
public «Injector» createInjectorAndDoEMFRegistration() {
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized();
return new «grammar.ideaStandaloneSetup»().createInjector();
}
}
''')
}
}
def compileElementTypeProvider(Grammar grammar) {
@ -634,7 +677,7 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
«IF rule.named»
return new «'org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl'.typeRef»(node) {};
«ELSE»
return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'»(node) {};
return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'.typeRef»(node) {};
«ENDIF»
}
«FOR element : rule.EObjectElements»
@ -642,7 +685,7 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
«IF element.named»
return new «'org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl'.typeRef»(node) {};
«ELSE»
return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'»(node) {};
return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'.typeRef»(node) {};
«ENDIF»
}
«ENDFOR»
@ -689,18 +732,35 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
}
def JavaFileAccess compileCompletionContributor(Grammar grammar) {
fileAccessFactory.createXtendFile(grammar.completionContributor, '''
class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
new() {
this(«grammar.ideaLanguage».INSTANCE)
if (isGenerateXtendStub) {
fileAccessFactory.createXtendFile(grammar.completionContributor, '''
class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
new() {
this(«grammar.ideaLanguage».INSTANCE)
}
new(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
super(lang)
//custom rules here
}
}
new(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
super(lang)
//custom rules here
''')
} else {
fileAccessFactory.createJavaFile(grammar.completionContributor, '''
public class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
public «grammar.completionContributor.simpleName»() {
this(«grammar.ideaLanguage».INSTANCE);
}
public «grammar.completionContributor.simpleName»(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
super(lang);
//custom rules here
}
}
}
''')
''')
}
}
def TextFileAccess compileServicesISetup(Grammar grammar) {
fileAccessFactory.createTextFile(
@ -710,7 +770,11 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
}
def JavaFileAccess compileFacetConfiguration(Grammar grammar) {
val file = fileAccessFactory.createXtendFile(grammar.facetConfiguration)
val file = if (isGenerateXtendStub) {
fileAccessFactory.createXtendFile(grammar.facetConfiguration)
} else {
fileAccessFactory.createJavaFile(grammar.facetConfiguration)
}
file.importType("com.intellij.openapi.components.PersistentStateComponent".typeRef)
file.importType("com.intellij.openapi.components.State".typeRef)
file.importType("com.intellij.openapi.components.Storage".typeRef)
@ -724,11 +788,18 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
file.importType("org.eclipse.xtext.idea.facet.GeneratorConfigurationState".typeRef)
}
file.content = '''
@State(name = "«grammar.name»Generator", storages = #[
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)])
class «grammar.facetConfiguration.simpleName» extends «IF grammar.inheritsXbase»XbaseFacetConfiguration implements PersistentStateComponent<XbaseGeneratorConfigurationState>«ELSE»AbstractFacetConfiguration implements PersistentStateComponent<GeneratorConfigurationState>«ENDIF»{
«IF isGenerateXtendStub»
@State(name = "«grammar.name»Generator", storages = #[
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)])
«ELSE»
@State(name = "«grammar.name»Generator", storages = {
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)})
«ENDIF»
«IF !isGenerateXtendStub»public«ENDIF» class «grammar.facetConfiguration.simpleName» extends «IF grammar.inheritsXbase»XbaseFacetConfiguration implements PersistentStateComponent<XbaseGeneratorConfigurationState>«ELSE»AbstractFacetConfiguration implements PersistentStateComponent<GeneratorConfigurationState>«ENDIF»{
}
'''
@ -767,9 +838,16 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
}
def JavaFileAccess compileColorSettingsPage(Grammar grammar) {
fileAccessFactory.createXtendFile(grammar.colorSettingsPage, '''
class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
}
''')
if (isGenerateXtendStub) {
fileAccessFactory.createXtendFile(grammar.colorSettingsPage, '''
class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
}
''')
} else {
fileAccessFactory.createJavaFile(grammar.colorSettingsPage, '''
public class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
}
''')
}
}
}

View file

@ -34,7 +34,12 @@ class RuntimeProjectConfig extends BundleProjectConfig implements IRuntimeProjec
val relativePath = ecoreModel.path.substring(root.path.length).replace('\\', '/')
return CharMatcher.is('/').trimFrom(relativePath)
}
throw new RuntimeException('Could not derive the Ecore model folder from the project configuration. Please make sure that \'root\' is a prefix of \'ecoreModel\'.')
throw new RuntimeException('''
Could not derive the Ecore model folder from the project configuration.
Please make sure that \'root\' is a prefix of \'ecoreModel\'.
was (root='«root.path»', ecoreModel='«ecoreModel.path»')
''')
}
override initialize(Injector injector) {

View file

@ -24,6 +24,9 @@ class SubProjectConfig implements ISubProjectConfig {
@Accessors
boolean enabled
@Accessors
boolean overwriteSrc
@Accessors
String name
@ -72,19 +75,19 @@ class SubProjectConfig implements ISubProjectConfig {
override initialize(Injector injector) {
injector.injectMembers(this)
if (rootPath !== null) {
if (!rootPath.isNullOrEmpty) {
root = owner.newFileSystemAccess(rootPath, true)
root.initialize(injector)
}
if (metaInfPath !== null) {
if (!metaInfPath.isNullOrEmpty) {
metaInf = owner.newFileSystemAccess(metaInfPath, true)
metaInf.initialize(injector)
}
if (srcPath !== null) {
src = owner.newFileSystemAccess(srcPath, false)
if (!srcPath.isNullOrEmpty) {
src = owner.newFileSystemAccess(srcPath, overwriteSrc)
src.initialize(injector)
}
if (srcGenPath !== null) {
if (!srcGenPath.isNullOrEmpty) {
srcGen = owner.newFileSystemAccess(srcGenPath, true)
srcGen.initialize(injector)
}

View file

@ -94,6 +94,8 @@ abstract class AbstractAntlrGrammarGenerator {
«compileTokens(options)»
«compileLexerHeader(options)»
«compileKeywordRules(options)»
// Rules duplicated to allow inter-rule references
«compileTerminalRules(options)»
'''
@ -196,22 +198,28 @@ abstract class AbstractAntlrGrammarGenerator {
val allKeywords = allKeywords.sort.sortBy[-length]
val allTerminalRules = allTerminalRules
val synthetic_kw_alternatives = newArrayList
synthetic_kw_alternatives.addAll(allKeywords.indexed.map[
val ruleName = keywordHelper.getRuleName(value)
return '''(FRAGMENT_«ruleName»)=> FRAGMENT_«ruleName» {$type = «ruleName»; }'''
])
synthetic_kw_alternatives.addAll(allTerminalRules.indexed.map[
if (!isSyntheticTerminalRule(value) && !value.fragment) {
return '''(FRAGMENT_«value.ruleName»)=> FRAGMENT_«value.ruleName» {$type = «value.ruleName»; }'''
}
].filterNull.toList)
'''
«IF options.isBacktrackLexer»
SYNTHETIC_ALL_KEYWORDS :
«FOR kw: allKeywords.indexed»
(FRAGMENT_«keywordHelper.getRuleName(kw.value)»)=> FRAGMENT_«keywordHelper.getRuleName(kw.value)» {$type = «keywordHelper.getRuleName(kw.value)»; }
«IF kw.key != allKeywords.size || !allTerminalRules().isEmpty»|«ENDIF»
«ENDFOR»
«FOR rule : allTerminalRules.indexed»
«IF !isSyntheticTerminalRule(rule.value) && !rule.value.fragment»
(FRAGMENT_«rule.value.ruleName()»)=> FRAGMENT_«rule.value.ruleName()» {$type = «rule.value.ruleName()»; }
«IF rule.key != allTerminalRules.size»|«ENDIF»
«ENDIF»
«ENDFOR»
«FOR kw: synthetic_kw_alternatives SEPARATOR ' |'»
«kw»
«ENDFOR»
;
«FOR kw: allKeywords»
fragment FRAGMENT_«keywordHelper.getRuleName(kw)» : '«kw.toAntlrString()»';
«ENDFOR»
«ELSE»
«FOR rule:allKeywords»

View file

@ -32,13 +32,21 @@ class GrammarNaming {
protected def String getInternalParserPackage(Grammar it) {
parserPackage + ".internal"
}
protected def String getInternalLexerPackage(Grammar it) {
parserPackage + ".lexer"
}
def AntlrGrammar getParserGrammar(Grammar it) {
new AntlrGrammar(internalParserPackage, '''«grammarNamePrefix»Internal«simpleName»«IF !combinedGrammar»Parser«ENDIF»''')
}
def AntlrGrammar getLexerGrammar(Grammar it) {
new AntlrGrammar(internalParserPackage, '''«grammarNamePrefix»Internal«simpleName»«IF !combinedGrammar»Lexer«ENDIF»''')
if (combinedGrammar) {
getParserGrammar(it)
} else {
new AntlrGrammar(internalLexerPackage, '''«grammarNamePrefix»Internal«simpleName»Lexer''')
}
}
protected def String getGrammarNamePrefix(Grammar it) {

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="backtrackingTestLanguage" nsURI="http://www.eclipse.org/2008/tmf/xtext/BacktrackingLexerTest"
nsPrefix="backtrackingTestLanguage">
<eClassifiers xsi:type="ecore:EClass" name="Model">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="enums" unique="false" upperBound="-1"
eType="#//EnumName"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ycs" unique="false" upperBound="-1"
eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="abs" upperBound="-1" eType="#//Ab"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="xbs" upperBound="-1" eType="#//Xb"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ys" unique="false" upperBound="-1"
eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="as" unique="false" upperBound="-1"
eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Ab">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Xb">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="EnumName">
<eLiterals name="abc" literal="Abc"/>
<eLiterals name="efg" value="1" literal="Efg"/>
</eClassifiers>
</ecore:EPackage>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext" modelDirectory="/org.eclipse.xtext.tests/src-gen"
modelPluginID="org.eclipse.xtext.tests" forceOverwrite="true" modelName="BacktrackingLexerTestLanguage"
updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11" usedGenPackages="platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
<genPackages prefix="BacktrackingTestLanguage" basePackage="org.eclipse.xtext.lexer"
disposableProviderFactory="true" fileExtensions="backtrackinglexertestlanguage"
ecorePackage="BacktrackingLexerTestLanguage.ecore#/">
<genEnums typeSafeEnumCompatible="false" ecoreEnum="BacktrackingLexerTestLanguage.ecore#//EnumName">
<genEnumLiterals ecoreEnumLiteral="BacktrackingLexerTestLanguage.ecore#//EnumName/abc"/>
<genEnumLiterals ecoreEnumLiteral="BacktrackingLexerTestLanguage.ecore#//EnumName/efg"/>
</genEnums>
<genClasses ecoreClass="BacktrackingLexerTestLanguage.ecore#//Model">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Model/enums"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Model/ycs"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BacktrackingLexerTestLanguage.ecore#//Model/abs"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BacktrackingLexerTestLanguage.ecore#//Model/xbs"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Model/ys"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Model/as"/>
</genClasses>
<genClasses ecoreClass="BacktrackingLexerTestLanguage.ecore#//Ab">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Ab/x"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Ab/y"/>
</genClasses>
<genClasses ecoreClass="BacktrackingLexerTestLanguage.ecore#//Xb">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Xb/x"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute BacktrackingLexerTestLanguage.ecore#//Xb/y"/>
</genClasses>
</genPackages>
</genmodel:GenModel>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="subPackage" nsURI="http://www.eclipse.org/2009/tmf/xtext/SubTestLanguage"
nsPrefix="subPackage">
<eClassifiers xsi:type="ecore:EClass" name="SubMain">
<eStructuralFeatures xsi:type="ecore:EReference" name="superMains" upperBound="-1"
eType="ecore:EClass SuperTestLanguage.ecore#//SuperMain" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="another" eType="#//AnotherSuperMain"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnotherSuperMain" eSuperTypes="SuperTestLanguage.ecore#//AnotherSuperMain"/>
</ecore:EPackage>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext" modelDirectory="/org.eclipse.xtext.tests/src-gen"
modelPluginID="org.eclipse.xtext.tests" forceOverwrite="true" modelName="SubTestLanguage"
updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11" usedGenPackages="SuperTestLanguage.genmodel#//superPackage">
<genPackages prefix="SubPackage" basePackage="org.eclipse.xtext.generator.ecore"
disposableProviderFactory="true" fileExtensions="subtestlanguage" ecorePackage="SubTestLanguage.ecore#/">
<genClasses ecoreClass="SubTestLanguage.ecore#//SubMain">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SubTestLanguage.ecore#//SubMain/superMains"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference SubTestLanguage.ecore#//SubMain/another"/>
</genClasses>
<genClasses ecoreClass="SubTestLanguage.ecore#//AnotherSuperMain"/>
</genPackages>
</genmodel:GenModel>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="superPackage" nsURI="http://www.eclipse.org/2009/tmf/xtext/SuperTestLanguage"
nsPrefix="superPackage">
<eClassifiers xsi:type="ecore:EClass" name="SuperMain">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnotherSuperMain">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
</ecore:EPackage>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext" modelDirectory="/org.eclipse.xtext.tests/src-gen"
modelPluginID="org.eclipse.xtext.tests" forceOverwrite="true" modelName="SuperTestLanguage"
updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11" usedGenPackages="platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
<genPackages prefix="SuperPackage" basePackage="org.eclipse.xtext.generator.ecore"
disposableProviderFactory="true" fileExtensions="supertestlanguage" ecorePackage="SuperTestLanguage.ecore#/">
<genClasses ecoreClass="SuperTestLanguage.ecore#//SuperMain">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute SuperTestLanguage.ecore#//SuperMain/name"/>
</genClasses>
<genClasses ecoreClass="SuperTestLanguage.ecore#//AnotherSuperMain">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute SuperTestLanguage.ecore#//AnotherSuperMain/name"/>
</genClasses>
</genPackages>
</genmodel:GenModel>

View file

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="xtextTest" nsURI="http://www.eclipse.org/2008/Test/XtextTest"
nsPrefix="xtextTest">
<eClassifiers xsi:type="ecore:EClass" name="Grammar">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="usedGrammars" unique="false"
upperBound="-1" eType="#//Grammar"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definesHiddenTokens" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="hiddenTokens" unique="false"
upperBound="-1" eType="#//AbstractRule"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="metamodelDeclarations"
upperBound="-1" eType="#//AbstractMetamodelDeclaration" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
eType="#//AbstractRule" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractRule">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//TypeRef"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="alternatives" eType="#//AbstractElement"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractMetamodelDeclaration">
<eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="ecore:EClass platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneratedMetamodel" eSuperTypes="#//AbstractMetamodelDeclaration">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReferencedMetamodel" eSuperTypes="#//AbstractMetamodelDeclaration"/>
<eClassifiers xsi:type="ecore:EClass" name="ParserRule" eSuperTypes="#//AbstractRule">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fragment" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="wildcard" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definesHiddenTokens" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="hiddenTokens" unique="false"
upperBound="-1" eType="#//AbstractRule"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
eType="#//Parameter" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Parameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeRef">
<eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" eType="#//AbstractMetamodelDeclaration"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" eType="ecore:EClass platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cardinality" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="predicated" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstSetPredicated" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//TypeRef"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="feature" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Keyword" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RuleCall" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="rule" eType="#//AbstractRule"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
eType="#//NamedArgument" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedArgument">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="literalValue" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="#//Parameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Assignment" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="feature" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="terminal" eType="#//AbstractElement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CrossReference" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//TypeRef"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="terminal" eType="#//AbstractElement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Group" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
eType="#//AbstractElement" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TerminalRule" eSuperTypes="#//AbstractRule">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fragment" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractNegatedToken" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="terminal" eType="#//AbstractElement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NegatedToken" eSuperTypes="#//AbstractNegatedToken"/>
<eClassifiers xsi:type="ecore:EClass" name="UntilToken" eSuperTypes="#//AbstractNegatedToken"/>
<eClassifiers xsi:type="ecore:EClass" name="Wildcard" eSuperTypes="#//AbstractElement"/>
<eClassifiers xsi:type="ecore:EClass" name="EOF" eSuperTypes="#//AbstractElement"/>
<eClassifiers xsi:type="ecore:EClass" name="EnumRule" eSuperTypes="#//AbstractRule"/>
<eClassifiers xsi:type="ecore:EClass" name="EnumLiteralDeclaration" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="enumLiteral" eType="ecore:EClass platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EEnumLiteral"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="literal" eType="#//Keyword"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Alternatives" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
eType="#//AbstractElement" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalBranch" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="filtered" eType="ecore:EDataType platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="#//Parameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="guardedElement" eType="#//AbstractElement"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnorderedGroup" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
eType="#//AbstractElement" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CharacterRange" eSuperTypes="#//AbstractElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Keyword"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Keyword"
containment="true"/>
</eClassifiers>
</ecore:EPackage>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext" modelDirectory="/org.eclipse.xtext.tests/src-gen"
modelPluginID="org.eclipse.xtext.tests" forceOverwrite="true" modelName="XtextGrammarTestLanguage"
updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11" usedGenPackages="platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
<genPackages prefix="XtextTest" basePackage="org.eclipse.xtext" disposableProviderFactory="true"
fileExtensions="xtextgrammartestlanguage" ecorePackage="XtextGrammarTestLanguage.ecore#/">
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Grammar">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Grammar/name"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Grammar/usedGrammars"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Grammar/definesHiddenTokens"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Grammar/hiddenTokens"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Grammar/metamodelDeclarations"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Grammar/rules"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//AbstractRule">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//AbstractRule/type"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//AbstractRule/alternatives"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//AbstractRule/name"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//AbstractMetamodelDeclaration">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//AbstractMetamodelDeclaration/ePackage"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//AbstractMetamodelDeclaration/alias"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//GeneratedMetamodel">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//GeneratedMetamodel/name"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//ReferencedMetamodel"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//ParserRule">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//ParserRule/fragment"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//ParserRule/wildcard"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//ParserRule/definesHiddenTokens"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//ParserRule/hiddenTokens"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//ParserRule/parameters"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Parameter">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Parameter/name"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//TypeRef">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//TypeRef/metamodel"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//TypeRef/classifier"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//AbstractElement">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//AbstractElement/cardinality"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//AbstractElement/predicated"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//AbstractElement/firstSetPredicated"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Action">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Action/type"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Action/feature"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Action/operator"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Keyword">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Keyword/value"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//RuleCall">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//RuleCall/rule"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//RuleCall/arguments"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//NamedArgument">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//NamedArgument/literalValue"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//NamedArgument/parameter"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//NamedArgument/value"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Assignment">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Assignment/feature"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//Assignment/operator"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Assignment/terminal"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//CrossReference">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//CrossReference/type"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//CrossReference/terminal"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Group">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Group/elements"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//TerminalRule">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//TerminalRule/fragment"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//AbstractNegatedToken">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//AbstractNegatedToken/terminal"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//NegatedToken"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//UntilToken"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Wildcard"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//EOF"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//EnumRule"/>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//EnumLiteralDeclaration">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//EnumLiteralDeclaration/enumLiteral"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//EnumLiteralDeclaration/literal"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//Alternatives">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//Alternatives/elements"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//ConditionalBranch">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute XtextGrammarTestLanguage.ecore#//ConditionalBranch/filtered"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//ConditionalBranch/parameter"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//ConditionalBranch/guardedElement"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//UnorderedGroup">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//UnorderedGroup/elements"/>
</genClasses>
<genClasses ecoreClass="XtextGrammarTestLanguage.ecore#//CharacterRange">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//CharacterRange/left"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XtextGrammarTestLanguage.ecore#//CharacterRange/right"/>
</genClasses>
</genPackages>
</genmodel:GenModel>

View file

@ -0,0 +1,596 @@
/*******************************************************************************
* Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
module org.eclipse.xtext.GenerateAllTestLanguages2
import org.eclipse.emf.mwe2.runtime.workflow.Workflow
import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.generator.*
var projectName = "org.eclipse.xtext.tests"
var runtimeProject = "../${projectName}"
var ideaProject = "../../intellij/org.eclipse.xtext.core.idea.tests"
var lineDelimiter = '\n'
Workflow {
bean = StandaloneSetup {
ignoreBrokenProjectFiles = true
platformUri = "${runtimeProject}/.."
platformUri = "${runtimeProject}/../../plugins"
scanClassPath = true
uriMap = {
from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"
to = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore"
}
uriMap = {
from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel"
to = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"
}
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/grammarinheritance/ametamodel.genmodel"
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/GenModelAccessTest.genmodel"
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/Genmodel.genmodel"
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/grammarAccess/ametamodel.genmodel"
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/enumrules/enums.genmodel"
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcoreReferences.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.xtext/org/eclipse/xtext/Xtext.genmodel"
registerGenModelFile = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"
registerGeneratedEPackage = "org.eclipse.xtext.grammarinheritance.ametamodel.AmetamodelPackage"
registerGeneratedEPackage = "org.eclipse.xtext.XtextPackage"
registerGeneratedEPackage = "org.eclipse.emf.ecore.EcorePackage"
}
bean = ecore.EcoreSupportStandaloneSetup {}
component = org.eclipse.emf.mwe2.ecore.EcoreGenerator {
genModel = "platform:/resource/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/ecore/GenModelAccessTest.genmodel"
srcPath = "foo"
lineDelimiter = lineDelimiter
}
component = org.eclipse.xtext.generator.ecore.GenModelAccessTestGenerator {}
component = xtext.generator.XtextGenerator {
cleaner = {
enabled = false
}
configuration = xtext.generator.DefaultGeneratorModule {
code = {
preferXtendStubs = false
fileHeader =
"/*
* generated by Xtext
*/"
}
project = xtext.generator.model.project.StandardProjectConfig {
baseName = projectName
rootPath = ".."
runtime = {
enabled = true
root = runtimeProject
}
runtimeTest = {
enabled = true
root = runtimeProject
}
ideaPlugin = {
enabled = true
root = ideaProject
overwriteSrc = true
}
genericIde = {
enabled = true
root = ideaProject
overwriteSrc = true
}
}
}
language = TestLanguage {
name = "org.eclipse.xtext.generator.ecore.SuperTestLanguage"
}
language = TestLanguage {
name = "org.eclipse.xtext.generator.ecore.SubTestLanguage"
}
language = TestLanguage {
name = "org.eclipse.xtext.XtextGrammarTestLanguage"
}
language = TestLanguage {
name = "org.eclipse.xtext.lexer.BacktrackingLexerTestLanguage"
parserOptions = {
backtrack = true
backtrackLexer = true
memoize = true
classSplitting = true
}
}
//
// language = TestLanguage {
// name = "org.eclipse.xtext.lexer.IgnoreCaseLexerTestLanguage"
// parserGenerator = {
// options = {
// ignoreCase = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.lazy.LazyLinkingTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.Bug287988TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.Bug289059TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.Bug313089TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.ImportUriTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.LangATestLanguage"
// fragment = xtext.generator.scoping.ImportNamespacesScopingFragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.Bug362902"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.AbstractIgnoreCaseLinkingTestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.IgnoreCaseNamespacesTestLanguage"
// fragment = xtext.generator.scoping.ImportNamespacesScopingFragment2 {
// ignoreCase = true
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.IgnoreCaseImportsTestLanguage"
// fragment = adapter.FragmentAdapter {
// fragment = scoping.ImportURIScopingFragment {
// ignoreCase = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.linking.lazy.Bug311337TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.dummy.DummyTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.enumrules.EnumRulesTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.enumrules.EnumAndReferenceTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.enumrules.MultiRuleEnumTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.generator.ecore.EcoreFragmentTestLanguage"
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/Genmodel.genmodel"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.generator.grammarAccess.GrammarAccessTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.AbstractTestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.BaseInheritanceTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.ConcreteTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTest2Language"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTest3Language"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.index.IndexTestLanguage"
// }
// language = TestLanguage {
// referencedResource = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore"
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerNsURI.ecore"
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerPlatformPlugin.ecore"
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerPlatformResource.ecore"
// name = "org.eclipse.xtext.metamodelreferencing.tests.EcoreReferenceTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.metamodelreferencing.tests.MetamodelRefTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.metamodelreferencing.tests.MultiGenMMTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug289515TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug289524TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug289524ExTestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug296889TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug296889ExTestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug299237TestLanguage"
// parserGenerator = {
// options = {
// ignoreCase = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug301935TestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug378967TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug301935ExTestLanguage"
// parserGenerator = {
// options = {
// ignoreCase = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.antlr.Bug443221TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.assignments.AssignmentsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.assignments.Bug287184TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.assignments.Bug288432TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.bug419429.Bug419429"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.datatyperules.DatatypeRulesTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.epatch.EpatchTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.fragments.FragmentTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.fragments.FragmentTestLanguageEx"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.indentation.IndentationAwareTestLanguage"
// serializer = {
// generateStub = false
// }
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.keywords.KeywordsTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.parameters.ParametersTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.parameters.TwoParametersTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.parameters.NoParametersTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.parameters.ParametersTestLanguageEx"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.Bug292245TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.Bug297105TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.Bug317840TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.EcoreTerminalsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.HiddenTerminalsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.TerminalRulesTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.UnicodeTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.terminalrules.XtextTerminalsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.UnorderedGroupsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.SimpleUnorderedGroupsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.ExUnorderedGroupsTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.BacktrackingBug325745TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.SimpleBacktrackingBug325745TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.unorderedGroups.ExBacktrackingBug325745TestLanguage"
// parserGenerator = {
// options = {
// backtrack = true
// }
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.formatting2.internal.FormatterTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.formatting2.regionaccess.internal.RegionAccessTestLanguage"
// fragment = xtext.generator.junit.Junit4Fragment2 {}
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.formatter.FormatterTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.formatter.ElementMatcherTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.impl.Bug305397"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.impl.CommentAssociationTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.PartialSerializationTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.Bug299395TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.ComplexReconstrTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.SimpleReconstrTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.SerializationBug269362TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.SerializationErrorTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.HiddenTokensMergerTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.reconstr.Bug302128TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.serializer.HiddenTokenSequencerTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.serializer.SequencerTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.serializer.SyntacticSequencerTestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.serializer.ContextFinderTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.serializer.AssignmentFinderTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.unassignedtext.UnassignedTextTestLanguage"
// serializer = {
// generateStub = false
// }
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parsetree.transientvalues.TransientValuesTest"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.ActionTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.ActionTestLanguage2"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.FowlerDslTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.LookaheadTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.OptionalEmptyTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.PartialParserTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.ReferenceGrammarTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.SimpleExpressionsTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.TestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.TreeTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.valueconverter.Bug250313"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.valueconverter.QualifiedNameTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.xtext.ecoreInference.MultiValueFeatureTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.xtext.ecoreInference.UnassignedRuleCallTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.validation.ConcreteSyntaxValidationTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.resource.EObjectAtOffsetTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.resource.LocationProviderTestLanguage"
//
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.resource.LiveContainerTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.resource.LiveContainerBuilderIntegerationTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.resource.Bug385636TestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.parser.encoding.EncodingTestLanguage"
// }
// language = TestLanguage {
// name = "org.eclipse.xtext.testlanguages.indent.IndentationAwareTestLanguage"
//
// }
}
}

View file

@ -0,0 +1,82 @@
/*******************************************************************************
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.xtext
import java.util.ArrayList
import org.eclipse.xtext.xtext.generator.XtextGeneratorLanguage
import org.eclipse.xtext.xtext.generator.ecore.EMFGeneratorFragment2
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
import org.eclipse.xtext.xtext.generator.idea.IdeaPluginGenerator
import org.eclipse.xtext.xtext.generator.idea.parser.antlr.XtextAntlrIDEAGeneratorFragment
import org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
import org.eclipse.xtext.xtext.generator.resourceFactory.ResourceFactoryFragment2
import org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
import org.eclipse.xtend.lib.annotations.Accessors
import org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorComparisonFragment
import org.eclipse.xtext.generator.parser.antlr.AntlrOptions
/**
* @author efftinge - Initial contribution and API
*/
@Accessors
class TestLanguage extends XtextGeneratorLanguage {
org.eclipse.xtext.xtext.generator.parser.antlr.AntlrOptions parserOptions = new org.eclipse.xtext.xtext.generator.parser.antlr.AntlrOptions() => [
classSplitting = true
]
def void setParserOptions(org.eclipse.xtext.xtext.generator.parser.antlr.AntlrOptions parserOptions) {
this.parserOptions = parserOptions
parserGenerator.options = parserOptions
ideaParser.options = parserOptions
}
GrammarAccessFragment2 grammarAccess = new GrammarAccessFragment2
SerializerFragment2 serializer = new SerializerFragment2 => [
generateStub = false
]
ResourceFactoryFragment2 resourceFactoryFragment = new ResourceFactoryFragment2
EMFGeneratorFragment2 emfGenerator = new EMFGeneratorFragment2
XtextAntlrGeneratorFragment2 parserGenerator = new XtextAntlrGeneratorFragment2 => [
debugGrammar = true
options = parserOptions
]
XtextAntlrIDEAGeneratorFragment ideaParser = new XtextAntlrIDEAGeneratorFragment => [
options = parserOptions
]
IdeaPluginGenerator ideaPlugin = new IdeaPluginGenerator
override protected getImplicitFragments() {
val result = new ArrayList(super.getImplicitFragments())
result += parserGenerator
val comparison = new XtextAntlrGeneratorComparisonFragment
comparison.setOptions(new AntlrOptions() => [
it.backtrack = parserGenerator.options.backtrack
it.backtrackLexer = parserGenerator.options.backtrackLexer
it.classSplitting = parserGenerator.options.classSplitting
it.casesPerSpecialStateSwitch = parserGenerator.options.casesPerSpecialStateSwitch.toString
it.fieldsPerClass = parserGenerator.options.fieldsPerClass.toString
it.ignoreCase = parserGenerator.options.ignoreCase
it.k = parserGenerator.options.k
it.memoize = parserGenerator.options.memoize
it.optimizeCodeQuality= parserGenerator.options.optimizeCodeQuality
it.skipUnusedRules = parserGenerator.options.skipUnusedRules
it.stripAllComments = parserGenerator.options.stripAllComments
]);
result += comparison
result += grammarAccess
result += emfGenerator
result += serializer
result += resourceFactoryFragment
result += ideaParser
result += ideaPlugin
return result
}
}

View file

@ -1,4 +0,0 @@
package org.eclipse.xtext.generator.ecore.serializer;
public class SuperTestLanguageSemanticSequencer extends AbstractSuperTestLanguageSemanticSequencer {
}

View file

@ -1,4 +0,0 @@
package org.eclipse.xtext.generator.ecore.serializer;
public class SuperTestLanguageSyntacticSequencer extends AbstractSuperTestLanguageSyntacticSequencer {
}