diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/GenerateTestLanguages.mwe2 b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/GenerateTestLanguages.mwe2 index cc40efd3b..b8204e33a 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/GenerateTestLanguages.mwe2 +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/GenerateTestLanguages.mwe2 @@ -27,9 +27,6 @@ Workflow { enabled = true root = eclipsePath } - ideaPlugin = { - enabled = false - } createEclipseMetaData = true } diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 index 2cb2a5db9..c5fb35d04 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 @@ -67,17 +67,7 @@ XtextGeneratorLanguage { // content assist API fragment = ui.contentAssist.ContentAssistFragment2 {} - fragment = idea.parser.antlr.XtextAntlrIDEAGeneratorFragment auto-inject { - options = auto-inject { - fieldsPerClass = "100" - methodsPerClass = "100" - } - } // fragment = org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorComparisonFragment { // options = auto-inject {} // } - - fragment = idea.IdeaPluginGenerator auto-inject { - generateXtendStub = true - } } diff --git a/org.eclipse.xtext.tests/src/org/eclipse/xtext/grammarinheritance/GenerateInheritanceLanguages.mwe2 b/org.eclipse.xtext.tests/src/org/eclipse/xtext/grammarinheritance/GenerateInheritanceLanguages.mwe2 index 19576f038..e2b92f8c4 100644 --- a/org.eclipse.xtext.tests/src/org/eclipse/xtext/grammarinheritance/GenerateInheritanceLanguages.mwe2 +++ b/org.eclipse.xtext.tests/src/org/eclipse/xtext/grammarinheritance/GenerateInheritanceLanguages.mwe2 @@ -37,9 +37,6 @@ Workflow { component = DirectoryCleaner { directory="${runtimeProject}/src-gen/org/eclipse/xtext/grammarinheritance" } - component = DirectoryCleaner { - directory="${runtimeProject}/../../intellij/org.eclipse.xtext.core.idea.tests/src-gen/org/eclipse/xtext/grammarinheritance/idea" - } component = XtextGenerator { cleaner = { diff --git a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/fragments/GenerateFragmentTestLanguages.mwe2 b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/fragments/GenerateFragmentTestLanguages.mwe2 index 2cd5ffea5..4d1c5c104 100644 --- a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/fragments/GenerateFragmentTestLanguages.mwe2 +++ b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/fragments/GenerateFragmentTestLanguages.mwe2 @@ -26,10 +26,6 @@ Workflow { directory = "${runtimeProject}/src-gen/org/eclipse/xtext/parser/fragments" } - component = DirectoryCleaner { - directory = "../../intellij/org.eclipse.xtext.core.idea.tests/src-gen/org/eclipse/xtext/parser/fragments/idea" - } - component = XtextGenerator { cleaner = { enabled = false diff --git a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/parameters/GenerateParametersTestLanguages.mwe2 b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/parameters/GenerateParametersTestLanguages.mwe2 index 54ac2c9a6..18c013fe6 100644 --- a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/parameters/GenerateParametersTestLanguages.mwe2 +++ b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/parameters/GenerateParametersTestLanguages.mwe2 @@ -25,10 +25,6 @@ Workflow { directory = "${runtimeProject}/src-gen/org/eclipse/xtext/parser/parameters" } - component = DirectoryCleaner { - directory = "../../intellij/org.eclipse.xtext.core.idea.tests/src-gen/org/eclipse/xtext/parser/parameters/idea" - } - component = XtextGenerator { cleaner = { enabled = false diff --git a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/unorderedGroups/GenerateUnorderedGroupsTestLanguages.mwe2 b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/unorderedGroups/GenerateUnorderedGroupsTestLanguages.mwe2 index c1cd8bede..6a342a371 100644 --- a/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/unorderedGroups/GenerateUnorderedGroupsTestLanguages.mwe2 +++ b/org.eclipse.xtext.tests/src/org/eclipse/xtext/parser/unorderedGroups/GenerateUnorderedGroupsTestLanguages.mwe2 @@ -26,10 +26,6 @@ Workflow { directory = "${runtimeProject}/src-gen/org/eclipse/xtext/parser/unorderedGroups" } - component = DirectoryCleaner { - directory = "../../intellij/org.eclipse.xtext.core.idea.tests/src-gen/org/eclipse/xtext/parser/unorderedGroups/idea" - } - component = XtextGenerator { cleaner = { enabled = false diff --git a/org.eclipse.xtext.util/src/org/eclipse/xtext/util/JavaVersion.java b/org.eclipse.xtext.util/src/org/eclipse/xtext/util/JavaVersion.java index 4ff6fc2e0..a5a8635d7 100644 --- a/org.eclipse.xtext.util/src/org/eclipse/xtext/util/JavaVersion.java +++ b/org.eclipse.xtext.util/src/org/eclipse/xtext/util/JavaVersion.java @@ -70,7 +70,6 @@ public enum JavaVersion { // if you introduce a new JavaVersion don't forget to adapt // - JavaVersionTest // - JavaVersionExtendedTest - // - org.eclipse.xtext.xbase.idea.facet.XbaseGeneratorConfigProvider.getTargetJavaVersion(XbaseGeneratorConfigurationState, Module) private final String label; private final String[] qualifiers; diff --git a/org.eclipse.xtext.xtext.bootstrap/BootstrapXtext.launch b/org.eclipse.xtext.xtext.bootstrap/BootstrapXtext.launch index 15a34e592..d45c1c3e4 100644 --- a/org.eclipse.xtext.xtext.bootstrap/BootstrapXtext.launch +++ b/org.eclipse.xtext.xtext.bootstrap/BootstrapXtext.launch @@ -9,7 +9,7 @@ - + diff --git a/org.eclipse.xtext.xtext.bootstrap/build.gradle b/org.eclipse.xtext.xtext.bootstrap/build.gradle index 60fd5fa30..4a78a4138 100644 --- a/org.eclipse.xtext.xtext.bootstrap/build.gradle +++ b/org.eclipse.xtext.xtext.bootstrap/build.gradle @@ -1,9 +1,8 @@ /* * Bootstrap project for the Xtext language. It contains an MWE2 generator workflow with - * dedicated configuration code. The workflow generates into the core and generic ide projects - * as well as the Eclipse and IDEA integration projects, which are defined in different - * source repositories. The path to these other repositories is assumed to be ../xtext-eclipse - * and ../xtext-idea, respectively. + * dedicated configuration code. The workflow generates into the core and generic ide projects, + * which are defined in different source repositories. The path to these other repositories is + * assumed to be ../xtext-eclipse, respectively. */ apply from: "${rootDir}/gradle/mwe2-workflows.gradle" diff --git a/org.eclipse.xtext.xtext.bootstrap/src/org/eclipse/xtext/xtext/bootstrap/GenerateXtext.mwe2 b/org.eclipse.xtext.xtext.bootstrap/src/org/eclipse/xtext/xtext/bootstrap/GenerateXtext.mwe2 index e0348b5d6..b138f84b6 100644 --- a/org.eclipse.xtext.xtext.bootstrap/src/org/eclipse/xtext/xtext/bootstrap/GenerateXtext.mwe2 +++ b/org.eclipse.xtext.xtext.bootstrap/src/org/eclipse/xtext/xtext/bootstrap/GenerateXtext.mwe2 @@ -21,8 +21,6 @@ var runtimeProjectName = baseName var ideProjectName = "${baseName}.xtext.ide" var eclipseProjectName = "${baseName}.xtext.ui" var eclipseProjectPath = "${rootPath}/../xtext-eclipse/${eclipseProjectName}" -var ideaProjectName = "${baseName}.xtext.idea" -var ideaProjectPath = "${rootPath}/../xtext-idea/${ideaProjectName}" var fileHeader = "/*\n * generated by Xtext 2.11\n */" //\${version}\n */" @@ -76,11 +74,6 @@ Workflow { name = eclipseProjectName root = eclipseProjectPath } - ideaPlugin = { - enabled = true - name = ideaProjectName - root = ideaProjectPath - } // createEclipseMetaData = true } code = { @@ -127,15 +120,6 @@ Workflow { fragment = ui.refactoring.RefactorElementNameFragment2 {} fragment = ui.templates.CodetemplatesGeneratorFragment2 {} - - fragment = org.eclipse.xtext.xtext.generator.idea.IdeaPluginGenerator { - generateXtendStub = true - } - fragment = org.eclipse.xtext.xtext.generator.idea.parser.antlr.XtextAntlrIDEAGeneratorFragment { - options = { - classSplitting = true - } - } } } } diff --git a/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF b/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF index 1320185bc..ae2cf34d2 100644 --- a/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF +++ b/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF @@ -34,8 +34,6 @@ Export-Package: org.eclipse.xtext.xtext.generator, org.eclipse.xtext.tests, org.eclipse.xtext.xbase, org.eclipse.xtend.core", - org.eclipse.xtext.xtext.generator.idea;x-internal:=true, - org.eclipse.xtext.xtext.generator.idea.parser.antlr;x-friends:="org.eclipse.xtend.core", org.eclipse.xtext.xtext.generator.junit;x-internal:=true, org.eclipse.xtext.xtext.generator.model;x-friends:="org.eclipse.xtext.extras.tests, org.eclipse.xtext.generator, diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.xtend deleted file mode 100644 index 63d1f6e74..000000000 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.xtend +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************* - * 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.xtext.generator.idea - -import com.google.inject.Inject -import org.eclipse.xtext.Grammar -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming -import org.eclipse.xtext.xtext.generator.model.TypeReference - -import static extension org.eclipse.xtext.GrammarUtil.* -import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.* - -class IdeaPluginClassNames { - @Inject extension XtextGeneratorNaming - - def String toPath(String fullName) { - fullName.replace('.', '/') - } - - def TypeReference getIdeaSetup(Grammar it) { - new TypeReference(ideaBasePackage, simpleName + 'IdeaSetup') - } - - def TypeReference getExtensionFactory(Grammar it) { - new TypeReference(ideaBasePackage, simpleName + 'ExtensionFactory') - } - - def TypeReference getAbstractIdeaModule(Grammar it) { - new TypeReference(ideaBasePackage, 'Abstract' + simpleName + 'IdeaModule') - } - - def TypeReference getFileType(Grammar it) { - new TypeReference(ideaBasePackage + '.lang', simpleName + 'FileType') - } - - def TypeReference getAbstractFileType(Grammar it) { - new TypeReference(ideaBasePackage + '.lang', 'Abstract' + simpleName + 'FileType') - } - - def TypeReference getFileTypeFactory(Grammar it) { - new TypeReference(ideaBasePackage + '.lang', simpleName + 'FileTypeFactory') - } - - def TypeReference getIdeaLanguage(Grammar it) { - new TypeReference(ideaBasePackage + '.lang', simpleName + 'Language') - } - - def TypeReference getCodeBlockModificationListener(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.psi', simpleName + 'CodeBlockModificationListener') - } - - def TypeReference getPsiParser(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.parser', simpleName + 'PsiParser') - } - - def TypeReference getAntlrTokenFileProvider(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.parser.antlr', simpleName + 'AntlrTokenFileProvider') - } - - def TypeReference getPomDeclarationSearcher(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.pom', simpleName + 'PomDeclarationSearcher') - } - - def TypeReference getSyntaxHighlighterFactory(Grammar it) { - new TypeReference(ideaBasePackage + '.highlighting', simpleName + 'SyntaxHighlighterFactory') - } - - def TypeReference getSemanticHighlightVisitor(Grammar it) { - new TypeReference(ideaBasePackage + '.highlighting', simpleName + 'SemanticHighlightVisitor') - } - - def TypeReference getSuperParserDefinition(Grammar it) { - 'org.eclipse.xtext.idea.parser.AbstractXtextParserDefinition'.typeRef - } - - def TypeReference getParserDefinition(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.parser', simpleName + 'ParserDefinition') - } - - def TypeReference getTokenTypeProvider(Grammar it) { - new TypeReference(ideaBasePackage + '.lang.parser', simpleName + 'TokenTypeProvider') - } - - def TypeReference getElementTypeProvider(Grammar it) { - new TypeReference(ideaBasePackage + '.lang', simpleName + 'ElementTypeProvider') - } - - def TypeReference getPsiInternalLexer(Grammar it) { - new TypeReference(ideaBasePackage + '.parser.antlr.internal', 'PsiInternal' + simpleName + 'Lexer') - } - - def TypeReference getPsiInternalParser(Grammar it) { - new TypeReference(ideaBasePackage + '.parser.antlr.internal', 'PsiInternal' + simpleName + 'Parser') - } - - def String getTokens(Grammar it) { - (ideaBasePackage + '.parser.antlr.internal.PsiInternal' + simpleName).toPath + '.tokens' - } - - def TypeReference getFileImpl(Grammar it) { - new TypeReference(psiImplPackageName, simpleName + 'FileImpl') - } - - def String getPsiPackageName(Grammar it) { - ideaBasePackage + '.lang.psi' - } - - def String getPsiImplPackageName(Grammar it) { - ideaBasePackage + '.lang.psi.impl' - } - - def TypeReference getInternalParser(Grammar it) { - new TypeReference(namespace + '.parser.antlr.internal', 'Internal' + simpleName + 'Parser') - } - - def TypeReference getAntlrLexer(Grammar it) { - new TypeReference(namespace + '.parser.antlr.internal', 'Internal' + simpleName + 'Lexer') - } - - def TypeReference getCompletionContributorSuperClass(Grammar it) { - usedGrammars.head?.completionContributor ?: - 'org.eclipse.xtext.idea.completion.AbstractCompletionContributor'.typeRef - } - - def TypeReference getCompletionContributor(Grammar it) { - new TypeReference(ideaBasePackage + '.completion', simpleName + 'CompletionContributor') - } - - def TypeReference getAbstractCompletionContributor(Grammar it) { - new TypeReference(ideaBasePackage + '.completion', 'Abstract' + simpleName + 'CompletionContributor') - } - - def TypeReference getFacetConfiguration(Grammar it) { - new TypeReference(ideaBasePackage + '.facet', simpleName + 'FacetConfiguration') - } - - def TypeReference getFacetType(Grammar it) { - new TypeReference(ideaBasePackage + '.facet', simpleName + 'FacetType') - } - - def TypeReference baseColorSettingsPage(Grammar it) { - new TypeReference(ideaBasePackage + '.highlighting', simpleName + 'BaseColorSettingsPage') - } - - def TypeReference colorSettingsPage(Grammar it) { - new TypeReference(baseColorSettingsPage.packageName, simpleName + 'ColorSettingsPage') - } -} diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.xtend deleted file mode 100644 index 04f3ee548..000000000 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.xtend +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * 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.xtext.generator.idea - -import org.eclipse.xtext.Grammar -import org.eclipse.xtext.GrammarUtil -import org.eclipse.xtext.TerminalRule - -class IdeaPluginExtension { - - def getAllNonTerminalRules(Grammar grammar) { - GrammarUtil.allRules(grammar).filter[!(it instanceof TerminalRule)] - } - - def getSimpleName(Grammar grammar) { - GrammarUtil::getSimpleName(grammar); - } - - def getPackageName(Grammar grammar) { - GrammarUtil::getNamespace(grammar); - } - - def getLanguageID(Grammar grammar) { - grammar.name - } - -} \ No newline at end of file diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend index 4c98b64c8..65c3a1730 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend @@ -7,847 +7,16 @@ *******************************************************************************/ package org.eclipse.xtext.xtext.generator.idea -import com.google.inject.Guice -import com.google.inject.Inject -import com.google.inject.Singleton -import com.google.inject.name.Names -import java.io.InputStream -import java.util.Arrays -import java.util.Collections -import java.util.HashMap -import java.util.HashSet -import java.util.Map -import java.util.Set -import org.antlr.runtime.Token -import org.eclipse.emf.ecore.EAttribute -import org.eclipse.emf.ecore.EClass -import org.eclipse.emf.ecore.EObject -import org.eclipse.xtend.lib.annotations.Accessors -import org.eclipse.xtext.AbstractElement -import org.eclipse.xtext.AbstractRule -import org.eclipse.xtext.Action -import org.eclipse.xtext.GeneratedMetamodel -import org.eclipse.xtext.Grammar -import org.eclipse.xtext.ISetup -import org.eclipse.xtext.RuleCall -import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider -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.AbstractStubGeneratingFragment -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming -import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions -import org.eclipse.xtext.xtext.generator.model.FileAccessFactory -import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess.BindingFactory -import org.eclipse.xtext.xtext.generator.model.JavaFileAccess -import org.eclipse.xtext.xtext.generator.model.TextFileAccess -import org.eclipse.xtext.xtext.generator.model.TypeReference -import org.eclipse.xtext.xtext.generator.parser.antlr.ContentAssistGrammarNaming -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 +@Deprecated class IdeaPluginGenerator extends AbstractStubGeneratingFragment { - @Inject extension XtextGeneratorNaming - @Inject extension XbaseUsageDetector - @Inject ContentAssistGrammarNaming caNaming - @Inject - extension IdeaPluginExtension - - @Inject - extension IdeaPluginClassNames - - @Inject - extension GrammarAccessExtensions - - @Inject - FileAccessFactory fileAccessFactory - - Set libraries = newHashSet(); - - @Accessors - boolean deployable = true - - def addLibrary(String library) { - libraries.add(library) - } override generate() { if (!projectConfig.ideaPlugin.enabled) return; - val fileExtension = language.getFileExtensions().head - val grammar = language.grammar - - val bindFactory = new BindingFactory(); - bindFactory.addTypeToType('org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider'.typeRef, grammar.antlrTokenFileProvider) - bindFactory.addTypeToType('org.eclipse.xtext.parser.antlr.Lexer'.typeRef, grammar.getPsiInternalLexer) - bindFactory.addConfiguredBinding("RuntimeLexer", ''' - binder.bind(«Lexer».class) - .annotatedWith(«Names».named(«LexerBindings».RUNTIME)) - .to(«grammar.psiInternalLexer».class); - ''') - bindFactory.addTypeToType('com.intellij.lang.PsiParser'.typeRef, grammar.psiParser) - bindFactory.addTypeToType('org.eclipse.xtext.idea.parser.TokenTypeProvider'.typeRef, grammar.tokenTypeProvider) - bindFactory.addTypeToType('com.intellij.lang.ParserDefinition'.typeRef, grammar.parserDefinition) - bindFactory.addTypeToTypeSingleton('org.eclipse.xtext.idea.lang.IElementTypeProvider'.typeRef, grammar.elementTypeProvider) - bindFactory.addTypeToType('org.eclipse.xtext.idea.facet.AbstractFacetConfiguration'.typeRef, grammar.facetConfiguration) - bindFactory.addTypeToInstance('com.intellij.facet.FacetTypeId'.typeRef, '''«grammar.facetType».TYPEID''') - bindFactory.addTypeToType('org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser'.typeRef, caNaming.getParserClass(grammar)) - bindFactory.addConfiguredBinding('ContentAssistLexer', - '''binder.bind(«'org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer'.typeRef».class).annotatedWith(«Names».named(«'org.eclipse.xtext.ide.LexerIdeBindings'.typeRef».CONTENT_ASSIST)).to(«caNaming.getLexerClass(grammar)».class);''') - if (grammar.inheritsXbase) { - bindFactory.addTypeToType('org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider'.typeRef, 'org.eclipse.xtext.idea.common.types.StubBasedTypeScopeProvider'.typeRef) - bindFactory.addTypeToType(new TypeReference('org.eclipse.xtext.xbase.typesystem.internal', 'IFeatureScopeTracker.Provider'), 'org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider'.typeRef) - bindFactory.addConfiguredBinding('LanguageSpecificPsiModelAssociations', ''' - binder.bind(«"org.eclipse.xtext.psi.IPsiModelAssociations".typeRef».class) - .annotatedWith(«LanguageSpecific».class) - .to(«"org.eclipse.xtext.idea.common.types.DerivedMemberAwarePsiModelAssociations".typeRef».class); - ''') - bindFactory.addTypeToType('org.eclipse.xtext.idea.highlighting.IHighlightingConfiguration'.typeRef, 'org.eclipse.xtext.xbase.idea.highlighting.XbaseHighlightingConfiguration'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.idea.formatting.BlockFactory'.typeRef, 'org.eclipse.xtext.xbase.idea.formatting.XbaseBlockFactory'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.idea.formatting.ChildAttributesProvider'.typeRef, 'org.eclipse.xtext.xbase.idea.formatting.XbaseChildAttributesProvider'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.ide.editor.bracketmatching.IBracePairProvider'.typeRef, 'org.eclipse.xtext.xbase.idea.bracketmatching.XbaseBracePairProvider'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.idea.findusages.IReferenceSearcher'.typeRef, 'org.eclipse.xtext.xbase.idea.findusages.JvmElementAwareReferenceSearcher'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.xbase.compiler.IGeneratorConfigProvider'.typeRef, 'org.eclipse.xtext.xbase.idea.facet.XbaseGeneratorConfigProvider'.typeRef) - bindFactory.addTypeToType('org.eclipse.xtext.idea.findusages.WordsScannerProvider'.typeRef, new TypeReference('org.eclipse.xtext.xbase.idea.findusages', 'XbaseWordsScanner.XbaseWordsScannerProvider')) - } - - bindFactory.contributeTo(language.ideaGenModule) - - #[ - grammar.compileStandaloneSetup, - grammar.compileIdeaSetup, - grammar.compileCompletionContributor, - grammar.compileFileType, - grammar.compileFacetConfiguration, - grammar.compileColorSettingsPage - ].forEach[ - writeTo(projectConfig.ideaPlugin.src) - ] - - #[ - grammar.compileServicesISetup, - grammar.compileAbstractCompletionContributor, - grammar.compileLanguage, - grammar.compileAbstractFileType(fileExtension), - grammar.compileFileTypeFactory, - grammar.compileFileImpl, - grammar.compileTokenTypeProvider, - grammar.compileElementTypeProvider, - grammar.compileParserDefinition, - grammar.compileSyntaxHighlighterFactory, - grammar.compileSemanticHighlightVisitor, - grammar.compileExtensionFactory, - grammar.compileCodeBlockModificationListener, - grammar.compilePsiParser, - grammar.compileAntlrTokenFileProvider, - grammar.compilePomDeclarationSearcher, - grammar.compileFacetType, - grammar.compileBaseColorSettingsPage - ].forEach[ - writeTo(projectConfig.ideaPlugin.srcGen) - ] - - if (deployable) { - val pluginXml = grammar.compilePluginXml - if (!projectConfig.ideaPlugin.metaInf.isFile(pluginXml.path)) { - pluginXml.writeTo(projectConfig.ideaPlugin.metaInf) - } - grammar.compilePluginGenXml.writeTo(projectConfig.ideaPlugin.metaInf) - } + System.err.println("The support for Idea has been removed!") } - def iml() { - ".iml" - } - - def compileExtensionFactory(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.extensionFactory, ''' - public class «grammar.extensionFactory.simpleName» implements «"com.intellij.openapi.extensions.ExtensionFactory".typeRef» { - @Override - public Object createInstance(«String» factoryArgument, «String» implementationClass) { - «Class» clazz; - try { - clazz = «Class».forName(implementationClass); - } catch («ClassNotFoundException» e) { - throw new «IllegalArgumentException»("Couldn't load "+implementationClass, e); - } - return «grammar.ideaLanguage».INSTANCE. getInstance(clazz); - } - } - ''') - } - def compileCodeBlockModificationListener(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.codeBlockModificationListener, ''' - public class «grammar.codeBlockModificationListener.simpleName» extends «"org.eclipse.xtext.psi.BaseXtextCodeBlockModificationListener".typeRef» { - - public «grammar.codeBlockModificationListener.simpleName»(«"com.intellij.psi.util.PsiModificationTracker".typeRef» psiModificationTracker) { - super(«grammar.ideaLanguage».INSTANCE, psiModificationTracker); - } - «IF grammar.inheritsXbase» - protected boolean hasJavaStructuralChanges(«"com.intellij.psi.impl.PsiTreeChangeEventImpl".typeRef» event) { - return true; - } - «ENDIF» - - } - ''') - } - - def compilePomDeclarationSearcher(Grammar it) { - fileAccessFactory.createJavaFile(pomDeclarationSearcher, ''' - public class «pomDeclarationSearcher.simpleName» extends «"org.eclipse.xtext.idea.pom.AbstractXtextPomDeclarationSearcher".typeRef» { - - public «pomDeclarationSearcher.simpleName»() { - super(«grammar.ideaLanguage».INSTANCE); - } - } - ''') - } - - def compilePsiParser(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.psiParser, ''' - public class «grammar.psiParser.simpleName» extends «"org.eclipse.xtext.idea.parser.AbstractXtextPsiParser".typeRef» { - - «IF !grammar.initialHiddenTokens.empty» - private static final «Set»<«String»> INITIAL_HIDDEN_TOKENS = new «HashSet»<«String»>(«Arrays».asList(«FOR hidden:grammar.initialHiddenTokens SEPARATOR ', '»"«hidden»"«ENDFOR»)); - «ELSE» - private static final «Set»<«String»> INITIAL_HIDDEN_TOKENS = «Collections».emptySet(); - «ENDIF» - - @«Inject» - private «grammar.grammarAccess» grammarAccess; - - @«Inject» - private «grammar.elementTypeProvider» elementTypeProvider; - - @«Override» - protected «"org.eclipse.xtext.idea.parser.AbstractPsiAntlrParser".typeRef» createParser(«"com.intellij.lang.PsiBuilder".typeRef» builder, «"org.antlr.runtime.TokenStream".typeRef» tokenStream) { - return new «grammar.psiInternalParser»(builder, tokenStream, elementTypeProvider, grammarAccess); - } - - @«Override» - protected «Set»<«String»> getInitialHiddenTokens() { - return INITIAL_HIDDEN_TOKENS; - } - } - ''') - } - - def compileAntlrTokenFileProvider(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.antlrTokenFileProvider, ''' - public class «grammar.antlrTokenFileProvider.simpleName» implements «IAntlrTokenFileProvider» { - @«Override» - public «InputStream» getAntlrTokenFile() { - «ClassLoader» classLoader = getClass().getClassLoader(); - return classLoader.getResourceAsStream("«grammar.tokens»"); - } - } - ''') - } - def compilePluginXml(Grammar grammar) { - fileAccessFactory.createTextFile("plugin.xml", ''' - - «grammar.ideaBasePackage» - «grammar.simpleName» Support - - This plugin enables smart editing of «grammar.simpleName» files. - - 1.0.0 - My Company - - - org.eclipse.xtext.idea - - - - ''') - } - - def compilePluginGenXml(Grammar grammar){ - fileAccessFactory.createTextFile("plugin_gen.xml", ''' - - - «FOR generatedMetamodel:grammar.metamodelDeclarations.filter(GeneratedMetamodel)» - - «ENDFOR» - - - - - - - - - - - - «grammar.compileExtension('lang.ast.factory', 'org.eclipse.xtext.idea.lang.BaseXtextASTFactory'.typeRef)» - «grammar.compileExtension('lang.parserDefinition', grammar.parserDefinition)» - «grammar.compileExtension('lang.findUsagesProvider', 'org.eclipse.xtext.idea.findusages.BaseXtextFindUsageProvider'.typeRef)» - «grammar.compileExtension('lang.refactoringSupport', 'org.eclipse.xtext.idea.refactoring.BaseXtextRefactoringSupportProvider'.typeRef)» - «grammar.compileExtension('lang.namesValidator', 'com.intellij.lang.refactoring.NamesValidator'.typeRef)» - - «grammar.compileExtension('lang.braceMatcher', 'com.intellij.lang.PairedBraceMatcher'.typeRef)» - «grammar.compileExtension('annotator', 'org.eclipse.xtext.idea.annotation.IssueAnnotator'.typeRef)» - - - - «grammar.compileExtension('lang.psiStructureViewFactory', 'com.intellij.lang.PsiStructureViewFactory'.typeRef)» - - «grammar.compileExtension('lang.documentationProvider', 'org.eclipse.xtext.idea.documentation.IdeaDocumentationProvider'.typeRef)» - - - - «grammar.compileExtension('lang.formatter', 'com.intellij.formatting.FormattingModelBuilder'.typeRef)» - «grammar.compileExtension('lang.commenter', 'com.intellij.lang.CodeDocumentationAwareCommenter'.typeRef)» - - - ''') - } - - def compileExtension(Grammar grammar, String extensionPointId, TypeReference implementationClass) ''' - <«extensionPointId» - language="«grammar.languageID»" - factoryClass="«grammar.extensionFactory»" - implementationClass="«implementationClass»" - /> - ''' - - def compileFileImpl(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.fileImpl, ''' - public final class «grammar.fileImpl.simpleName» extends «"org.eclipse.xtext.psi.impl.BaseXtextFile".typeRef» { - - public «grammar.fileImpl.simpleName»(«"com.intellij.psi.FileViewProvider".typeRef» viewProvider) { - super(viewProvider, «grammar.ideaLanguage».INSTANCE); - } - - @Override - public «"com.intellij.openapi.fileTypes.FileType".typeRef» getFileType() { - return «grammar.fileType».INSTANCE; - } - } - ''') - } - def compileFileTypeFactory(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.fileTypeFactory, ''' - public class «grammar.fileTypeFactory.simpleName» extends «"com.intellij.openapi.fileTypes.FileTypeFactory".typeRef» { - - @Override - public void createFileTypes(@«"org.jetbrains.annotations.NotNull".typeRef» «"com.intellij.openapi.fileTypes.FileTypeConsumer".typeRef» consumer) { - consumer.consume(«grammar.fileType».INSTANCE, «grammar.abstractFileType».DEFAULT_EXTENSION); - } - - } - ''') - } - - def compileAbstractFileType(Grammar grammar, String fileExtension) { - fileAccessFactory.createJavaFile(grammar.abstractFileType, ''' - public class «grammar.abstractFileType.simpleName» extends «"com.intellij.openapi.fileTypes.LanguageFileType".typeRef» { - - @«"org.jetbrains.annotations.NonNls".typeRef» - public static final String DEFAULT_EXTENSION = "«fileExtension»"; - - protected «grammar.abstractFileType.simpleName»(final «"com.intellij.lang.Language".typeRef» language) { - super(language); - } - - @Override - public String getDefaultExtension() { - return DEFAULT_EXTENSION; - } - - @Override - public String getDescription() { - return "«grammar.simpleName» files"; - } - - @Override - public «"javax.swing.Icon".typeRef» getIcon() { - return «"org.eclipse.xtext.idea.Icons".typeRef».DSL_FILE_TYPE; - } - - @Override - public String getName() { - return "«grammar.simpleName»"; - } - - } - ''') - } - - def compileFileType(Grammar grammar) { - 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) { - fileAccessFactory.createJavaFile(grammar.ideaLanguage, ''' - public final class «grammar.ideaLanguage.simpleName» extends «"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» { - - public static final «grammar.ideaLanguage.simpleName» INSTANCE = new «grammar.ideaLanguage.simpleName»(); - - private «grammar.ideaLanguage.simpleName»() { - super("«grammar.languageId»"); - } - - } - ''') - } - - def compileStandaloneSetup(Grammar grammar) { - 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) { - 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) { - val file = fileAccessFactory.createJavaFile(grammar.elementTypeProvider) - file.importType("org.eclipse.xtext.idea.lang.IElementTypeProvider".typeRef) - file.importType("org.eclipse.xtext.psi.stubs.XtextFileElementType".typeRef) - file.importType("org.eclipse.xtext.psi.stubs.XtextFileStub".typeRef) - file.importType("org.eclipse.xtext.psi.tree.IGrammarAwareElementType".typeRef) - file.importType("com.intellij.psi.tree.IFileElementType".typeRef) - - file.content = ''' - public class «grammar.elementTypeProvider.simpleName» implements IElementTypeProvider { - - public static final IFileElementType FILE_TYPE = new XtextFileElementType>(«grammar.ideaLanguage».INSTANCE); - - private static final «Map»<«EObject», IGrammarAwareElementType> GRAMMAR_ELEMENT_TYPE = new «HashMap»<«EObject», IGrammarAwareElementType>(); - - private static IGrammarAwareElementType associate(IGrammarAwareElementType grammarAwareElementType) { - GRAMMAR_ELEMENT_TYPE.put(grammarAwareElementType.getGrammarElement(), grammarAwareElementType); - return grammarAwareElementType; - } - - private static final «grammar.grammarAccess» GRAMMAR_ACCESS = «grammar.ideaLanguage».INSTANCE.getInstance(«grammar.grammarAccess».class); - «FOR rule:grammar.allNonTerminalRules» - - private static class «rule.grammarElementIdentifier»Factory { - public static IGrammarAwareElementType create«rule.grammarElementIdentifier»ElementType() { - return new IGrammarAwareElementType("«rule.grammarElementIdentifier»_ELEMENT_TYPE", «grammar.ideaLanguage».INSTANCE, GRAMMAR_ACCESS.«rule.gaRuleAccessor»); - } - «FOR element:rule.eAllContents.filter(AbstractElement).toIterable» - public static IGrammarAwareElementType create«element.grammarElementIdentifier»ElementType() { - return new IGrammarAwareElementType("«element.grammarElementIdentifier»_ELEMENT_TYPE", «grammar.ideaLanguage».INSTANCE, GRAMMAR_ACCESS.«rule.gaElementsAccessor».«element.gaElementAccessor»); - } - «ENDFOR» - } - - public static final IGrammarAwareElementType «rule.grammarElementIdentifier»_ELEMENT_TYPE = associate(«rule.grammarElementIdentifier»Factory.create«rule.grammarElementIdentifier»ElementType()); - «FOR element:rule.eAllContents.filter(AbstractElement).toIterable» - - public static final IGrammarAwareElementType «element.grammarElementIdentifier»_ELEMENT_TYPE = associate(«rule.grammarElementIdentifier»Factory.create«element.grammarElementIdentifier»ElementType()); - «ENDFOR» - «ENDFOR» - - @Override - public IFileElementType getFileType() { - return FILE_TYPE; - } - - @Override - public IGrammarAwareElementType findElementType(«EObject» grammarElement) { - return GRAMMAR_ELEMENT_TYPE.get(grammarElement); - } - «FOR rule:grammar.allNonTerminalRules» - - public IGrammarAwareElementType get«rule.grammarElementIdentifier»ElementType() { - return «rule.grammarElementIdentifier»_ELEMENT_TYPE; - } - «FOR element:rule.eAllContents.filter(AbstractElement).toIterable» - - public IGrammarAwareElementType get«element.grammarElementIdentifier»ElementType() { - return «element.grammarElementIdentifier»_ELEMENT_TYPE; - } - «ENDFOR» - «ENDFOR» - - } - ''' - return file - } - - def compileTokenTypeProvider(Grammar grammar) { - val tokenSet = "com.intellij.psi.tree.TokenSet".typeRef - val iElementType = "com.intellij.psi.tree.IElementType".typeRef - val indexedElementType = "IndexedElementType" // no typeRef is used here as 'IndexedElementType' is inner class of 'TokenTypeProvider' - return fileAccessFactory.createJavaFile(grammar.tokenTypeProvider, ''' - @«Singleton» - public class «grammar.tokenTypeProvider.simpleName» implements «"org.eclipse.xtext.idea.parser.TokenTypeProvider".typeRef» { - - private static final String[] TOKEN_NAMES = new «grammar.psiInternalParser»(null).getTokenNames(); - - private static final «iElementType»[] tokenTypes = new «iElementType»[TOKEN_NAMES.length]; - - static { - for (int i = 0; i < TOKEN_NAMES.length; i++) { - tokenTypes[i] = new «indexedElementType»(TOKEN_NAMES[i], i, «grammar.ideaLanguage».INSTANCE); - } - } - - «IF grammar.allTerminalRules.exists[name == 'WS']» - private static final «tokenSet» WHITESPACE_TOKENS = «tokenSet».create(tokenTypes[«grammar.psiInternalParser».RULE_WS]); - «ELSE» - private static final «tokenSet» WHITESPACE_TOKENS = «tokenSet».EMPTY; - «ENDIF» - «IF grammar.allTerminalRules.exists[name == 'SL_COMMENT'] && grammar.allTerminalRules.exists[name == 'ML_COMMENT']» - private static final «tokenSet» COMMENT_TOKENS = «tokenSet».create(tokenTypes[«grammar.psiInternalParser».RULE_SL_COMMENT], tokenTypes[«grammar.psiInternalParser».RULE_ML_COMMENT]); - «ELSEIF grammar.allTerminalRules.exists[name == 'SL_COMMENT']» - private static final «tokenSet» COMMENT_TOKENS = «tokenSet».create(tokenTypes[«grammar.psiInternalParser».RULE_SL_COMMENT]); - «ELSEIF grammar.allTerminalRules.exists[name == 'ML_COMMENT']» - private static final «tokenSet» COMMENT_TOKENS = «tokenSet».create(tokenTypes[«grammar.psiInternalParser».RULE_ML_COMMENT]); - «ELSE» - private static final «tokenSet» COMMENT_TOKENS = «tokenSet».EMPTY; - «ENDIF» - «IF grammar.allTerminalRules.exists[name == 'STRING']» - private static final «tokenSet» STRING_TOKENS = «tokenSet».create(tokenTypes[«grammar.psiInternalParser».RULE_STRING]); - «ELSE» - private static final «tokenSet» STRING_TOKENS = «tokenSet».EMPTY; - «ENDIF» - - @Override - public int getAntlrType(«iElementType» iElementType) { - return (iElementType instanceof «indexedElementType») ? ((«indexedElementType») iElementType).getLocalIndex() : «Token».INVALID_TOKEN_TYPE; - } - - @Override - public «iElementType» getIElementType(int antlrType) { - return tokenTypes[antlrType]; - } - - @Override - public «tokenSet» getWhitespaceTokens() { - return WHITESPACE_TOKENS; - } - - @Override - public «tokenSet» getCommentTokens() { - return COMMENT_TOKENS; - } - - @Override - public «tokenSet» getStringLiteralTokens() { - return STRING_TOKENS; - } - - } - ''') - } - - def compileSyntaxHighlighterFactory(Grammar grammar) { - val syntaxHighlighter = "com.intellij.openapi.fileTypes.SyntaxHighlighter".typeRef - val lazySyntaxHighlighter = "com.intellij.openapi.fileTypes.SingleLazyInstanceSyntaxHighlighterFactory".typeRef - return fileAccessFactory.createJavaFile(grammar.syntaxHighlighterFactory, ''' - public class «grammar.syntaxHighlighterFactory.simpleName» extends «lazySyntaxHighlighter» { - - @Override - @«"org.jetbrains.annotations.NotNull".typeRef» - protected «syntaxHighlighter» createHighlighter() { - return «grammar.ideaLanguage».INSTANCE.getInstance(«syntaxHighlighter».class); - } - } - ''') - } - - def compileSemanticHighlightVisitor(Grammar grammar) { - return fileAccessFactory.createJavaFile(grammar.semanticHighlightVisitor, ''' - public class «grammar.semanticHighlightVisitor.simpleName» extends «"org.eclipse.xtext.idea.highlighting.SemanticHighlightVisitor".typeRef» { - public «grammar.semanticHighlightVisitor.simpleName»() { - «grammar.ideaLanguage».INSTANCE.injectMembers(this); - } - } - ''') - } - - def compileParserDefinition(Grammar grammar) { - val EObjectRules = grammar.allRules.filter[EObjectRule] - return fileAccessFactory.createJavaFile(grammar.parserDefinition, ''' - public class «grammar.parserDefinition.simpleName» extends «grammar.superParserDefinition» { - «IF !EObjectRules.empty» - - @«Inject» - private «grammar.elementTypeProvider» elementTypeProvider; - «ENDIF» - - @Override - public «"com.intellij.psi.PsiFile".typeRef» createFile(«"com.intellij.psi.FileViewProvider".typeRef» viewProvider) { - return new «grammar.fileImpl»(viewProvider); - } - «IF !EObjectRules.empty» - - @Override - @SuppressWarnings("rawtypes") - public «'com.intellij.psi.PsiElement'.typeRef» createElement(«'com.intellij.lang.ASTNode'.typeRef» node) { - Boolean hasSemanticElement = node.getUserData(«'org.eclipse.xtext.idea.nodemodel.IASTNodeAwareNodeModelBuilder'.typeRef».HAS_SEMANTIC_ELEMENT_KEY); - if (hasSemanticElement != null && hasSemanticElement) { - «'com.intellij.psi.tree.IElementType'.typeRef» elementType = node.getElementType(); - «FOR rule : EObjectRules» - if (elementType == elementTypeProvider.get«rule.grammarElementIdentifier»ElementType()) { - «IF rule.named» - return new «'org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl'.typeRef»(node) {}; - «ELSE» - return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'.typeRef»(node) {}; - «ENDIF» - } - «FOR element : rule.EObjectElements» - if (elementType == elementTypeProvider.get«element.grammarElementIdentifier»ElementType()) { - «IF element.named» - return new «'org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl'.typeRef»(node) {}; - «ELSE» - return new «'org.eclipse.xtext.psi.impl.PsiEObjectImpl'.typeRef»(node) {}; - «ENDIF» - } - «ENDFOR» - «ENDFOR» - throw new «'java.lang.IllegalStateException'.typeRef»("Unexpected element type: " + elementType); - } - return super.createElement(node); - } - «ENDIF» - - } - ''') - } - - protected def getEObjectElements(AbstractRule rule) { - rule.eAllOfType(AbstractElement).filter[ element | - switch element { - Action, - RuleCall case element.EObjectRuleCall: true - default: false - } - ] - } - - protected def isNamed(EObject element) { - val type = switch element { - AbstractRule: element.type - RuleCall: element.rule?.type - Action: element.type - } - val classifier = type?.classifier - val feature = if(classifier instanceof EClass) classifier.getEStructuralFeature('name') - feature instanceof EAttribute && !feature.many && feature.EType.instanceClass !== null && String.isAssignableFrom(feature.EType.instanceClass) - } - - def compileAbstractCompletionContributor(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.abstractCompletionContributor, ''' - public class «grammar.abstractCompletionContributor.simpleName» extends «grammar.completionContributorSuperClass» { - public «grammar.abstractCompletionContributor.simpleName»(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) { - super(lang); - } - } - ''') - } - - def JavaFileAccess compileCompletionContributor(Grammar grammar) { - 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 - } - } - ''') - } 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( - '''META-INF/services/«ISetup.name»''', ''' - «grammar.runtimeSetup» - ''') - } - - def JavaFileAccess compileFacetConfiguration(Grammar grammar) { - 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) - file.importType("com.intellij.openapi.components.StoragePathMacros".typeRef) - file.importType("com.intellij.openapi.components.StorageScheme".typeRef) - if (grammar.inheritsXbase) { - file.importType("org.eclipse.xtext.xbase.idea.facet.XbaseFacetConfiguration".typeRef) - file.importType("org.eclipse.xtext.xbase.idea.facet.XbaseGeneratorConfigurationState".typeRef) - } else { - file.importType("org.eclipse.xtext.idea.facet.AbstractFacetConfiguration".typeRef) - file.importType("org.eclipse.xtext.idea.facet.GeneratorConfigurationState".typeRef) - } - file.content = ''' - «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«ELSE»AbstractFacetConfiguration implements PersistentStateComponent«ENDIF»{ - - } - ''' - return file - } - - def JavaFileAccess compileFacetType(Grammar grammar) { - val faceTypeId = "com.intellij.facet.FacetTypeId".typeRef("com.intellij.facet.Facet".typeRef(grammar.facetConfiguration)) - return fileAccessFactory.createJavaFile(grammar.facetType, ''' - public class «grammar.facetType.simpleName» extends «"org.eclipse.xtext.idea.facet.AbstractFacetType".typeRef(grammar.facetConfiguration)» { - - public static final «faceTypeId» TYPEID = new «faceTypeId»("«grammar.name»"); - - public «grammar.facetType.simpleName»() { - super(TYPEID, "«grammar.name»", "«grammar.simpleName»"); - «grammar.ideaLanguage».INSTANCE.injectMembers(this); - } - } - ''') - } - - def JavaFileAccess compileBaseColorSettingsPage(Grammar grammar) { - fileAccessFactory.createJavaFile(grammar.baseColorSettingsPage, ''' - public class «grammar.baseColorSettingsPage.simpleName» extends «"org.eclipse.xtext.idea.highlighting.AbstractColorSettingsPage".typeRef» { - - public «grammar.baseColorSettingsPage.simpleName»() { - «grammar.ideaLanguage».INSTANCE.injectMembers(this); - } - - @Override - public String getDisplayName() { - return «grammar.ideaLanguage».INSTANCE.getDisplayName(); - } - } - ''') - } - - def JavaFileAccess compileColorSettingsPage(Grammar grammar) { - 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» { - } - ''') - } - } } diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend index d76174ee8..a58c4e6b0 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend @@ -7,397 +7,15 @@ *******************************************************************************/ package org.eclipse.xtext.xtext.generator.idea.parser.antlr -import com.google.inject.Inject -import org.eclipse.emf.ecore.EObject -import org.eclipse.xtext.AbstractRule -import org.eclipse.xtext.Action -import org.eclipse.xtext.Assignment -import org.eclipse.xtext.CrossReference -import org.eclipse.xtext.EnumLiteralDeclaration -import org.eclipse.xtext.EnumRule -import org.eclipse.xtext.Grammar -import org.eclipse.xtext.Keyword -import org.eclipse.xtext.ParserRule -import org.eclipse.xtext.RuleCall -import org.eclipse.xtext.TerminalRule -import org.eclipse.xtext.UnorderedGroup -import org.eclipse.xtext.xtext.generator.idea.IdeaPluginClassNames import org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGrammarWithActionsGenerator -import org.eclipse.xtext.xtext.generator.parser.antlr.AntlrOptions - -import static extension org.eclipse.xtext.EcoreUtil2.* -import static extension org.eclipse.xtext.GrammarUtil.* -import static extension org.eclipse.xtext.xtext.generator.parser.antlr.AntlrGrammarGenUtil.* -import org.eclipse.xtext.AbstractElement +@Deprecated class PsiAntlrGrammarGenerator extends AbstractAntlrGrammarWithActionsGenerator { - @Inject - extension IdeaPluginClassNames - @Inject - extension PsiGrammarNaming naming - override protected getGrammarNaming() { - naming - } - - override protected compileParserImports(Grammar it, AntlrOptions options) ''' - - import «grammarNaming.getInternalParserSuperClass(it).name»; - import «grammar.elementTypeProvider»; - import org.eclipse.xtext.idea.parser.TokenTypeProvider; - import org.eclipse.xtext.parser.antlr.XtextTokenStream; - import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; - «IF !allParserRules.map[eAllContentsAsList].flatten.filter(UnorderedGroup).empty && options.backtrack» - import org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper.UnorderedGroupState; - «ENDIF» - import «grammarAccess.name»; - - import com.intellij.lang.PsiBuilder; - ''' - - override protected compileParserMembers(Grammar it, AntlrOptions options) ''' - @parser::members { - - «IF options.backtrack» - /* - This grammar contains a lot of empty actions to work around a bug in ANTLR. - Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases. - */ - - «ENDIF» - protected «grammarAccess.simpleName» grammarAccess; - - protected «grammar.elementTypeProvider.simpleName» elementTypeProvider; - - public «grammar.psiInternalParser.simpleName»(PsiBuilder builder, TokenStream input, «grammar.elementTypeProvider.simpleName» elementTypeProvider, «grammarAccess.simpleName» grammarAccess) { - this(input); - setPsiBuilder(builder); - this.grammarAccess = grammarAccess; - this.elementTypeProvider = elementTypeProvider; - } - - @Override - protected String getFirstRuleName() { - return "«(allParserRules.head.originalElement as AbstractRule).name»"; - } - - } - ''' - - override protected shouldBeSkipped(TerminalRule it, Grammar grammar) { - false } - override protected dispatch compileRule(ParserRule it, Grammar grammar, AntlrOptions options) ''' - «IF isValidEntryRule» - //Entry rule «entryRuleName» - «entryRuleName» returns [«currentType» current=false]«compileEntryInit(options)»: - { «markComposite» } - iv_«originalElement.ruleName»=«originalElement.ruleName»«defaultArgumentList» - { $current=$iv_«originalElement.ruleName».current; } - EOF; - «compileEntryFinally(options)» - «ENDIF» - - «compileEBNF(options)» - ''' - override protected compileInit(AbstractRule it, AntlrOptions options) ''' - «IF it instanceof ParserRule»«getParameterList(!isPassCurrentIntoFragment, currentType)»«ENDIF» returns «compileReturns(options)» - «super.compileInit(it, options)»''' - - protected def compileReturns(AbstractRule it, AntlrOptions options) { - switch it { - ParserRule case !originalElement.datatypeRule && originalElement.isEObjectFragmentRule: - '''[«currentType» current=in_current]''' - default: - '''[«currentType» current=false]''' - } - } - - override protected _dataTypeEbnf2(Keyword it, boolean supportActions) { - if (supportActions) ''' - { - «markLeaf» - } - kw=«super._dataTypeEbnf2(it, supportActions)» - { - «doneLeaf('kw')» - } - ''' - else { - super._dataTypeEbnf2(it, supportActions) - } - } - - override protected _dataTypeEbnf2(RuleCall it, boolean supportActions) { - if (supportActions) { - switch it.getRule { - EnumRule case assigned, - ParserRule case assigned: - super._dataTypeEbnf2(it, supportActions) - EnumRule, - ParserRule: ''' - { - «markComposite» - } - «super._dataTypeEbnf2(it, supportActions)» - { - «doneComposite» - } - ''' - TerminalRule: ''' - { - «markLeaf» - } - «localVar»=«super._dataTypeEbnf2(it, supportActions)» - { - «doneLeaf(localVar)» - } - ''' - default: - super._dataTypeEbnf2(it, supportActions) - } - } else { - super._dataTypeEbnf2(it, supportActions) - } - } - - override protected _ebnf2(Action it, AntlrOptions options, boolean supportActions) { - if (!supportActions) - return super._ebnf2(it, options, supportActions) - else ''' - «IF options.backtrack» - { - /* */ - } - «ENDIF» - { - «precedeComposite» - «doneComposite» - «associateWithSemanticElement» - } - ''' - } - - override protected _ebnf2(Keyword it, AntlrOptions options, boolean supportActions) { - if (!supportActions) - return super._ebnf2(it, options, supportActions) - else if(assigned) ''' - { - «markLeaf» - } - «containingAssignment.localVar(it)»=«super._ebnf2(it, options, supportActions)» - { - «doneLeaf(containingAssignment.localVar(it))» - } - ''' - else ''' - { - «markLeaf» - } - «localVar»=«super._ebnf2(it, options, supportActions)» - { - «doneLeaf(localVar)» - } - ''' - } - - override protected _ebnf2(EnumLiteralDeclaration it, AntlrOptions options, boolean supportActions) { - if (!supportActions) - return super._ebnf2(it, options, supportActions) - else ''' - { - «markLeaf» - } - «localVar»=«super._ebnf2(it, options, supportActions)» - { - «doneLeaf(localVar)» - } - ''' - } - - override protected _ebnf2(RuleCall it, AntlrOptions options, boolean supportActions) { - if (supportActions) { - switch rule { - EnumRule case assigned, - ParserRule case assigned: - super._ebnf2(it, options, supportActions) - EnumRule, - ParserRule case rule.originalElement.datatypeRule: ''' - «IF options.backtrack» - { - /* */ - } - «ENDIF» - { - «markComposite» - } - «super._ebnf2(it, options, supportActions)» - { - «doneComposite» - } - ''' - ParserRule: ''' - «IF options.backtrack» - { - /* */ - } - «ENDIF» - { - «IF isEObjectFragmentRuleCall» - if (!$current) { - «associateWithSemanticElement» - $current = true; - } - «ENDIF» - «markComposite» - } - «localVar»=«super._ebnf2(it, options, supportActions)» - { - $current = $«localVar».current; - «doneComposite» - } - ''' - TerminalRule: ''' - { - «markLeaf» - } - «localVar»=«super._ebnf2(it, options, supportActions)» - { - «doneLeaf(localVar)» - } - ''' - default: - super._ebnf2(it, options, supportActions) - } - } else { - super._ebnf2(it, options, supportActions) - } - } - - override protected crossrefEbnf(AbstractRule it, RuleCall call, CrossReference ref, boolean supportActions) { - if (supportActions) { - switch it { - EnumRule, - ParserRule: ''' - { - «ref.markComposite» - } - «super.crossrefEbnf(it, call, ref, supportActions)» - { - «ref.doneComposite» - } - ''' - TerminalRule: ''' - { - «ref.markLeaf» - } - «ref.containingAssignment.localVar»=«super.crossrefEbnf(it, call, ref, supportActions)» - { - «ref.doneLeaf(ref.containingAssignment.localVar)» - } - ''' - default: - throw new IllegalStateException("crossrefEbnf is not supported for " + it) - } - } else { - super.crossrefEbnf(it, call, ref, supportActions) - } - } - - override protected _assignmentEbnf(CrossReference it, Assignment assignment, AntlrOptions options, boolean supportActions) { - if (supportActions) ''' - «IF options.backtrack» - { - /* */ - } - «ENDIF» - { - if (!$current) { - «associateWithSemanticElement» - $current = true; - } - } - «super._assignmentEbnf(it, assignment, options, supportActions)»''' - else - super._assignmentEbnf(it, assignment, options, supportActions) - } - - override protected _assignmentEbnf(AbstractElement it, Assignment assignment, AntlrOptions options, boolean supportActions) { - if (supportActions) ''' - «super._assignmentEbnf(it, assignment, options, supportActions)» - { - if (!$current) { - «associateWithSemanticElement» - $current = true; - } - } - ''' - else - super._assignmentEbnf(it, assignment, options, supportActions) - } - - override protected _assignmentEbnf(RuleCall it, Assignment assignment, AntlrOptions options, boolean supportActions) { - if (supportActions) { - switch rule { - EnumRule, - ParserRule: ''' - { - «markComposite» - } - «assignment.localVar(it)»=«super._assignmentEbnf(it, assignment, options, supportActions)» - { - «doneComposite» - if(!$current) { - «associateWithSemanticElement» - $current = true; - } - } - ''' - TerminalRule: ''' - { - «markLeaf» - } - «assignment.localVar(it)»=«super._assignmentEbnf(it, assignment, options, supportActions)» - { - if(!$current) { - «associateWithSemanticElement» - $current = true; - } - } - { - «doneLeaf(assignment.localVar(it))» - } - ''' - default: - throw new IllegalStateException("assignmentEbnf is not supported for " + it) - } - } else { - super._assignmentEbnf(it, assignment, options, supportActions) - } - } - - def protected markLeaf(EObject it) '''markLeaf(elementTypeProvider.get«originalElement.grammarElementIdentifier»ElementType());''' - - def protected doneLeaf(EObject it, String token) '''doneLeaf(«token»);''' - - def protected markComposite(EObject it) '''markComposite(elementTypeProvider.get«originalElement.grammarElementIdentifier»ElementType());''' - - def protected doneComposite(EObject it) '''doneComposite();''' - - def protected precedeComposite(EObject it) '''precedeComposite(elementTypeProvider.get«originalElement.grammarElementIdentifier»ElementType());''' - - def protected associateWithSemanticElement() '''associateWithSemanticElement();''' - - override protected isPassCurrentIntoFragment() { - true - } - - override protected getCurrentType() { - 'Boolean' - } } \ No newline at end of file diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend deleted file mode 100644 index ac27441db..000000000 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * 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.xtext.generator.idea.parser.antlr - -import com.google.inject.Inject -import com.google.inject.Singleton -import org.eclipse.xtext.Grammar -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming -import org.eclipse.xtext.xtext.generator.model.TypeReference -import org.eclipse.xtext.xtext.generator.parser.antlr.GrammarNaming - -@Singleton -class PsiGrammarNaming extends GrammarNaming { - @Inject - extension XtextGeneratorNaming - - override isCombinedGrammar(Grammar it) { - // separated grammars are not supported for IDEA yet - true - } - - override String getParserPackage(Grammar it) '''«ideaBasePackage».parser.antlr''' - - override getInternalParserSuperClass(Grammar it) { - new TypeReference("org.eclipse.xtext.idea.parser.AbstractPsiAntlrParser") - } - - override protected getGrammarNamePrefix(Grammar it) { - "Psi" - } - -} \ No newline at end of file diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend index 22e800356..90e91ecd3 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend @@ -7,33 +7,15 @@ *******************************************************************************/ package org.eclipse.xtext.xtext.generator.idea.parser.antlr -import com.google.inject.Inject import org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFragment2 +@Deprecated class XtextAntlrIDEAGeneratorFragment extends AbstractAntlrGeneratorFragment2 { - @Inject - PsiAntlrGrammarGenerator generator - - @Inject extension PsiGrammarNaming override protected doGenerate() { if (!projectConfig.ideaPlugin.enabled) return; - val fsa = projectConfig.ideaPlugin.srcGen - generator.generate(grammar, options, fsa) - - val encoding = codeConfig.encoding - val grammarFileName = grammar.parserGrammar.grammarFileName - val absoluteGrammarFileName = '''«fsa.path»/«grammarFileName»''' - addAntlrParam('-fo') - addAntlrParam(absoluteGrammarFileName.substring(0, absoluteGrammarFileName.lastIndexOf('/'))) - antlrTool.runWithEncodingAndParams(absoluteGrammarFileName, encoding, antlrParams) - - simplifyUnorderedGroupPredicatesIfRequired(grammar, fsa, grammar.internalParserClass) - splitParserAndLexerIfEnabled(fsa, grammar.internalParserClass, grammar.lexerClass) - normalizeTokens(fsa, grammar.lexerGrammar.tokensFileName) - suppressWarnings(fsa, grammar.internalParserClass, grammar.lexerClass) - normalizeLineDelimiters(fsa, grammar.internalParserClass, grammar.lexerClass) + System.err.println("The support for Idea has been removed!") } } diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.java deleted file mode 100644 index f43f6249a..000000000 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginClassNames.java +++ /dev/null @@ -1,283 +0,0 @@ -/** - * 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.xtext.generator.idea; - -import com.google.inject.Inject; -import org.eclipse.xtext.Grammar; -import org.eclipse.xtext.GrammarUtil; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming; -import org.eclipse.xtext.xtext.generator.model.TypeReference; - -@SuppressWarnings("all") -public class IdeaPluginClassNames { - @Inject - @Extension - private XtextGeneratorNaming _xtextGeneratorNaming; - - public String toPath(final String fullName) { - return fullName.replace(".", "/"); - } - - public TypeReference getIdeaSetup(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus = (_simpleName + "IdeaSetup"); - return new TypeReference(_ideaBasePackage, _plus); - } - - public TypeReference getExtensionFactory(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus = (_simpleName + "ExtensionFactory"); - return new TypeReference(_ideaBasePackage, _plus); - } - - public TypeReference getAbstractIdeaModule(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus = ("Abstract" + _simpleName); - String _plus_1 = (_plus + "IdeaModule"); - return new TypeReference(_ideaBasePackage, _plus_1); - } - - public TypeReference getFileType(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "FileType"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getAbstractFileType(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("Abstract" + _simpleName); - String _plus_2 = (_plus_1 + "FileType"); - return new TypeReference(_plus, _plus_2); - } - - public TypeReference getFileTypeFactory(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "FileTypeFactory"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getIdeaLanguage(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "Language"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getCodeBlockModificationListener(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.psi"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "CodeBlockModificationListener"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getPsiParser(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.parser"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "PsiParser"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getAntlrTokenFileProvider(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.parser.antlr"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "AntlrTokenFileProvider"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getPomDeclarationSearcher(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.pom"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "PomDeclarationSearcher"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getSyntaxHighlighterFactory(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".highlighting"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "SyntaxHighlighterFactory"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getSemanticHighlightVisitor(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".highlighting"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "SemanticHighlightVisitor"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getSuperParserDefinition(final Grammar it) { - return TypeReference.typeRef("org.eclipse.xtext.idea.parser.AbstractXtextParserDefinition"); - } - - public TypeReference getParserDefinition(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.parser"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "ParserDefinition"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getTokenTypeProvider(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang.parser"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "TokenTypeProvider"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getElementTypeProvider(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".lang"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "ElementTypeProvider"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getPsiInternalLexer(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".parser.antlr.internal"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("PsiInternal" + _simpleName); - String _plus_2 = (_plus_1 + "Lexer"); - return new TypeReference(_plus, _plus_2); - } - - public TypeReference getPsiInternalParser(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".parser.antlr.internal"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("PsiInternal" + _simpleName); - String _plus_2 = (_plus_1 + "Parser"); - return new TypeReference(_plus, _plus_2); - } - - public String getTokens(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".parser.antlr.internal.PsiInternal"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _path = this.toPath((_plus + _simpleName)); - return (_path + ".tokens"); - } - - public TypeReference getFileImpl(final Grammar it) { - String _psiImplPackageName = this.getPsiImplPackageName(it); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus = (_simpleName + "FileImpl"); - return new TypeReference(_psiImplPackageName, _plus); - } - - public String getPsiPackageName(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - return (_ideaBasePackage + ".lang.psi"); - } - - public String getPsiImplPackageName(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - return (_ideaBasePackage + ".lang.psi.impl"); - } - - public TypeReference getInternalParser(final Grammar it) { - String _namespace = GrammarUtil.getNamespace(it); - String _plus = (_namespace + ".parser.antlr.internal"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("Internal" + _simpleName); - String _plus_2 = (_plus_1 + "Parser"); - return new TypeReference(_plus, _plus_2); - } - - public TypeReference getAntlrLexer(final Grammar it) { - String _namespace = GrammarUtil.getNamespace(it); - String _plus = (_namespace + ".parser.antlr.internal"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("Internal" + _simpleName); - String _plus_2 = (_plus_1 + "Lexer"); - return new TypeReference(_plus, _plus_2); - } - - public TypeReference getCompletionContributorSuperClass(final Grammar it) { - TypeReference _elvis = null; - Grammar _head = IterableExtensions.head(it.getUsedGrammars()); - TypeReference _completionContributor = null; - if (_head!=null) { - _completionContributor=this.getCompletionContributor(_head); - } - if (_completionContributor != null) { - _elvis = _completionContributor; - } else { - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.completion.AbstractCompletionContributor"); - _elvis = _typeRef; - } - return _elvis; - } - - public TypeReference getCompletionContributor(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".completion"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "CompletionContributor"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getAbstractCompletionContributor(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".completion"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = ("Abstract" + _simpleName); - String _plus_2 = (_plus_1 + "CompletionContributor"); - return new TypeReference(_plus, _plus_2); - } - - public TypeReference getFacetConfiguration(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".facet"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "FacetConfiguration"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference getFacetType(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".facet"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "FacetType"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference baseColorSettingsPage(final Grammar it) { - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - String _plus = (_ideaBasePackage + ".highlighting"); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus_1 = (_simpleName + "BaseColorSettingsPage"); - return new TypeReference(_plus, _plus_1); - } - - public TypeReference colorSettingsPage(final Grammar it) { - String _packageName = this.baseColorSettingsPage(it).getPackageName(); - String _simpleName = GrammarUtil.getSimpleName(it); - String _plus = (_simpleName + "ColorSettingsPage"); - return new TypeReference(_packageName, _plus); - } -} diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.java deleted file mode 100644 index b6b0733f4..000000000 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginExtension.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.xtext.generator.idea; - -import org.eclipse.xtext.AbstractRule; -import org.eclipse.xtext.Grammar; -import org.eclipse.xtext.GrammarUtil; -import org.eclipse.xtext.TerminalRule; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IterableExtensions; - -@SuppressWarnings("all") -public class IdeaPluginExtension { - public Iterable getAllNonTerminalRules(final Grammar grammar) { - final Function1 _function = (AbstractRule it) -> { - return Boolean.valueOf((!(it instanceof TerminalRule))); - }; - return IterableExtensions.filter(GrammarUtil.allRules(grammar), _function); - } - - public String getSimpleName(final Grammar grammar) { - return GrammarUtil.getSimpleName(grammar); - } - - public String getPackageName(final Grammar grammar) { - return GrammarUtil.getNamespace(grammar); - } - - public String getLanguageID(final Grammar grammar) { - return grammar.getName(); - } -} diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.java index 0b7664045..1ade143ed 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.java @@ -7,105 +7,11 @@ */ package org.eclipse.xtext.xtext.generator.idea; -import com.google.common.base.Objects; -import com.google.common.collect.Iterables; -import com.google.common.collect.Iterators; -import com.google.inject.Guice; -import com.google.inject.Inject; -import com.google.inject.Injector; -import com.google.inject.Singleton; -import com.google.inject.name.Names; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; -import org.antlr.runtime.Token; -import org.eclipse.emf.ecore.EAttribute; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EClassifier; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.xtend.lib.annotations.Accessors; -import org.eclipse.xtend2.lib.StringConcatenation; -import org.eclipse.xtend2.lib.StringConcatenationClient; -import org.eclipse.xtext.AbstractElement; -import org.eclipse.xtext.AbstractRule; -import org.eclipse.xtext.Action; -import org.eclipse.xtext.EcoreUtil2; -import org.eclipse.xtext.GeneratedMetamodel; -import org.eclipse.xtext.Grammar; -import org.eclipse.xtext.GrammarUtil; -import org.eclipse.xtext.ISetup; -import org.eclipse.xtext.RuleCall; -import org.eclipse.xtext.TerminalRule; -import org.eclipse.xtext.TypeRef; -import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; -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.xbase.lib.CollectionLiterals; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xbase.lib.IteratorExtensions; -import org.eclipse.xtext.xbase.lib.Pure; -import org.eclipse.xtext.xbase.lib.StringExtensions; 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.idea.IdeaPluginClassNames; -import org.eclipse.xtext.xtext.generator.idea.IdeaPluginExtension; -import org.eclipse.xtext.xtext.generator.model.FileAccessFactory; -import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess; -import org.eclipse.xtext.xtext.generator.model.JavaFileAccess; -import org.eclipse.xtext.xtext.generator.model.TextFileAccess; -import org.eclipse.xtext.xtext.generator.model.TypeReference; -import org.eclipse.xtext.xtext.generator.parser.antlr.ContentAssistGrammarNaming; -import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector; +@Deprecated @SuppressWarnings("all") public class IdeaPluginGenerator extends AbstractStubGeneratingFragment { - @Inject - @Extension - private XtextGeneratorNaming _xtextGeneratorNaming; - - @Inject - @Extension - private XbaseUsageDetector _xbaseUsageDetector; - - @Inject - private ContentAssistGrammarNaming caNaming; - - @Inject - @Extension - private IdeaPluginExtension _ideaPluginExtension; - - @Inject - @Extension - private IdeaPluginClassNames _ideaPluginClassNames; - - @Inject - @Extension - private GrammarAccessExtensions _grammarAccessExtensions; - - @Inject - private FileAccessFactory fileAccessFactory; - - private Set libraries = CollectionLiterals.newHashSet(); - - @Accessors - private boolean deployable = true; - - public boolean addLibrary(final String library) { - return this.libraries.add(library); - } - @Override public void generate() { boolean _isEnabled = this.getProjectConfig().getIdeaPlugin().isEnabled(); @@ -113,2614 +19,6 @@ public class IdeaPluginGenerator extends AbstractStubGeneratingFragment { if (_not) { return; } - final String fileExtension = IterableExtensions.head(this.getLanguage().getFileExtensions()); - final Grammar grammar = this.getLanguage().getGrammar(); - final GuiceModuleAccess.BindingFactory bindFactory = new GuiceModuleAccess.BindingFactory(); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider"), this._ideaPluginClassNames.getAntlrTokenFileProvider(grammar)); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.parser.antlr.Lexer"), this._ideaPluginClassNames.getPsiInternalLexer(grammar)); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("binder.bind("); - _builder.append(Lexer.class); - _builder.append(".class)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(".annotatedWith("); - _builder.append(Names.class, "\t"); - _builder.append(".named("); - _builder.append(LexerBindings.class, "\t"); - _builder.append(".RUNTIME))"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(".to("); - TypeReference _psiInternalLexer = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalLexer(grammar); - _builder.append(_psiInternalLexer, "\t"); - _builder.append(".class);"); - _builder.newLineIfNotEmpty(); - } - }; - bindFactory.addConfiguredBinding("RuntimeLexer", _client); - bindFactory.addTypeToType(TypeReference.typeRef("com.intellij.lang.PsiParser"), this._ideaPluginClassNames.getPsiParser(grammar)); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.parser.TokenTypeProvider"), this._ideaPluginClassNames.getTokenTypeProvider(grammar)); - bindFactory.addTypeToType(TypeReference.typeRef("com.intellij.lang.ParserDefinition"), this._ideaPluginClassNames.getParserDefinition(grammar)); - bindFactory.addTypeToTypeSingleton(TypeReference.typeRef("org.eclipse.xtext.idea.lang.IElementTypeProvider"), this._ideaPluginClassNames.getElementTypeProvider(grammar)); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.facet.AbstractFacetConfiguration"), this._ideaPluginClassNames.getFacetConfiguration(grammar)); - TypeReference _typeRef = TypeReference.typeRef("com.intellij.facet.FacetTypeId"); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - TypeReference _facetType = IdeaPluginGenerator.this._ideaPluginClassNames.getFacetType(grammar); - _builder.append(_facetType); - _builder.append(".TYPEID"); - } - }; - bindFactory.addTypeToInstance(_typeRef, _client_1); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser"), this.caNaming.getParserClass(grammar)); - StringConcatenationClient _client_2 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("binder.bind("); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer"); - _builder.append(_typeRef); - _builder.append(".class).annotatedWith("); - _builder.append(Names.class); - _builder.append(".named("); - TypeReference _typeRef_1 = TypeReference.typeRef("org.eclipse.xtext.ide.LexerIdeBindings"); - _builder.append(_typeRef_1); - _builder.append(".CONTENT_ASSIST)).to("); - TypeReference _lexerClass = IdeaPluginGenerator.this.caNaming.getLexerClass(grammar); - _builder.append(_lexerClass); - _builder.append(".class);"); - } - }; - bindFactory.addConfiguredBinding("ContentAssistLexer", _client_2); - boolean _inheritsXbase = this._xbaseUsageDetector.inheritsXbase(grammar); - if (_inheritsXbase) { - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider"), TypeReference.typeRef("org.eclipse.xtext.idea.common.types.StubBasedTypeScopeProvider")); - TypeReference _typeReference = new TypeReference("org.eclipse.xtext.xbase.typesystem.internal", "IFeatureScopeTracker.Provider"); - bindFactory.addTypeToType(_typeReference, TypeReference.typeRef("org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider")); - StringConcatenationClient _client_3 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("binder.bind("); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.psi.IPsiModelAssociations"); - _builder.append(_typeRef); - _builder.append(".class)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(".annotatedWith("); - _builder.append(LanguageSpecific.class, "\t"); - _builder.append(".class)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(".to("); - TypeReference _typeRef_1 = TypeReference.typeRef("org.eclipse.xtext.idea.common.types.DerivedMemberAwarePsiModelAssociations"); - _builder.append(_typeRef_1, "\t"); - _builder.append(".class);"); - _builder.newLineIfNotEmpty(); - } - }; - bindFactory.addConfiguredBinding("LanguageSpecificPsiModelAssociations", _client_3); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.highlighting.IHighlightingConfiguration"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.highlighting.XbaseHighlightingConfiguration")); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.formatting.BlockFactory"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.formatting.XbaseBlockFactory")); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.formatting.ChildAttributesProvider"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.formatting.XbaseChildAttributesProvider")); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.ide.editor.bracketmatching.IBracePairProvider"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.bracketmatching.XbaseBracePairProvider")); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.idea.findusages.IReferenceSearcher"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.findusages.JvmElementAwareReferenceSearcher")); - bindFactory.addTypeToType(TypeReference.typeRef("org.eclipse.xtext.xbase.compiler.IGeneratorConfigProvider"), TypeReference.typeRef("org.eclipse.xtext.xbase.idea.facet.XbaseGeneratorConfigProvider")); - TypeReference _typeRef_1 = TypeReference.typeRef("org.eclipse.xtext.idea.findusages.WordsScannerProvider"); - TypeReference _typeReference_1 = new TypeReference("org.eclipse.xtext.xbase.idea.findusages", "XbaseWordsScanner.XbaseWordsScannerProvider"); - bindFactory.addTypeToType(_typeRef_1, _typeReference_1); - } - bindFactory.contributeTo(this.getLanguage().getIdeaGenModule()); - JavaFileAccess _compileStandaloneSetup = this.compileStandaloneSetup(grammar); - JavaFileAccess _compileIdeaSetup = this.compileIdeaSetup(grammar); - JavaFileAccess _compileCompletionContributor = this.compileCompletionContributor(grammar); - JavaFileAccess _compileFileType = this.compileFileType(grammar); - JavaFileAccess _compileFacetConfiguration = this.compileFacetConfiguration(grammar); - JavaFileAccess _compileColorSettingsPage = this.compileColorSettingsPage(grammar); - final Consumer _function = (JavaFileAccess it) -> { - it.writeTo(this.getProjectConfig().getIdeaPlugin().getSrc()); - }; - Collections.unmodifiableList(CollectionLiterals.newArrayList(_compileStandaloneSetup, _compileIdeaSetup, _compileCompletionContributor, _compileFileType, _compileFacetConfiguration, _compileColorSettingsPage)).forEach(_function); - TextFileAccess _compileServicesISetup = this.compileServicesISetup(grammar); - JavaFileAccess _compileAbstractCompletionContributor = this.compileAbstractCompletionContributor(grammar); - JavaFileAccess _compileLanguage = this.compileLanguage(grammar); - JavaFileAccess _compileAbstractFileType = this.compileAbstractFileType(grammar, fileExtension); - JavaFileAccess _compileFileTypeFactory = this.compileFileTypeFactory(grammar); - JavaFileAccess _compileFileImpl = this.compileFileImpl(grammar); - JavaFileAccess _compileTokenTypeProvider = this.compileTokenTypeProvider(grammar); - JavaFileAccess _compileElementTypeProvider = this.compileElementTypeProvider(grammar); - JavaFileAccess _compileParserDefinition = this.compileParserDefinition(grammar); - JavaFileAccess _compileSyntaxHighlighterFactory = this.compileSyntaxHighlighterFactory(grammar); - JavaFileAccess _compileSemanticHighlightVisitor = this.compileSemanticHighlightVisitor(grammar); - JavaFileAccess _compileExtensionFactory = this.compileExtensionFactory(grammar); - JavaFileAccess _compileCodeBlockModificationListener = this.compileCodeBlockModificationListener(grammar); - JavaFileAccess _compilePsiParser = this.compilePsiParser(grammar); - JavaFileAccess _compileAntlrTokenFileProvider = this.compileAntlrTokenFileProvider(grammar); - JavaFileAccess _compilePomDeclarationSearcher = this.compilePomDeclarationSearcher(grammar); - JavaFileAccess _compileFacetType = this.compileFacetType(grammar); - JavaFileAccess _compileBaseColorSettingsPage = this.compileBaseColorSettingsPage(grammar); - final Consumer _function_1 = (TextFileAccess it) -> { - it.writeTo(this.getProjectConfig().getIdeaPlugin().getSrcGen()); - }; - Collections.unmodifiableList(CollectionLiterals.newArrayList(_compileServicesISetup, _compileAbstractCompletionContributor, _compileLanguage, _compileAbstractFileType, _compileFileTypeFactory, _compileFileImpl, _compileTokenTypeProvider, _compileElementTypeProvider, _compileParserDefinition, _compileSyntaxHighlighterFactory, _compileSemanticHighlightVisitor, _compileExtensionFactory, _compileCodeBlockModificationListener, _compilePsiParser, _compileAntlrTokenFileProvider, _compilePomDeclarationSearcher, _compileFacetType, _compileBaseColorSettingsPage)).forEach(_function_1); - if (this.deployable) { - final TextFileAccess pluginXml = this.compilePluginXml(grammar); - boolean _isFile = this.getProjectConfig().getIdeaPlugin().getMetaInf().isFile(pluginXml.getPath()); - boolean _not_1 = (!_isFile); - if (_not_1) { - pluginXml.writeTo(this.getProjectConfig().getIdeaPlugin().getMetaInf()); - } - this.compilePluginGenXml(grammar).writeTo(this.getProjectConfig().getIdeaPlugin().getMetaInf()); - } - } - - public String iml() { - return ".iml"; - } - - public JavaFileAccess compileExtensionFactory(final Grammar grammar) { - TypeReference _extensionFactory = this._ideaPluginClassNames.getExtensionFactory(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getExtensionFactory(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements "); - TypeReference _typeRef = TypeReference.typeRef("com.intellij.openapi.extensions.ExtensionFactory"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public Object createInstance("); - _builder.append(String.class, "\t"); - _builder.append(" factoryArgument, "); - _builder.append(String.class, "\t"); - _builder.append(" implementationClass) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(Class.class, "\t\t"); - _builder.append(" clazz;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("try {"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("clazz = "); - _builder.append(Class.class, "\t\t\t"); - _builder.append(".forName(implementationClass);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("} catch ("); - _builder.append(ClassNotFoundException.class, "\t\t"); - _builder.append(" e) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("throw new "); - _builder.append(IllegalArgumentException.class, "\t\t\t"); - _builder.append("(\"Couldn\'t load \"+implementationClass, e);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return "); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE. getInstance(clazz);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_extensionFactory, _client); - } - - public JavaFileAccess compileCodeBlockModificationListener(final Grammar grammar) { - TypeReference _codeBlockModificationListener = this._ideaPluginClassNames.getCodeBlockModificationListener(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getCodeBlockModificationListener(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.psi.BaseXtextCodeBlockModificationListener"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getCodeBlockModificationListener(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("("); - TypeReference _typeRef_1 = TypeReference.typeRef("com.intellij.psi.util.PsiModificationTracker"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" psiModificationTracker) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE, psiModificationTracker);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - { - boolean _inheritsXbase = IdeaPluginGenerator.this._xbaseUsageDetector.inheritsXbase(grammar); - if (_inheritsXbase) { - _builder.append("\t"); - _builder.append("protected boolean hasJavaStructuralChanges("); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.psi.impl.PsiTreeChangeEventImpl"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" event) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("return true;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_codeBlockModificationListener, _client); - } - - public JavaFileAccess compilePomDeclarationSearcher(final Grammar it) { - TypeReference _pomDeclarationSearcher = this._ideaPluginClassNames.getPomDeclarationSearcher(it); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getPomDeclarationSearcher(it).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.pom.AbstractXtextPomDeclarationSearcher"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getPomDeclarationSearcher(it).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(IdeaPluginGenerator.this.getGrammar()); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_pomDeclarationSearcher, _client); - } - - public JavaFileAccess compilePsiParser(final Grammar grammar) { - TypeReference _psiParser = this._ideaPluginClassNames.getPsiParser(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiParser(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.parser.AbstractXtextPsiParser"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - { - boolean _isEmpty = IdeaPluginGenerator.this._grammarAccessExtensions.initialHiddenTokens(grammar).isEmpty(); - boolean _not = (!_isEmpty); - if (_not) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(Set.class, "\t"); - _builder.append("<"); - _builder.append(String.class, "\t"); - _builder.append("> INITIAL_HIDDEN_TOKENS = new "); - _builder.append(HashSet.class, "\t"); - _builder.append("<"); - _builder.append(String.class, "\t"); - _builder.append(">("); - _builder.append(Arrays.class, "\t"); - _builder.append(".asList("); - { - List _initialHiddenTokens = IdeaPluginGenerator.this._grammarAccessExtensions.initialHiddenTokens(grammar); - boolean _hasElements = false; - for(final String hidden : _initialHiddenTokens) { - if (!_hasElements) { - _hasElements = true; - } else { - _builder.appendImmediate(", ", "\t"); - } - _builder.append("\""); - _builder.append(hidden, "\t"); - _builder.append("\""); - } - } - _builder.append("));"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(Set.class, "\t"); - _builder.append("<"); - _builder.append(String.class, "\t"); - _builder.append("> INITIAL_HIDDEN_TOKENS = "); - _builder.append(Collections.class, "\t"); - _builder.append(".emptySet();"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Inject.class, "\t"); - _builder.append(" "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("private "); - TypeReference _grammarAccess = IdeaPluginGenerator.this._grammarAccessExtensions.getGrammarAccess(grammar); - _builder.append(_grammarAccess, "\t"); - _builder.append(" grammarAccess;"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Inject.class, "\t"); - _builder.append(" "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("private "); - TypeReference _elementTypeProvider = IdeaPluginGenerator.this._ideaPluginClassNames.getElementTypeProvider(grammar); - _builder.append(_elementTypeProvider, "\t"); - _builder.append(" elementTypeProvider;"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Override.class, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("protected "); - TypeReference _typeRef_1 = TypeReference.typeRef("org.eclipse.xtext.idea.parser.AbstractPsiAntlrParser"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" createParser("); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.lang.PsiBuilder"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" builder, "); - TypeReference _typeRef_3 = TypeReference.typeRef("org.antlr.runtime.TokenStream"); - _builder.append(_typeRef_3, "\t"); - _builder.append(" tokenStream) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return new "); - TypeReference _psiInternalParser = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser, "\t\t"); - _builder.append("(builder, tokenStream, elementTypeProvider, grammarAccess);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Override.class, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("protected "); - _builder.append(Set.class, "\t"); - _builder.append("<"); - _builder.append(String.class, "\t"); - _builder.append("> getInitialHiddenTokens() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return INITIAL_HIDDEN_TOKENS;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_psiParser, _client); - } - - public JavaFileAccess compileAntlrTokenFileProvider(final Grammar grammar) { - TypeReference _antlrTokenFileProvider = this._ideaPluginClassNames.getAntlrTokenFileProvider(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getAntlrTokenFileProvider(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements "); - _builder.append(IAntlrTokenFileProvider.class); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Override.class, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(InputStream.class, "\t"); - _builder.append(" getAntlrTokenFile() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(ClassLoader.class, "\t\t"); - _builder.append(" classLoader = getClass().getClassLoader();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return classLoader.getResourceAsStream(\""); - String _tokens = IdeaPluginGenerator.this._ideaPluginClassNames.getTokens(grammar); - _builder.append(_tokens, "\t\t"); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_antlrTokenFileProvider, _client); - } - - public TextFileAccess compilePluginXml(final Grammar grammar) { - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append(""); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - String _ideaBasePackage = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaBasePackage(grammar); - _builder.append(_ideaBasePackage, "\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(""); - String _simpleName = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName, "\t"); - _builder.append(" Support"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("This plugin enables smart editing of "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName_1, "\t\t"); - _builder.append(" files."); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append("\t"); - _builder.append("1.0.0"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("My Company"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append("\t"); - _builder.append("org.eclipse.xtext.idea"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append(""); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createTextFile("plugin.xml", _client); - } - - public TextFileAccess compilePluginGenXml(final Grammar grammar) { - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append(""); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - { - Iterable _filter = Iterables.filter(grammar.getMetamodelDeclarations(), GeneratedMetamodel.class); - for(final GeneratedMetamodel generatedMetamodel : _filter) { - _builder.append("\t\t"); - _builder.append(""); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("head(IdeaPluginGenerator.this.getLanguage().getFileExtensions()); - _builder.append(_head, "\t\t\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("class=\"org.eclipse.xtext.resource.IResourceFactory\""); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("factoryClass=\""); - TypeReference _extensionFactory = IdeaPluginGenerator.this._ideaPluginClassNames.getExtensionFactory(grammar); - _builder.append(_extensionFactory, "\t\t\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("/>"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("head(IdeaPluginGenerator.this.getLanguage().getFileExtensions()); - _builder.append(_head_1, "\t\t\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("class=\"org.eclipse.xtext.idea.resource.IResourceIdeaServiceProvider\""); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("factoryClass=\""); - TypeReference _extensionFactory_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getExtensionFactory(grammar); - _builder.append(_extensionFactory_1, "\t\t\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("/>"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension = IdeaPluginGenerator.this.compileExtension(grammar, "lang.ast.factory", TypeReference.typeRef("org.eclipse.xtext.idea.lang.BaseXtextASTFactory")); - _builder.append(_compileExtension, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_1 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.parserDefinition", IdeaPluginGenerator.this._ideaPluginClassNames.getParserDefinition(grammar)); - _builder.append(_compileExtension_1, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_2 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.findUsagesProvider", TypeReference.typeRef("org.eclipse.xtext.idea.findusages.BaseXtextFindUsageProvider")); - _builder.append(_compileExtension_2, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_3 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.refactoringSupport", TypeReference.typeRef("org.eclipse.xtext.idea.refactoring.BaseXtextRefactoringSupportProvider")); - _builder.append(_compileExtension_3, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_4 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.namesValidator", TypeReference.typeRef("com.intellij.lang.refactoring.NamesValidator")); - _builder.append(_compileExtension_4, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_5 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.braceMatcher", TypeReference.typeRef("com.intellij.lang.PairedBraceMatcher")); - _builder.append(_compileExtension_5, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_6 = IdeaPluginGenerator.this.compileExtension(grammar, "annotator", TypeReference.typeRef("org.eclipse.xtext.idea.annotation.IssueAnnotator")); - _builder.append(_compileExtension_6, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t\t"); - CharSequence _compileExtension_7 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.psiStructureViewFactory", TypeReference.typeRef("com.intellij.lang.PsiStructureViewFactory")); - _builder.append(_compileExtension_7, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_8 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.documentationProvider", TypeReference.typeRef("org.eclipse.xtext.idea.documentation.IdeaDocumentationProvider")); - _builder.append(_compileExtension_8, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t\t"); - CharSequence _compileExtension_9 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.formatter", TypeReference.typeRef("com.intellij.formatting.FormattingModelBuilder")); - _builder.append(_compileExtension_9, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - CharSequence _compileExtension_10 = IdeaPluginGenerator.this.compileExtension(grammar, "lang.commenter", TypeReference.typeRef("com.intellij.lang.CodeDocumentationAwareCommenter")); - _builder.append(_compileExtension_10, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append(""); - _builder.newLine(); - _builder.append(""); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createTextFile("plugin_gen.xml", _client); - } - - public CharSequence compileExtension(final Grammar grammar, final String extensionPointId, final TypeReference implementationClass) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("<"); - _builder.append(extensionPointId); - _builder.append(" "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("language=\""); - String _languageID = this._ideaPluginExtension.getLanguageID(grammar); - _builder.append(_languageID, "\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("factoryClass=\""); - TypeReference _extensionFactory = this._ideaPluginClassNames.getExtensionFactory(grammar); - _builder.append(_extensionFactory, "\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("implementationClass=\""); - _builder.append(implementationClass, "\t"); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("/>"); - _builder.newLine(); - return _builder; - } - - public JavaFileAccess compileFileImpl(final Grammar grammar) { - TypeReference _fileImpl = this._ideaPluginClassNames.getFileImpl(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public final class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getFileImpl(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.psi.impl.BaseXtextFile"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileImpl(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("("); - TypeReference _typeRef_1 = TypeReference.typeRef("com.intellij.psi.FileViewProvider"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" viewProvider) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(viewProvider, "); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.openapi.fileTypes.FileType"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" getFileType() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return "); - TypeReference _fileType = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar); - _builder.append(_fileType, "\t\t"); - _builder.append(".INSTANCE;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_fileImpl, _client); - } - - public JavaFileAccess compileFileTypeFactory(final Grammar grammar) { - TypeReference _fileTypeFactory = this._ideaPluginClassNames.getFileTypeFactory(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getFileTypeFactory(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("com.intellij.openapi.fileTypes.FileTypeFactory"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void createFileTypes(@"); - TypeReference _typeRef_1 = TypeReference.typeRef("org.jetbrains.annotations.NotNull"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" "); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.openapi.fileTypes.FileTypeConsumer"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" consumer) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("consumer.consume("); - TypeReference _fileType = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar); - _builder.append(_fileType, "\t\t"); - _builder.append(".INSTANCE, "); - TypeReference _abstractFileType = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractFileType(grammar); - _builder.append(_abstractFileType, "\t\t"); - _builder.append(".DEFAULT_EXTENSION);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_fileTypeFactory, _client); - } - - public JavaFileAccess compileAbstractFileType(final Grammar grammar, final String fileExtension) { - TypeReference _abstractFileType = this._ideaPluginClassNames.getAbstractFileType(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractFileType(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("com.intellij.openapi.fileTypes.LanguageFileType"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - TypeReference _typeRef_1 = TypeReference.typeRef("org.jetbrains.annotations.NonNls"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public static final String DEFAULT_EXTENSION = \""); - _builder.append(fileExtension, "\t"); - _builder.append("\";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("protected "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractFileType(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("(final "); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.lang.Language"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" language) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(language);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public String getDefaultExtension() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return DEFAULT_EXTENSION;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public String getDescription() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return \""); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName_2, "\t\t"); - _builder.append(" files\";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - TypeReference _typeRef_3 = TypeReference.typeRef("javax.swing.Icon"); - _builder.append(_typeRef_3, "\t"); - _builder.append(" getIcon() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return "); - TypeReference _typeRef_4 = TypeReference.typeRef("org.eclipse.xtext.idea.Icons"); - _builder.append(_typeRef_4, "\t\t"); - _builder.append(".DSL_FILE_TYPE;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public String getName() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return \""); - String _simpleName_3 = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName_3, "\t\t"); - _builder.append("\";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_abstractFileType, _client); - } - - public JavaFileAccess compileFileType(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - TypeReference _fileType = this._ideaPluginClassNames.getFileType(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _abstractFileType = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractFileType(grammar); - _builder.append(_abstractFileType); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public static final "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append(" INSTANCE = new "); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName_2, "\t"); - _builder.append("()"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("new() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("super("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createXtendFile(_fileType, _client); - } else { - TypeReference _fileType_1 = this._ideaPluginClassNames.getFileType(grammar); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _abstractFileType = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractFileType(grammar); - _builder.append(_abstractFileType); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public static final "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append(" INSTANCE = new "); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName_2, "\t"); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_3 = IdeaPluginGenerator.this._ideaPluginClassNames.getFileType(grammar).getSimpleName(); - _builder.append(_simpleName_3, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createJavaFile(_fileType_1, _client_1); - } - return _xifexpression; - } - - public JavaFileAccess compileLanguage(final Grammar grammar) { - TypeReference _ideaLanguage = this._ideaPluginClassNames.getIdeaLanguage(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public final class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.lang.AbstractXtextLanguage"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append(" INSTANCE = new "); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar).getSimpleName(); - _builder.append(_simpleName_2, "\t"); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private "); - String _simpleName_3 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar).getSimpleName(); - _builder.append(_simpleName_3, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(\""); - String _languageId = GrammarUtil.getLanguageId(grammar); - _builder.append(_languageId, "\t\t"); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_ideaLanguage, _client); - } - - public JavaFileAccess compileStandaloneSetup(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - TypeReference _ideaStandaloneSetup = this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("class "); - String _simpleName = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _runtimeGenSetup = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeGenSetup(grammar); - _builder.append(_runtimeGenSetup); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("override createInjector() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("val runtimeModule = new "); - TypeReference _runtimeModule = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeModule(grammar); - _builder.append(_runtimeModule, "\t\t"); - _builder.append("()"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("val ideaModule = new "); - TypeReference _ideaModule = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaModule(grammar); - _builder.append(_ideaModule, "\t\t"); - _builder.append("()"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("val mergedModule = "); - _builder.append(Modules2.class, "\t\t"); - _builder.append(".mixin(runtimeModule, ideaModule)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return "); - _builder.append(Guice.class, "\t\t"); - _builder.append(".createInjector(mergedModule)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createXtendFile(_ideaStandaloneSetup, _client); - } else { - TypeReference _ideaStandaloneSetup_1 = this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _runtimeGenSetup = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeGenSetup(grammar); - _builder.append(_runtimeGenSetup); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(Injector.class, "\t"); - _builder.append(" createInjector() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _runtimeModule = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeModule(grammar); - _builder.append(_runtimeModule, "\t\t"); - _builder.append(" runtimeModule = new "); - TypeReference _runtimeModule_1 = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeModule(grammar); - _builder.append(_runtimeModule_1, "\t\t"); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _ideaModule = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaModule(grammar); - _builder.append(_ideaModule, "\t\t"); - _builder.append(" ideaModule = new "); - TypeReference _ideaModule_1 = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaModule(grammar); - _builder.append(_ideaModule_1, "\t\t"); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append(com.google.inject.Module.class, "\t\t"); - _builder.append(" mergedModule = "); - _builder.append(Modules2.class, "\t\t"); - _builder.append(".mixin(runtimeModule, ideaModule);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return "); - _builder.append(Guice.class, "\t\t"); - _builder.append(".createInjector(mergedModule);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createJavaFile(_ideaStandaloneSetup_1, _client_1); - } - return _xifexpression; - } - - public JavaFileAccess compileIdeaSetup(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - TypeReference _ideaSetup = this._ideaPluginClassNames.getIdeaSetup(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaSetup(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements "); - _builder.append(ISetup.class); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("override createInjectorAndDoEMFRegistration() {"); - _builder.newLine(); - _builder.append("\t\t"); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries"); - _builder.append(_typeRef, "\t\t"); - _builder.append(".ensureInitialized"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("new "); - TypeReference _ideaStandaloneSetup = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar); - _builder.append(_ideaStandaloneSetup, "\t\t"); - _builder.append("().createInjector"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createXtendFile(_ideaSetup, _client); - } else { - TypeReference _ideaSetup_1 = this._ideaPluginClassNames.getIdeaSetup(grammar); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaSetup(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements "); - _builder.append(ISetup.class); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(Injector.class, "\t"); - _builder.append(" createInjectorAndDoEMFRegistration() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries"); - _builder.append(_typeRef, "\t\t"); - _builder.append(".ensureInitialized();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return new "); - TypeReference _ideaStandaloneSetup = IdeaPluginGenerator.this._xtextGeneratorNaming.getIdeaStandaloneSetup(grammar); - _builder.append(_ideaStandaloneSetup, "\t\t"); - _builder.append("().createInjector();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createJavaFile(_ideaSetup_1, _client_1); - } - return _xifexpression; - } - - public JavaFileAccess compileElementTypeProvider(final Grammar grammar) { - final JavaFileAccess file = this.fileAccessFactory.createJavaFile(this._ideaPluginClassNames.getElementTypeProvider(grammar)); - file.importType(TypeReference.typeRef("org.eclipse.xtext.idea.lang.IElementTypeProvider")); - file.importType(TypeReference.typeRef("org.eclipse.xtext.psi.stubs.XtextFileElementType")); - file.importType(TypeReference.typeRef("org.eclipse.xtext.psi.stubs.XtextFileStub")); - file.importType(TypeReference.typeRef("org.eclipse.xtext.psi.tree.IGrammarAwareElementType")); - file.importType(TypeReference.typeRef("com.intellij.psi.tree.IFileElementType")); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getElementTypeProvider(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements IElementTypeProvider {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final IFileElementType FILE_TYPE = new XtextFileElementType>("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(Map.class, "\t"); - _builder.append("<"); - _builder.append(EObject.class, "\t"); - _builder.append(", IGrammarAwareElementType> GRAMMAR_ELEMENT_TYPE = new "); - _builder.append(HashMap.class, "\t"); - _builder.append("<"); - _builder.append(EObject.class, "\t"); - _builder.append(", IGrammarAwareElementType>();"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static IGrammarAwareElementType associate(IGrammarAwareElementType grammarAwareElementType) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("GRAMMAR_ELEMENT_TYPE.put(grammarAwareElementType.getGrammarElement(), grammarAwareElementType);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return grammarAwareElementType;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static final "); - TypeReference _grammarAccess = IdeaPluginGenerator.this._grammarAccessExtensions.getGrammarAccess(grammar); - _builder.append(_grammarAccess, "\t"); - _builder.append(" GRAMMAR_ACCESS = "); - TypeReference _ideaLanguage_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage_1, "\t"); - _builder.append(".INSTANCE.getInstance("); - TypeReference _grammarAccess_1 = IdeaPluginGenerator.this._grammarAccessExtensions.getGrammarAccess(grammar); - _builder.append(_grammarAccess_1, "\t"); - _builder.append(".class);"); - _builder.newLineIfNotEmpty(); - { - Iterable _allNonTerminalRules = IdeaPluginGenerator.this._ideaPluginExtension.getAllNonTerminalRules(grammar); - for(final AbstractRule rule : _allNonTerminalRules) { - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static class "); - String _grammarElementIdentifier = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier, "\t"); - _builder.append("Factory {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("public static IGrammarAwareElementType create"); - String _grammarElementIdentifier_1 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_1, "\t\t"); - _builder.append("ElementType() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("return new IGrammarAwareElementType(\""); - String _grammarElementIdentifier_2 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_2, "\t\t\t"); - _builder.append("_ELEMENT_TYPE\", "); - TypeReference _ideaLanguage_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage_2, "\t\t\t"); - _builder.append(".INSTANCE, GRAMMAR_ACCESS."); - String _gaRuleAccessor = IdeaPluginGenerator.this._grammarAccessExtensions.gaRuleAccessor(rule); - _builder.append(_gaRuleAccessor, "\t\t\t"); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - { - Iterable _iterable = IteratorExtensions.toIterable(Iterators.filter(rule.eAllContents(), AbstractElement.class)); - for(final AbstractElement element : _iterable) { - _builder.append("\t"); - _builder.append("\t"); - _builder.append("public static IGrammarAwareElementType create"); - String _grammarElementIdentifier_3 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element); - _builder.append(_grammarElementIdentifier_3, "\t\t"); - _builder.append("ElementType() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("return new IGrammarAwareElementType(\""); - String _grammarElementIdentifier_4 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element); - _builder.append(_grammarElementIdentifier_4, "\t\t\t"); - _builder.append("_ELEMENT_TYPE\", "); - TypeReference _ideaLanguage_3 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage_3, "\t\t\t"); - _builder.append(".INSTANCE, GRAMMAR_ACCESS."); - String _gaElementsAccessor = IdeaPluginGenerator.this._grammarAccessExtensions.gaElementsAccessor(rule); - _builder.append(_gaElementsAccessor, "\t\t\t"); - _builder.append("."); - String _gaElementAccessor = IdeaPluginGenerator.this._grammarAccessExtensions.gaElementAccessor(element); - _builder.append(_gaElementAccessor, "\t\t\t"); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final IGrammarAwareElementType "); - String _grammarElementIdentifier_5 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_5, "\t"); - _builder.append("_ELEMENT_TYPE = associate("); - String _grammarElementIdentifier_6 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_6, "\t"); - _builder.append("Factory.create"); - String _grammarElementIdentifier_7 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_7, "\t"); - _builder.append("ElementType());"); - _builder.newLineIfNotEmpty(); - { - Iterable _iterable_1 = IteratorExtensions.toIterable(Iterators.filter(rule.eAllContents(), AbstractElement.class)); - for(final AbstractElement element_1 : _iterable_1) { - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final IGrammarAwareElementType "); - String _grammarElementIdentifier_8 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element_1); - _builder.append(_grammarElementIdentifier_8, "\t"); - _builder.append("_ELEMENT_TYPE = associate("); - String _grammarElementIdentifier_9 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier_9, "\t"); - _builder.append("Factory.create"); - String _grammarElementIdentifier_10 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element_1); - _builder.append(_grammarElementIdentifier_10, "\t"); - _builder.append("ElementType());"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public IFileElementType getFileType() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return FILE_TYPE;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public IGrammarAwareElementType findElementType("); - _builder.append(EObject.class, "\t"); - _builder.append(" grammarElement) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return GRAMMAR_ELEMENT_TYPE.get(grammarElement);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - { - Iterable _allNonTerminalRules_1 = IdeaPluginGenerator.this._ideaPluginExtension.getAllNonTerminalRules(grammar); - for(final AbstractRule rule_1 : _allNonTerminalRules_1) { - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public IGrammarAwareElementType get"); - String _grammarElementIdentifier_11 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule_1); - _builder.append(_grammarElementIdentifier_11, "\t"); - _builder.append("ElementType() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("return "); - String _grammarElementIdentifier_12 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule_1); - _builder.append(_grammarElementIdentifier_12, "\t\t"); - _builder.append("_ELEMENT_TYPE;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - { - Iterable _iterable_2 = IteratorExtensions.toIterable(Iterators.filter(rule_1.eAllContents(), AbstractElement.class)); - for(final AbstractElement element_2 : _iterable_2) { - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public IGrammarAwareElementType get"); - String _grammarElementIdentifier_13 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element_2); - _builder.append(_grammarElementIdentifier_13, "\t"); - _builder.append("ElementType() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("return "); - String _grammarElementIdentifier_14 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element_2); - _builder.append(_grammarElementIdentifier_14, "\t\t"); - _builder.append("_ELEMENT_TYPE;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - } - } - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - file.setContent(_client); - return file; - } - - public JavaFileAccess compileTokenTypeProvider(final Grammar grammar) { - final TypeReference tokenSet = TypeReference.typeRef("com.intellij.psi.tree.TokenSet"); - final TypeReference iElementType = TypeReference.typeRef("com.intellij.psi.tree.IElementType"); - final String indexedElementType = "IndexedElementType"; - TypeReference _tokenTypeProvider = this._ideaPluginClassNames.getTokenTypeProvider(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("@"); - _builder.append(Singleton.class); - _builder.newLineIfNotEmpty(); - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getTokenTypeProvider(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" implements "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.parser.TokenTypeProvider"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static final String[] TOKEN_NAMES = new "); - TypeReference _psiInternalParser = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser, "\t"); - _builder.append("(null).getTokenNames();"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(iElementType, "\t"); - _builder.append("[] tokenTypes = new "); - _builder.append(iElementType, "\t"); - _builder.append("[TOKEN_NAMES.length];"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("static {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("for (int i = 0; i < TOKEN_NAMES.length; i++) {"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("tokenTypes[i] = new "); - _builder.append(indexedElementType, "\t\t\t"); - _builder.append("(TOKEN_NAMES[i], i, "); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - { - final Function1 _function = (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "WS")); - }; - boolean _exists = IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), _function); - if (_exists) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" WHITESPACE_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".create(tokenTypes["); - TypeReference _psiInternalParser_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_1, "\t"); - _builder.append(".RULE_WS]);"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" WHITESPACE_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".EMPTY;"); - _builder.newLineIfNotEmpty(); - } - } - { - if ((IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), ((Function1) (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "SL_COMMENT")); - })) && IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), ((Function1) (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "ML_COMMENT")); - })))) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" COMMENT_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".create(tokenTypes["); - TypeReference _psiInternalParser_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_2, "\t"); - _builder.append(".RULE_SL_COMMENT], tokenTypes["); - TypeReference _psiInternalParser_3 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_3, "\t"); - _builder.append(".RULE_ML_COMMENT]);"); - _builder.newLineIfNotEmpty(); - } else { - final Function1 _function_1 = (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "SL_COMMENT")); - }; - boolean _exists_1 = IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), _function_1); - if (_exists_1) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" COMMENT_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".create(tokenTypes["); - TypeReference _psiInternalParser_4 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_4, "\t"); - _builder.append(".RULE_SL_COMMENT]);"); - _builder.newLineIfNotEmpty(); - } else { - final Function1 _function_2 = (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "ML_COMMENT")); - }; - boolean _exists_2 = IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), _function_2); - if (_exists_2) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" COMMENT_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".create(tokenTypes["); - TypeReference _psiInternalParser_5 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_5, "\t"); - _builder.append(".RULE_ML_COMMENT]);"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" COMMENT_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".EMPTY;"); - _builder.newLineIfNotEmpty(); - } - } - } - } - { - final Function1 _function_3 = (TerminalRule it) -> { - String _name = it.getName(); - return Boolean.valueOf(Objects.equal(_name, "STRING")); - }; - boolean _exists_3 = IterableExtensions.exists(GrammarUtil.allTerminalRules(grammar), _function_3); - if (_exists_3) { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" STRING_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".create(tokenTypes["); - TypeReference _psiInternalParser_6 = IdeaPluginGenerator.this._ideaPluginClassNames.getPsiInternalParser(grammar); - _builder.append(_psiInternalParser_6, "\t"); - _builder.append(".RULE_STRING]);"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("private static final "); - _builder.append(tokenSet, "\t"); - _builder.append(" STRING_TOKENS = "); - _builder.append(tokenSet, "\t"); - _builder.append(".EMPTY;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public int getAntlrType("); - _builder.append(iElementType, "\t"); - _builder.append(" iElementType) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return (iElementType instanceof "); - _builder.append(indexedElementType, "\t\t"); - _builder.append(") ? (("); - _builder.append(indexedElementType, "\t\t"); - _builder.append(") iElementType).getLocalIndex() : "); - _builder.append(Token.class, "\t\t"); - _builder.append(".INVALID_TOKEN_TYPE;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(iElementType, "\t"); - _builder.append(" getIElementType(int antlrType) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return tokenTypes[antlrType];"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(tokenSet, "\t"); - _builder.append(" getWhitespaceTokens() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return WHITESPACE_TOKENS;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(tokenSet, "\t"); - _builder.append(" getCommentTokens() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return COMMENT_TOKENS;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(tokenSet, "\t"); - _builder.append(" getStringLiteralTokens() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return STRING_TOKENS;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_tokenTypeProvider, _client); - } - - public JavaFileAccess compileSyntaxHighlighterFactory(final Grammar grammar) { - final TypeReference syntaxHighlighter = TypeReference.typeRef("com.intellij.openapi.fileTypes.SyntaxHighlighter"); - final TypeReference lazySyntaxHighlighter = TypeReference.typeRef("com.intellij.openapi.fileTypes.SingleLazyInstanceSyntaxHighlighterFactory"); - TypeReference _syntaxHighlighterFactory = this._ideaPluginClassNames.getSyntaxHighlighterFactory(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getSyntaxHighlighterFactory(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - _builder.append(lazySyntaxHighlighter); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - TypeReference _typeRef = TypeReference.typeRef("org.jetbrains.annotations.NotNull"); - _builder.append(_typeRef, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("protected "); - _builder.append(syntaxHighlighter, "\t"); - _builder.append(" createHighlighter() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return "); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE.getInstance("); - _builder.append(syntaxHighlighter, "\t\t"); - _builder.append(".class);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_syntaxHighlighterFactory, _client); - } - - public JavaFileAccess compileSemanticHighlightVisitor(final Grammar grammar) { - TypeReference _semanticHighlightVisitor = this._ideaPluginClassNames.getSemanticHighlightVisitor(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getSemanticHighlightVisitor(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.highlighting.SemanticHighlightVisitor"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getSemanticHighlightVisitor(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE.injectMembers(this);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_semanticHighlightVisitor, _client); - } - - public JavaFileAccess compileParserDefinition(final Grammar grammar) { - final Function1 _function = (AbstractRule it) -> { - return Boolean.valueOf(GrammarUtil.isEObjectRule(it)); - }; - final Iterable EObjectRules = IterableExtensions.filter(GrammarUtil.allRules(grammar), _function); - TypeReference _parserDefinition = this._ideaPluginClassNames.getParserDefinition(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getParserDefinition(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _superParserDefinition = IdeaPluginGenerator.this._ideaPluginClassNames.getSuperParserDefinition(grammar); - _builder.append(_superParserDefinition); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - { - boolean _isEmpty = IterableExtensions.isEmpty(EObjectRules); - boolean _not = (!_isEmpty); - if (_not) { - _builder.newLine(); - _builder.append("\t"); - _builder.append("@"); - _builder.append(Inject.class, "\t"); - _builder.append(" "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("private "); - TypeReference _elementTypeProvider = IdeaPluginGenerator.this._ideaPluginClassNames.getElementTypeProvider(grammar); - _builder.append(_elementTypeProvider, "\t"); - _builder.append(" elementTypeProvider;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - TypeReference _typeRef = TypeReference.typeRef("com.intellij.psi.PsiFile"); - _builder.append(_typeRef, "\t"); - _builder.append(" createFile("); - TypeReference _typeRef_1 = TypeReference.typeRef("com.intellij.psi.FileViewProvider"); - _builder.append(_typeRef_1, "\t"); - _builder.append(" viewProvider) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return new "); - TypeReference _fileImpl = IdeaPluginGenerator.this._ideaPluginClassNames.getFileImpl(grammar); - _builder.append(_fileImpl, "\t\t"); - _builder.append("(viewProvider);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - { - boolean _isEmpty_1 = IterableExtensions.isEmpty(EObjectRules); - boolean _not_1 = (!_isEmpty_1); - if (_not_1) { - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@SuppressWarnings(\"rawtypes\")"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - TypeReference _typeRef_2 = TypeReference.typeRef("com.intellij.psi.PsiElement"); - _builder.append(_typeRef_2, "\t"); - _builder.append(" createElement("); - TypeReference _typeRef_3 = TypeReference.typeRef("com.intellij.lang.ASTNode"); - _builder.append(_typeRef_3, "\t"); - _builder.append(" node) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("Boolean hasSemanticElement = node.getUserData("); - TypeReference _typeRef_4 = TypeReference.typeRef("org.eclipse.xtext.idea.nodemodel.IASTNodeAwareNodeModelBuilder"); - _builder.append(_typeRef_4, "\t\t"); - _builder.append(".HAS_SEMANTIC_ELEMENT_KEY);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("if (hasSemanticElement != null && hasSemanticElement) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - TypeReference _typeRef_5 = TypeReference.typeRef("com.intellij.psi.tree.IElementType"); - _builder.append(_typeRef_5, "\t\t\t"); - _builder.append(" elementType = node.getElementType();"); - _builder.newLineIfNotEmpty(); - { - for(final AbstractRule rule : EObjectRules) { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("if (elementType == elementTypeProvider.get"); - String _grammarElementIdentifier = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(rule); - _builder.append(_grammarElementIdentifier, "\t\t\t"); - _builder.append("ElementType()) {"); - _builder.newLineIfNotEmpty(); - { - boolean _isNamed = IdeaPluginGenerator.this.isNamed(rule); - if (_isNamed) { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("return new "); - TypeReference _typeRef_6 = TypeReference.typeRef("org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl"); - _builder.append(_typeRef_6, "\t\t\t\t"); - _builder.append("(node) {};"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("return new "); - TypeReference _typeRef_7 = TypeReference.typeRef("org.eclipse.xtext.psi.impl.PsiEObjectImpl"); - _builder.append(_typeRef_7, "\t\t\t\t"); - _builder.append("(node) {};"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - { - Iterable _eObjectElements = IdeaPluginGenerator.this.getEObjectElements(rule); - for(final AbstractElement element : _eObjectElements) { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("if (elementType == elementTypeProvider.get"); - String _grammarElementIdentifier_1 = IdeaPluginGenerator.this._grammarAccessExtensions.grammarElementIdentifier(element); - _builder.append(_grammarElementIdentifier_1, "\t\t\t"); - _builder.append("ElementType()) {"); - _builder.newLineIfNotEmpty(); - { - boolean _isNamed_1 = IdeaPluginGenerator.this.isNamed(element); - if (_isNamed_1) { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("return new "); - TypeReference _typeRef_8 = TypeReference.typeRef("org.eclipse.xtext.psi.impl.PsiNamedEObjectImpl"); - _builder.append(_typeRef_8, "\t\t\t\t"); - _builder.append("(node) {};"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("return new "); - TypeReference _typeRef_9 = TypeReference.typeRef("org.eclipse.xtext.psi.impl.PsiEObjectImpl"); - _builder.append(_typeRef_9, "\t\t\t\t"); - _builder.append("(node) {};"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - } - } - } - } - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("throw new "); - TypeReference _typeRef_10 = TypeReference.typeRef("java.lang.IllegalStateException"); - _builder.append(_typeRef_10, "\t\t\t"); - _builder.append("(\"Unexpected element type: \" + elementType);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("return super.createElement(node);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_parserDefinition, _client); - } - - protected Iterable getEObjectElements(final AbstractRule rule) { - final Function1 _function = (AbstractElement element) -> { - boolean _switchResult = false; - boolean _matched = false; - if (element instanceof Action) { - _matched=true; - } - if (!_matched) { - if (element instanceof RuleCall) { - boolean _isEObjectRuleCall = GrammarUtil.isEObjectRuleCall(element); - if (_isEObjectRuleCall) { - _matched=true; - } - } - } - if (_matched) { - _switchResult = true; - } - if (!_matched) { - _switchResult = false; - } - return Boolean.valueOf(_switchResult); - }; - return IterableExtensions.filter(EcoreUtil2.eAllOfType(rule, AbstractElement.class), _function); - } - - protected boolean isNamed(final EObject element) { - boolean _xblockexpression = false; - { - TypeRef _switchResult = null; - boolean _matched = false; - if (element instanceof AbstractRule) { - _matched=true; - _switchResult = ((AbstractRule)element).getType(); - } - if (!_matched) { - if (element instanceof RuleCall) { - _matched=true; - AbstractRule _rule = ((RuleCall)element).getRule(); - TypeRef _type = null; - if (_rule!=null) { - _type=_rule.getType(); - } - _switchResult = _type; - } - } - if (!_matched) { - if (element instanceof Action) { - _matched=true; - _switchResult = ((Action)element).getType(); - } - } - final TypeRef type = _switchResult; - EClassifier _classifier = null; - if (type!=null) { - _classifier=type.getClassifier(); - } - final EClassifier classifier = _classifier; - EStructuralFeature _xifexpression = null; - if ((classifier instanceof EClass)) { - _xifexpression = ((EClass)classifier).getEStructuralFeature("name"); - } - final EStructuralFeature feature = _xifexpression; - _xblockexpression = ((((feature instanceof EAttribute) && (!feature.isMany())) && (feature.getEType().getInstanceClass() != null)) && String.class.isAssignableFrom(feature.getEType().getInstanceClass())); - } - return _xblockexpression; - } - - public JavaFileAccess compileAbstractCompletionContributor(final Grammar grammar) { - TypeReference _abstractCompletionContributor = this._ideaPluginClassNames.getAbstractCompletionContributor(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _completionContributorSuperClass = IdeaPluginGenerator.this._ideaPluginClassNames.getCompletionContributorSuperClass(grammar); - _builder.append(_completionContributorSuperClass); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("("); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.lang.AbstractXtextLanguage"); - _builder.append(_typeRef, "\t"); - _builder.append(" lang) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(lang);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_abstractCompletionContributor, _client); - } - - public JavaFileAccess compileCompletionContributor(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - TypeReference _completionContributor = this._ideaPluginClassNames.getCompletionContributor(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _abstractCompletionContributor = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractCompletionContributor(grammar); - _builder.append(_abstractCompletionContributor); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("new() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("this("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE)"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("new("); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.lang.AbstractXtextLanguage"); - _builder.append(_typeRef, "\t"); - _builder.append(" lang) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(lang)"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("//custom rules here"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createXtendFile(_completionContributor, _client); - } else { - TypeReference _completionContributor_1 = this._ideaPluginClassNames.getCompletionContributor(grammar); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _abstractCompletionContributor = IdeaPluginGenerator.this._ideaPluginClassNames.getAbstractCompletionContributor(grammar); - _builder.append(_abstractCompletionContributor); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("this("); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getCompletionContributor(grammar).getSimpleName(); - _builder.append(_simpleName_2, "\t"); - _builder.append("("); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.lang.AbstractXtextLanguage"); - _builder.append(_typeRef, "\t"); - _builder.append(" lang) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(lang);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("//custom rules here"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createJavaFile(_completionContributor_1, _client_1); - } - return _xifexpression; - } - - public TextFileAccess compileServicesISetup(final Grammar grammar) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("META-INF/services/"); - String _name = ISetup.class.getName(); - _builder.append(_name); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - TypeReference _runtimeSetup = IdeaPluginGenerator.this._xtextGeneratorNaming.getRuntimeSetup(grammar); - _builder.append(_runtimeSetup); - _builder.newLineIfNotEmpty(); - } - }; - return this.fileAccessFactory.createTextFile(_builder.toString(), _client); - } - - public JavaFileAccess compileFacetConfiguration(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - _xifexpression = this.fileAccessFactory.createXtendFile(this._ideaPluginClassNames.getFacetConfiguration(grammar)); - } else { - _xifexpression = this.fileAccessFactory.createJavaFile(this._ideaPluginClassNames.getFacetConfiguration(grammar)); - } - final JavaFileAccess file = _xifexpression; - file.importType(TypeReference.typeRef("com.intellij.openapi.components.PersistentStateComponent")); - file.importType(TypeReference.typeRef("com.intellij.openapi.components.State")); - file.importType(TypeReference.typeRef("com.intellij.openapi.components.Storage")); - file.importType(TypeReference.typeRef("com.intellij.openapi.components.StoragePathMacros")); - file.importType(TypeReference.typeRef("com.intellij.openapi.components.StorageScheme")); - boolean _inheritsXbase = this._xbaseUsageDetector.inheritsXbase(grammar); - if (_inheritsXbase) { - file.importType(TypeReference.typeRef("org.eclipse.xtext.xbase.idea.facet.XbaseFacetConfiguration")); - file.importType(TypeReference.typeRef("org.eclipse.xtext.xbase.idea.facet.XbaseGeneratorConfigurationState")); - } else { - file.importType(TypeReference.typeRef("org.eclipse.xtext.idea.facet.AbstractFacetConfiguration")); - file.importType(TypeReference.typeRef("org.eclipse.xtext.idea.facet.GeneratorConfigurationState")); - } - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - { - boolean _isGenerateXtendStub = IdeaPluginGenerator.this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - _builder.append("@State(name = \""); - String _name = grammar.getName(); - _builder.append(_name); - _builder.append("Generator\", storages = #["); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("@Storage(id = \"default\", file = StoragePathMacros.PROJECT_FILE),"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("@Storage(id = \"dir\", file = StoragePathMacros.PROJECT_CONFIG_DIR"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("+ \"/"); - String _simpleName = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName, "\t\t\t\t"); - _builder.append("GeneratorConfig.xml\", scheme = StorageScheme.DIRECTORY_BASED)])"); - _builder.newLineIfNotEmpty(); - } else { - _builder.append("@State(name = \""); - String _name_1 = grammar.getName(); - _builder.append(_name_1); - _builder.append("Generator\", storages = {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("@Storage(id = \"default\", file = StoragePathMacros.PROJECT_FILE),"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("@Storage(id = \"dir\", file = StoragePathMacros.PROJECT_CONFIG_DIR"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("+ \"/"); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName_1, "\t\t\t\t"); - _builder.append("GeneratorConfig.xml\", scheme = StorageScheme.DIRECTORY_BASED)})"); - _builder.newLineIfNotEmpty(); - } - } - { - boolean _isGenerateXtendStub_1 = IdeaPluginGenerator.this.isGenerateXtendStub(); - boolean _not = (!_isGenerateXtendStub_1); - if (_not) { - _builder.append("public"); - } - } - _builder.append(" class "); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginClassNames.getFacetConfiguration(grammar).getSimpleName(); - _builder.append(_simpleName_2); - _builder.append(" extends "); - { - boolean _inheritsXbase = IdeaPluginGenerator.this._xbaseUsageDetector.inheritsXbase(grammar); - if (_inheritsXbase) { - _builder.append("XbaseFacetConfiguration implements PersistentStateComponent"); - } else { - _builder.append("AbstractFacetConfiguration implements PersistentStateComponent"); - } - } - _builder.append("{"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - file.setContent(_client); - return file; - } - - public JavaFileAccess compileFacetType(final Grammar grammar) { - final TypeReference faceTypeId = TypeReference.typeRef("com.intellij.facet.FacetTypeId", TypeReference.typeRef("com.intellij.facet.Facet", this._ideaPluginClassNames.getFacetConfiguration(grammar))); - TypeReference _facetType = this._ideaPluginClassNames.getFacetType(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.getFacetType(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.facet.AbstractFacetType", IdeaPluginGenerator.this._ideaPluginClassNames.getFacetConfiguration(grammar)); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final "); - _builder.append(faceTypeId, "\t"); - _builder.append(" TYPEID = new "); - _builder.append(faceTypeId, "\t"); - _builder.append("(\""); - String _name = grammar.getName(); - _builder.append(_name, "\t"); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getFacetType(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(TYPEID, \""); - String _name_1 = grammar.getName(); - _builder.append(_name_1, "\t\t"); - _builder.append("\", \""); - String _simpleName_2 = IdeaPluginGenerator.this._ideaPluginExtension.getSimpleName(grammar); - _builder.append(_simpleName_2, "\t\t"); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE.injectMembers(this);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_facetType, _client); - } - - public JavaFileAccess compileBaseColorSettingsPage(final Grammar grammar) { - TypeReference _baseColorSettingsPage = this._ideaPluginClassNames.baseColorSettingsPage(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.baseColorSettingsPage(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _typeRef = TypeReference.typeRef("org.eclipse.xtext.idea.highlighting.AbstractColorSettingsPage"); - _builder.append(_typeRef); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_1 = IdeaPluginGenerator.this._ideaPluginClassNames.baseColorSettingsPage(grammar).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - TypeReference _ideaLanguage = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage, "\t\t"); - _builder.append(".INSTANCE.injectMembers(this);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public String getDisplayName() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return "); - TypeReference _ideaLanguage_1 = IdeaPluginGenerator.this._ideaPluginClassNames.getIdeaLanguage(grammar); - _builder.append(_ideaLanguage_1, "\t\t"); - _builder.append(".INSTANCE.getDisplayName();"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - }; - return this.fileAccessFactory.createJavaFile(_baseColorSettingsPage, _client); - } - - public JavaFileAccess compileColorSettingsPage(final Grammar grammar) { - JavaFileAccess _xifexpression = null; - boolean _isGenerateXtendStub = this.isGenerateXtendStub(); - if (_isGenerateXtendStub) { - TypeReference _colorSettingsPage = this._ideaPluginClassNames.colorSettingsPage(grammar); - StringConcatenationClient _client = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.colorSettingsPage(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _baseColorSettingsPage = IdeaPluginGenerator.this._ideaPluginClassNames.baseColorSettingsPage(grammar); - _builder.append(_baseColorSettingsPage); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createXtendFile(_colorSettingsPage, _client); - } else { - TypeReference _colorSettingsPage_1 = this._ideaPluginClassNames.colorSettingsPage(grammar); - StringConcatenationClient _client_1 = new StringConcatenationClient() { - @Override - protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { - _builder.append("public class "); - String _simpleName = IdeaPluginGenerator.this._ideaPluginClassNames.colorSettingsPage(grammar).getSimpleName(); - _builder.append(_simpleName); - _builder.append(" extends "); - TypeReference _baseColorSettingsPage = IdeaPluginGenerator.this._ideaPluginClassNames.baseColorSettingsPage(grammar); - _builder.append(_baseColorSettingsPage); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - }; - _xifexpression = this.fileAccessFactory.createJavaFile(_colorSettingsPage_1, _client_1); - } - return _xifexpression; - } - - @Pure - public boolean isDeployable() { - return this.deployable; - } - - public void setDeployable(final boolean deployable) { - this.deployable = deployable; + System.err.println("The support for Idea has been removed!"); } } diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.java index 0d9e8d180..f69ee15b8 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.java @@ -7,1062 +7,14 @@ */ package org.eclipse.xtext.xtext.generator.idea.parser.antlr; -import com.google.common.collect.Iterables; -import com.google.inject.Inject; -import java.util.Arrays; -import java.util.List; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.xtend2.lib.StringConcatenation; -import org.eclipse.xtext.AbstractElement; -import org.eclipse.xtext.AbstractRule; -import org.eclipse.xtext.Action; -import org.eclipse.xtext.Assignment; -import org.eclipse.xtext.CrossReference; -import org.eclipse.xtext.EcoreUtil2; -import org.eclipse.xtext.EnumLiteralDeclaration; -import org.eclipse.xtext.EnumRule; -import org.eclipse.xtext.Grammar; -import org.eclipse.xtext.GrammarUtil; -import org.eclipse.xtext.Keyword; -import org.eclipse.xtext.ParserRule; -import org.eclipse.xtext.RuleCall; -import org.eclipse.xtext.TerminalRule; -import org.eclipse.xtext.UnorderedGroup; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xbase.lib.ListExtensions; -import org.eclipse.xtext.xtext.generator.idea.IdeaPluginClassNames; -import org.eclipse.xtext.xtext.generator.idea.parser.antlr.PsiGrammarNaming; -import org.eclipse.xtext.xtext.generator.model.TypeReference; import org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGrammarWithActionsGenerator; -import org.eclipse.xtext.xtext.generator.parser.antlr.AntlrGrammarGenUtil; -import org.eclipse.xtext.xtext.generator.parser.antlr.AntlrOptions; import org.eclipse.xtext.xtext.generator.parser.antlr.GrammarNaming; +@Deprecated @SuppressWarnings("all") public class PsiAntlrGrammarGenerator extends AbstractAntlrGrammarWithActionsGenerator { - @Inject - @Extension - private IdeaPluginClassNames _ideaPluginClassNames; - - @Inject - @Extension - private PsiGrammarNaming naming; - @Override protected GrammarNaming getGrammarNaming() { - return this.naming; - } - - @Override - protected String compileParserImports(final Grammar it, final AntlrOptions options) { - StringConcatenation _builder = new StringConcatenation(); - _builder.newLine(); - _builder.append("import "); - String _name = this.getGrammarNaming().getInternalParserSuperClass(it).getName(); - _builder.append(_name); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("import "); - TypeReference _elementTypeProvider = this._ideaPluginClassNames.getElementTypeProvider(GrammarUtil.getGrammar(it)); - _builder.append(_elementTypeProvider); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("import org.eclipse.xtext.idea.parser.TokenTypeProvider;"); - _builder.newLine(); - _builder.append("import org.eclipse.xtext.parser.antlr.XtextTokenStream;"); - _builder.newLine(); - _builder.append("import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;"); - _builder.newLine(); - { - if (((!IterableExtensions.isEmpty(Iterables.filter(Iterables.concat(ListExtensions.>map(GrammarUtil.allParserRules(it), ((Function1>) (ParserRule it_1) -> { - return EcoreUtil2.eAllContentsAsList(it_1); - }))), UnorderedGroup.class))) && options.isBacktrack())) { - _builder.append("import org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper.UnorderedGroupState;"); - _builder.newLine(); - } - } - _builder.append("import "); - String _name_1 = this._grammarAccessExtensions.getGrammarAccess(it).getName(); - _builder.append(_name_1); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("import com.intellij.lang.PsiBuilder;"); - _builder.newLine(); - return _builder.toString(); - } - - @Override - protected String compileParserMembers(final Grammar it, final AntlrOptions options) { - StringConcatenation _builder = new StringConcatenation(); - _builder.newLine(); - _builder.append("@parser::members {"); - _builder.newLine(); - _builder.newLine(); - { - boolean _isBacktrack = options.isBacktrack(); - if (_isBacktrack) { - _builder.append("/*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("This grammar contains a lot of empty actions to work around a bug in ANTLR."); - _builder.newLine(); - _builder.append(" "); - _builder.append("Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases."); - _builder.newLine(); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - } - } - _builder.append("\t"); - _builder.append("protected "); - String _simpleName = this._grammarAccessExtensions.getGrammarAccess(it).getSimpleName(); - _builder.append(_simpleName, "\t"); - _builder.append(" grammarAccess;"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("protected "); - String _simpleName_1 = this._ideaPluginClassNames.getElementTypeProvider(GrammarUtil.getGrammar(it)).getSimpleName(); - _builder.append(_simpleName_1, "\t"); - _builder.append(" elementTypeProvider;"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _simpleName_2 = this._ideaPluginClassNames.getPsiInternalParser(GrammarUtil.getGrammar(it)).getSimpleName(); - _builder.append(_simpleName_2, "\t"); - _builder.append("(PsiBuilder builder, TokenStream input, "); - String _simpleName_3 = this._ideaPluginClassNames.getElementTypeProvider(GrammarUtil.getGrammar(it)).getSimpleName(); - _builder.append(_simpleName_3, "\t"); - _builder.append(" elementTypeProvider, "); - String _simpleName_4 = this._grammarAccessExtensions.getGrammarAccess(it).getSimpleName(); - _builder.append(_simpleName_4, "\t"); - _builder.append(" grammarAccess) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("this(input);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("setPsiBuilder(builder);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("this.grammarAccess = grammarAccess;"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("this.elementTypeProvider = elementTypeProvider;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("protected String getFirstRuleName() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return \""); - ParserRule _originalElement = AntlrGrammarGenUtil.getOriginalElement(IterableExtensions.head(GrammarUtil.allParserRules(it))); - String _name = ((AbstractRule) _originalElement).getName(); - _builder.append(_name, "\t\t"); - _builder.append("\";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - return _builder.toString(); - } - - @Override - protected boolean shouldBeSkipped(final TerminalRule it, final Grammar grammar) { - return false; - } - - @Override - protected CharSequence _compileRule(final ParserRule it, final Grammar grammar, final AntlrOptions options) { - StringConcatenation _builder = new StringConcatenation(); - { - boolean _isValidEntryRule = AntlrGrammarGenUtil.isValidEntryRule(it); - if (_isValidEntryRule) { - _builder.append("//Entry rule "); - String _entryRuleName = this._grammarAccessExtensions.entryRuleName(it); - _builder.append(_entryRuleName); - _builder.newLineIfNotEmpty(); - String _entryRuleName_1 = this._grammarAccessExtensions.entryRuleName(it); - _builder.append(_entryRuleName_1); - _builder.append(" returns ["); - String _currentType = this.getCurrentType(); - _builder.append(_currentType); - _builder.append(" current=false]"); - CharSequence _compileEntryInit = this.compileEntryInit(it, options); - _builder.append(_compileEntryInit); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("{ "); - CharSequence _markComposite = this.markComposite(it); - _builder.append(_markComposite, "\t"); - _builder.append(" }"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("iv_"); - String _ruleName = this._grammarAccessExtensions.ruleName(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_ruleName, "\t"); - _builder.append("="); - String _ruleName_1 = this._grammarAccessExtensions.ruleName(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_ruleName_1, "\t"); - String _defaultArgumentList = AntlrGrammarGenUtil.getDefaultArgumentList(it); - _builder.append(_defaultArgumentList, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("{ $current=$iv_"); - String _ruleName_2 = this._grammarAccessExtensions.ruleName(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_ruleName_2, "\t"); - _builder.append(".current; }"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("EOF;"); - _builder.newLine(); - CharSequence _compileEntryFinally = this.compileEntryFinally(it, options); - _builder.append(_compileEntryFinally); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - String _compileEBNF = this.compileEBNF(it, options); - _builder.append(_compileEBNF); - _builder.newLineIfNotEmpty(); - return _builder; - } - - @Override - protected String compileInit(final AbstractRule it, final AntlrOptions options) { - StringConcatenation _builder = new StringConcatenation(); - { - if ((it instanceof ParserRule)) { - boolean _isPassCurrentIntoFragment = this.isPassCurrentIntoFragment(); - boolean _not = (!_isPassCurrentIntoFragment); - String _parameterList = AntlrGrammarGenUtil.getParameterList(((ParserRule)it), Boolean.valueOf(_not), this.getCurrentType()); - _builder.append(_parameterList); - } - } - _builder.append(" returns "); - CharSequence _compileReturns = this.compileReturns(it, options); - _builder.append(_compileReturns); - _builder.newLineIfNotEmpty(); - String _compileInit = super.compileInit(it, options); - _builder.append(_compileInit); - return _builder.toString(); - } - - protected CharSequence compileReturns(final AbstractRule it, final AntlrOptions options) { - CharSequence _switchResult = null; - boolean _matched = false; - if (it instanceof ParserRule) { - if (((!GrammarUtil.isDatatypeRule(AntlrGrammarGenUtil.getOriginalElement(((ParserRule)it)))) && GrammarUtil.isEObjectFragmentRule(AntlrGrammarGenUtil.getOriginalElement(((ParserRule)it))))) { - _matched=true; - StringConcatenation _builder = new StringConcatenation(); - _builder.append("["); - String _currentType = this.getCurrentType(); - _builder.append(_currentType); - _builder.append(" current=in_current]"); - _switchResult = _builder; - } - } - if (!_matched) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("["); - String _currentType = this.getCurrentType(); - _builder.append(_currentType); - _builder.append(" current=false]"); - _switchResult = _builder; - } - return _switchResult; - } - - @Override - protected String _dataTypeEbnf2(final Keyword it, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder.append(_markLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _builder.append("kw="); - String __dataTypeEbnf2 = super._dataTypeEbnf2(it, supportActions); - _builder.append(__dataTypeEbnf2); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, "kw"); - _builder.append(_doneLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _xifexpression = _builder.toString(); - } else { - _xifexpression = super._dataTypeEbnf2(it, supportActions); - } - return _xifexpression; - } - - @Override - protected String _dataTypeEbnf2(final RuleCall it, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - String _switchResult = null; - AbstractRule _rule = it.getRule(); - boolean _matched = false; - if (_rule instanceof EnumRule) { - boolean _isAssigned = GrammarUtil.isAssigned(it); - if (_isAssigned) { - _matched=true; - } - } - if (!_matched) { - if (_rule instanceof ParserRule) { - boolean _isAssigned = GrammarUtil.isAssigned(it); - if (_isAssigned) { - _matched=true; - } - } - } - if (_matched) { - _switchResult = super._dataTypeEbnf2(it, supportActions); - } - if (!_matched) { - if (_rule instanceof EnumRule) { - _matched=true; - } - if (!_matched) { - if (_rule instanceof ParserRule) { - _matched=true; - } - } - if (_matched) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markComposite = this.markComposite(it); - _builder.append(_markComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String __dataTypeEbnf2 = super._dataTypeEbnf2(it, supportActions); - _builder.append(__dataTypeEbnf2); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneComposite = this.doneComposite(it); - _builder.append(_doneComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _switchResult = _builder.toString(); - } - } - if (!_matched) { - if (_rule instanceof TerminalRule) { - _matched=true; - StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder_1.append(_markLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(it); - _builder_1.append(_localVar); - _builder_1.append("="); - String __dataTypeEbnf2_1 = super._dataTypeEbnf2(it, supportActions); - _builder_1.append(__dataTypeEbnf2_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, this._grammarAccessExtensions.localVar(it)); - _builder_1.append(_doneLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _switchResult = _builder_1.toString(); - } - } - if (!_matched) { - _switchResult = super._dataTypeEbnf2(it, supportActions); - } - _xifexpression = _switchResult; - } else { - _xifexpression = super._dataTypeEbnf2(it, supportActions); - } - return _xifexpression; - } - - @Override - protected String _ebnf2(final Action it, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if ((!supportActions)) { - return super._ebnf2(it, options, supportActions); - } else { - StringConcatenation _builder = new StringConcatenation(); - { - boolean _isBacktrack = options.isBacktrack(); - if (_isBacktrack) { - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("/* */"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _precedeComposite = this.precedeComposite(it); - _builder.append(_precedeComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - CharSequence _doneComposite = this.doneComposite(it); - _builder.append(_doneComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - CharSequence _associateWithSemanticElement = this.associateWithSemanticElement(); - _builder.append(_associateWithSemanticElement, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _xifexpression = _builder.toString(); - } - return _xifexpression; - } - - @Override - protected String _ebnf2(final Keyword it, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if ((!supportActions)) { - return super._ebnf2(it, options, supportActions); - } else { - String _xifexpression_1 = null; - boolean _isAssigned = GrammarUtil.isAssigned(it); - if (_isAssigned) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder.append(_markLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(GrammarUtil.containingAssignment(it), it); - _builder.append(_localVar); - _builder.append("="); - String __ebnf2 = super._ebnf2(it, options, supportActions); - _builder.append(__ebnf2); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, this._grammarAccessExtensions.localVar(GrammarUtil.containingAssignment(it), it)); - _builder.append(_doneLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _xifexpression_1 = _builder.toString(); - } else { - StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _markLeaf_1 = this.markLeaf(it); - _builder_1.append(_markLeaf_1, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar_1 = this._grammarAccessExtensions.localVar(it); - _builder_1.append(_localVar_1); - _builder_1.append("="); - String __ebnf2_1 = super._ebnf2(it, options, supportActions); - _builder_1.append(__ebnf2_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _doneLeaf_1 = this.doneLeaf(it, this._grammarAccessExtensions.localVar(it)); - _builder_1.append(_doneLeaf_1, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _xifexpression_1 = _builder_1.toString(); - } - _xifexpression = _xifexpression_1; - } - return _xifexpression; - } - - @Override - protected String _ebnf2(final EnumLiteralDeclaration it, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if ((!supportActions)) { - return super._ebnf2(it, options, supportActions); - } else { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder.append(_markLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(it); - _builder.append(_localVar); - _builder.append("="); - String __ebnf2 = super._ebnf2(it, options, supportActions); - _builder.append(__ebnf2); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, this._grammarAccessExtensions.localVar(it)); - _builder.append(_doneLeaf, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _xifexpression = _builder.toString(); - } - return _xifexpression; - } - - @Override - protected String _ebnf2(final RuleCall it, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - String _switchResult = null; - AbstractRule _rule = it.getRule(); - boolean _matched = false; - if (_rule instanceof EnumRule) { - boolean _isAssigned = GrammarUtil.isAssigned(it); - if (_isAssigned) { - _matched=true; - } - } - if (!_matched) { - if (_rule instanceof ParserRule) { - boolean _isAssigned = GrammarUtil.isAssigned(it); - if (_isAssigned) { - _matched=true; - } - } - } - if (_matched) { - _switchResult = super._ebnf2(it, options, supportActions); - } - if (!_matched) { - if (_rule instanceof EnumRule) { - _matched=true; - } - if (!_matched) { - if (_rule instanceof ParserRule) { - boolean _isDatatypeRule = GrammarUtil.isDatatypeRule(AntlrGrammarGenUtil.getOriginalElement(it.getRule())); - if (_isDatatypeRule) { - _matched=true; - } - } - } - if (_matched) { - StringConcatenation _builder = new StringConcatenation(); - { - boolean _isBacktrack = options.isBacktrack(); - if (_isBacktrack) { - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("/* */"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markComposite = this.markComposite(it); - _builder.append(_markComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String __ebnf2 = super._ebnf2(it, options, supportActions); - _builder.append(__ebnf2); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneComposite = this.doneComposite(it); - _builder.append(_doneComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _switchResult = _builder.toString(); - } - } - if (!_matched) { - if (_rule instanceof ParserRule) { - _matched=true; - StringConcatenation _builder_1 = new StringConcatenation(); - { - boolean _isBacktrack_1 = options.isBacktrack(); - if (_isBacktrack_1) { - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("/* */"); - _builder_1.newLine(); - _builder_1.append("}"); - _builder_1.newLine(); - } - } - _builder_1.append("{"); - _builder_1.newLine(); - { - boolean _isEObjectFragmentRuleCall = GrammarUtil.isEObjectFragmentRuleCall(it); - if (_isEObjectFragmentRuleCall) { - _builder_1.append("\t"); - _builder_1.append("if (!$current) {"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("\t"); - CharSequence _associateWithSemanticElement = this.associateWithSemanticElement(); - _builder_1.append(_associateWithSemanticElement, "\t\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("\t"); - _builder_1.append("\t"); - _builder_1.append("$current = true;"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("}"); - _builder_1.newLine(); - } - } - _builder_1.append("\t"); - CharSequence _markComposite_1 = this.markComposite(it); - _builder_1.append(_markComposite_1, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(it); - _builder_1.append(_localVar); - _builder_1.append("="); - String __ebnf2_1 = super._ebnf2(it, options, supportActions); - _builder_1.append(__ebnf2_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("$current = $"); - String _localVar_1 = this._grammarAccessExtensions.localVar(it); - _builder_1.append(_localVar_1, "\t"); - _builder_1.append(".current;"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("\t"); - CharSequence _doneComposite_1 = this.doneComposite(it); - _builder_1.append(_doneComposite_1, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _switchResult = _builder_1.toString(); - } - } - if (!_matched) { - if (_rule instanceof TerminalRule) { - _matched=true; - StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder_1.append(_markLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(it); - _builder_1.append(_localVar); - _builder_1.append("="); - String __ebnf2_1 = super._ebnf2(it, options, supportActions); - _builder_1.append(__ebnf2_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, this._grammarAccessExtensions.localVar(it)); - _builder_1.append(_doneLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _switchResult = _builder_1.toString(); - } - } - if (!_matched) { - _switchResult = super._ebnf2(it, options, supportActions); - } - _xifexpression = _switchResult; - } else { - _xifexpression = super._ebnf2(it, options, supportActions); - } - return _xifexpression; - } - - @Override - protected String crossrefEbnf(final AbstractRule it, final RuleCall call, final CrossReference ref, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - String _switchResult = null; - boolean _matched = false; - if (it instanceof EnumRule) { - _matched=true; - } - if (!_matched) { - if (it instanceof ParserRule) { - _matched=true; - } - } - if (_matched) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markComposite = this.markComposite(ref); - _builder.append(_markComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String _crossrefEbnf = super.crossrefEbnf(it, call, ref, supportActions); - _builder.append(_crossrefEbnf); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneComposite = this.doneComposite(ref); - _builder.append(_doneComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _switchResult = _builder.toString(); - } - if (!_matched) { - if (it instanceof TerminalRule) { - _matched=true; - StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _markLeaf = this.markLeaf(ref); - _builder_1.append(_markLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(GrammarUtil.containingAssignment(ref)); - _builder_1.append(_localVar); - _builder_1.append("="); - String _crossrefEbnf_1 = super.crossrefEbnf(it, call, ref, supportActions); - _builder_1.append(_crossrefEbnf_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(ref, this._grammarAccessExtensions.localVar(GrammarUtil.containingAssignment(ref))); - _builder_1.append(_doneLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _switchResult = _builder_1.toString(); - } - } - if (!_matched) { - throw new IllegalStateException(("crossrefEbnf is not supported for " + it)); - } - _xifexpression = _switchResult; - } else { - _xifexpression = super.crossrefEbnf(it, call, ref, supportActions); - } - return _xifexpression; - } - - @Override - protected String _assignmentEbnf(final CrossReference it, final Assignment assignment, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - StringConcatenation _builder = new StringConcatenation(); - { - boolean _isBacktrack = options.isBacktrack(); - if (_isBacktrack) { - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("/* */"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (!$current) {"); - _builder.newLine(); - _builder.append("\t\t"); - CharSequence _associateWithSemanticElement = this.associateWithSemanticElement(); - _builder.append(_associateWithSemanticElement, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("$current = true;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - String __assignmentEbnf = super._assignmentEbnf(it, assignment, options, supportActions); - _builder.append(__assignmentEbnf); - _xifexpression = _builder.toString(); - } else { - _xifexpression = super._assignmentEbnf(it, assignment, options, supportActions); - } - return _xifexpression; - } - - @Override - protected String _assignmentEbnf(final AbstractElement it, final Assignment assignment, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - StringConcatenation _builder = new StringConcatenation(); - String __assignmentEbnf = super._assignmentEbnf(it, assignment, options, supportActions); - _builder.append(__assignmentEbnf); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (!$current) {"); - _builder.newLine(); - _builder.append("\t\t"); - CharSequence _associateWithSemanticElement = this.associateWithSemanticElement(); - _builder.append(_associateWithSemanticElement, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("$current = true;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _xifexpression = _builder.toString(); - } else { - _xifexpression = super._assignmentEbnf(it, assignment, options, supportActions); - } - return _xifexpression; - } - - @Override - protected String _assignmentEbnf(final RuleCall it, final Assignment assignment, final AntlrOptions options, final boolean supportActions) { - String _xifexpression = null; - if (supportActions) { - String _switchResult = null; - AbstractRule _rule = it.getRule(); - boolean _matched = false; - if (_rule instanceof EnumRule) { - _matched=true; - } - if (!_matched) { - if (_rule instanceof ParserRule) { - _matched=true; - } - } - if (_matched) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _markComposite = this.markComposite(it); - _builder.append(_markComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - String _localVar = this._grammarAccessExtensions.localVar(assignment, it); - _builder.append(_localVar); - _builder.append("="); - String __assignmentEbnf = super._assignmentEbnf(it, assignment, options, supportActions); - _builder.append(__assignmentEbnf); - _builder.newLineIfNotEmpty(); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t"); - CharSequence _doneComposite = this.doneComposite(it); - _builder.append(_doneComposite, "\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("if(!$current) {"); - _builder.newLine(); - _builder.append("\t\t"); - CharSequence _associateWithSemanticElement = this.associateWithSemanticElement(); - _builder.append(_associateWithSemanticElement, "\t\t"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("$current = true;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _switchResult = _builder.toString(); - } - if (!_matched) { - if (_rule instanceof TerminalRule) { - _matched=true; - StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _markLeaf = this.markLeaf(it); - _builder_1.append(_markLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - String _localVar_1 = this._grammarAccessExtensions.localVar(assignment, it); - _builder_1.append(_localVar_1); - _builder_1.append("="); - String __assignmentEbnf_1 = super._assignmentEbnf(it, assignment, options, supportActions); - _builder_1.append(__assignmentEbnf_1); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("if(!$current) {"); - _builder_1.newLine(); - _builder_1.append("\t\t"); - CharSequence _associateWithSemanticElement_1 = this.associateWithSemanticElement(); - _builder_1.append(_associateWithSemanticElement_1, "\t\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("\t\t"); - _builder_1.append("$current = true;"); - _builder_1.newLine(); - _builder_1.append("\t"); - _builder_1.append("}"); - _builder_1.newLine(); - _builder_1.append("}"); - _builder_1.newLine(); - _builder_1.append("{"); - _builder_1.newLine(); - _builder_1.append("\t"); - CharSequence _doneLeaf = this.doneLeaf(it, this._grammarAccessExtensions.localVar(assignment, it)); - _builder_1.append(_doneLeaf, "\t"); - _builder_1.newLineIfNotEmpty(); - _builder_1.append("}"); - _builder_1.newLine(); - _switchResult = _builder_1.toString(); - } - } - if (!_matched) { - throw new IllegalStateException(("assignmentEbnf is not supported for " + it)); - } - _xifexpression = _switchResult; - } else { - _xifexpression = super._assignmentEbnf(it, assignment, options, supportActions); - } - return _xifexpression; - } - - protected CharSequence markLeaf(final EObject it) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("markLeaf(elementTypeProvider.get"); - String _grammarElementIdentifier = this._grammarAccessExtensions.grammarElementIdentifier(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_grammarElementIdentifier); - _builder.append("ElementType());"); - return _builder; - } - - protected CharSequence doneLeaf(final EObject it, final String token) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("doneLeaf("); - _builder.append(token); - _builder.append(");"); - return _builder; - } - - protected CharSequence markComposite(final EObject it) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("markComposite(elementTypeProvider.get"); - String _grammarElementIdentifier = this._grammarAccessExtensions.grammarElementIdentifier(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_grammarElementIdentifier); - _builder.append("ElementType());"); - return _builder; - } - - protected CharSequence doneComposite(final EObject it) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("doneComposite();"); - return _builder; - } - - protected CharSequence precedeComposite(final EObject it) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("precedeComposite(elementTypeProvider.get"); - String _grammarElementIdentifier = this._grammarAccessExtensions.grammarElementIdentifier(AntlrGrammarGenUtil.getOriginalElement(it)); - _builder.append(_grammarElementIdentifier); - _builder.append("ElementType());"); - return _builder; - } - - protected CharSequence associateWithSemanticElement() { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("associateWithSemanticElement();"); - return _builder; - } - - @Override - protected boolean isPassCurrentIntoFragment() { - return true; - } - - @Override - protected String getCurrentType() { - return "Boolean"; - } - - @Override - protected CharSequence compileRule(final Object it, final Grammar grammar, final AntlrOptions options) { - if (it instanceof EnumRule) { - return _compileRule((EnumRule)it, grammar, options); - } else if (it instanceof ParserRule) { - return _compileRule((ParserRule)it, grammar, options); - } else if (it instanceof TerminalRule) { - return _compileRule((TerminalRule)it, grammar, options); - } else if (it instanceof String) { - return _compileRule((String)it, grammar, options); - } else { - throw new IllegalArgumentException("Unhandled parameter types: " + - Arrays.asList(it, grammar, options).toString()); - } + return null; } } diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.java deleted file mode 100644 index 93c583251..000000000 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * 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.xtext.generator.idea.parser.antlr; - -import com.google.inject.Inject; -import com.google.inject.Singleton; -import org.eclipse.xtend2.lib.StringConcatenation; -import org.eclipse.xtext.Grammar; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming; -import org.eclipse.xtext.xtext.generator.model.TypeReference; -import org.eclipse.xtext.xtext.generator.parser.antlr.GrammarNaming; - -@Singleton -@SuppressWarnings("all") -public class PsiGrammarNaming extends GrammarNaming { - @Inject - @Extension - private XtextGeneratorNaming _xtextGeneratorNaming; - - @Override - public boolean isCombinedGrammar(final Grammar it) { - return true; - } - - @Override - public String getParserPackage(final Grammar it) { - StringConcatenation _builder = new StringConcatenation(); - String _ideaBasePackage = this._xtextGeneratorNaming.getIdeaBasePackage(it); - _builder.append(_ideaBasePackage); - _builder.append(".parser.antlr"); - return _builder.toString(); - } - - @Override - public TypeReference getInternalParserSuperClass(final Grammar it) { - return new TypeReference("org.eclipse.xtext.idea.parser.AbstractPsiAntlrParser"); - } - - @Override - protected String getGrammarNamePrefix(final Grammar it) { - return "Psi"; - } -} diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.java index fcea3dc36..2a3795f82 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.java @@ -7,23 +7,11 @@ */ package org.eclipse.xtext.xtext.generator.idea.parser.antlr; -import com.google.inject.Inject; -import org.eclipse.xtend2.lib.StringConcatenation; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xtext.generator.idea.parser.antlr.PsiAntlrGrammarGenerator; -import org.eclipse.xtext.xtext.generator.idea.parser.antlr.PsiGrammarNaming; -import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess; import org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFragment2; +@Deprecated @SuppressWarnings("all") public class XtextAntlrIDEAGeneratorFragment extends AbstractAntlrGeneratorFragment2 { - @Inject - private PsiAntlrGrammarGenerator generator; - - @Inject - @Extension - private PsiGrammarNaming _psiGrammarNaming; - @Override protected void doGenerate() { boolean _isEnabled = this.getProjectConfig().getIdeaPlugin().isEnabled(); @@ -31,23 +19,6 @@ public class XtextAntlrIDEAGeneratorFragment extends AbstractAntlrGeneratorFragm if (_not) { return; } - final IXtextGeneratorFileSystemAccess fsa = this.getProjectConfig().getIdeaPlugin().getSrcGen(); - this.generator.generate(this.getGrammar(), this.getOptions(), fsa); - final String encoding = this.getCodeConfig().getEncoding(); - final String grammarFileName = this._psiGrammarNaming.getParserGrammar(this.getGrammar()).getGrammarFileName(); - StringConcatenation _builder = new StringConcatenation(); - String _path = fsa.getPath(); - _builder.append(_path); - _builder.append("/"); - _builder.append(grammarFileName); - final String absoluteGrammarFileName = _builder.toString(); - this.addAntlrParam("-fo"); - this.addAntlrParam(absoluteGrammarFileName.substring(0, absoluteGrammarFileName.lastIndexOf("/"))); - this.getAntlrTool().runWithEncodingAndParams(absoluteGrammarFileName, encoding, this.getAntlrParams()); - this.simplifyUnorderedGroupPredicatesIfRequired(this.getGrammar(), fsa, this._psiGrammarNaming.getInternalParserClass(this.getGrammar())); - this.splitParserAndLexerIfEnabled(fsa, this._psiGrammarNaming.getInternalParserClass(this.getGrammar()), this._psiGrammarNaming.getLexerClass(this.getGrammar())); - this.normalizeTokens(fsa, this._psiGrammarNaming.getLexerGrammar(this.getGrammar()).getTokensFileName()); - this.suppressWarnings(fsa, this._psiGrammarNaming.getInternalParserClass(this.getGrammar()), this._psiGrammarNaming.getLexerClass(this.getGrammar())); - this.normalizeLineDelimiters(fsa, this._psiGrammarNaming.getInternalParserClass(this.getGrammar()), this._psiGrammarNaming.getLexerClass(this.getGrammar())); + System.err.println("The support for Idea has been removed!"); } } diff --git a/org.eclipse.xtext/src/org/eclipse/xtext/xtext/ReducedXtextResourceValidator.java b/org.eclipse.xtext/src/org/eclipse/xtext/xtext/ReducedXtextResourceValidator.java index 6fe3c5067..8ebd1a43f 100644 --- a/org.eclipse.xtext/src/org/eclipse/xtext/xtext/ReducedXtextResourceValidator.java +++ b/org.eclipse.xtext/src/org/eclipse/xtext/xtext/ReducedXtextResourceValidator.java @@ -13,8 +13,6 @@ import org.eclipse.xtext.validation.ResourceValidatorImpl; /** * This resource validator for xtext grammars only reports syntactic errors and broken references to rule calls and super grammars. - * It's used in IDEA's Xtext editor until we fully support ecore linking and indexing. - * see https://bugs.eclipse.org/bugs/show_bug.cgi?id=477683 * * @noreference This class is not intended to be referenced by clients. * @noextend This class is not intended to be subclassed by clients.