diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend index e3fcf34b5..759baa1de 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiAntlrGrammarGenerator.xtend @@ -33,9 +33,11 @@ class PsiAntlrGrammarGenerator extends AbstractAntlrGrammarWithActionsGenerator @Inject extension IdeaPluginClassNames + @Inject + extension PsiGrammarNaming naming - override protected getGrammarClass(Grammar it) { - getGrammarClass('Psi') + override protected getGrammarNaming() { + naming } override protected compileOptions(Grammar it, AntlrOptions options) ''' diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend new file mode 100644 index 000000000..1278cb511 --- /dev/null +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/PsiGrammarNaming.xtend @@ -0,0 +1,28 @@ +/******************************************************************************* + * 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.parser.antlr.GrammarNaming +import org.eclipse.xtext.xtext.generator.model.TypeReference +import static extension org.eclipse.xtext.GrammarUtil.* + +@Singleton +class PsiGrammarNaming extends GrammarNaming { + @Inject + extension XtextGeneratorNaming + + override String getParserPackage(Grammar it) '''«ideaBasePackage».parser.antlr.internal''' + + override getGrammarClass(Grammar it) { + new TypeReference(parserPackage, '''PsiInternal«simpleName»''') + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend index 27ba7ebbb..c5acd1d14 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/parser/antlr/XtextAntlrIDEAGeneratorFragment.xtend @@ -15,15 +15,17 @@ import org.eclipse.xtext.xtext.generator.parser.antlr.AbstractAntlrGeneratorFrag class XtextAntlrIDEAGeneratorFragment extends AbstractAntlrGeneratorFragment2 { @Inject - extension PsiAntlrGrammarGenerator + PsiAntlrGrammarGenerator generator @Inject CodeConfig codeConfig @Inject IXtextProjectConfig projectConfig + + @Inject extension PsiGrammarNaming override protected doGenerate() { val fsa = projectConfig.ideaPluginSrcGen - grammar.generate(options, fsa) + generator.generate(grammar, options, fsa) val encoding = codeConfig.encoding val grammarFileName = '''«grammar.grammarClass.path».g''' diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AbstractAntlrGrammarGenerator.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AbstractAntlrGrammarGenerator.xtend index c7df100b5..f520c19f9 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AbstractAntlrGrammarGenerator.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AbstractAntlrGrammarGenerator.xtend @@ -30,7 +30,6 @@ import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess -import org.eclipse.xtext.xtext.generator.model.TypeReference import static extension org.eclipse.xtext.GrammarUtil.* import static extension org.eclipse.xtext.xtext.generator.parser.antlr.AntlrGrammarGenUtil.* @@ -44,9 +43,6 @@ abstract class AbstractAntlrGrammarGenerator { @Inject protected extension GrammarAccessExtensions - @Inject - protected extension GrammarNaming - @Inject CodeConfig codeConfig def generate(Grammar it, AntlrOptions options, IXtextGeneratorFileSystemAccess fsa) { @@ -54,14 +50,14 @@ abstract class AbstractAntlrGrammarGenerator { filter.discardUnreachableRules = options.skipUnusedRules val RuleNames ruleNames = RuleNames.getRuleNames(grammar, true); val Grammar flattened = new FlattenedGrammarAccess(ruleNames, filter).getFlattenedGrammar(); - fsa.generateFile(grammarClass.path + '.g', flattened.compile(options)) + fsa.generateFile(grammarNaming.getGrammarClass(it).path + '.g', flattened.compile(options)) } - protected abstract def TypeReference getGrammarClass(Grammar it) + protected abstract def GrammarNaming getGrammarNaming() protected def compile(Grammar it, AntlrOptions options) ''' «codeConfig.fileHeader» - grammar «grammarClass.simpleName»; + grammar «grammarNaming.getGrammarClass(it).simpleName»; «compileOptions(options)» «compileTokens(options)» «compileLexerHeader(options)» @@ -82,7 +78,7 @@ abstract class AbstractAntlrGrammarGenerator { protected def compileLexerHeader(Grammar it, AntlrOptions options) ''' @lexer::header { - package «grammarClass.packageName»; + package «grammarNaming.getGrammarClass(it).packageName»; «compileLexerImports(options)» } ''' @@ -97,7 +93,7 @@ abstract class AbstractAntlrGrammarGenerator { protected def compileParserHeader(Grammar it, AntlrOptions options) ''' @parser::header { - package «grammarClass.packageName»; + package «grammarNaming.getGrammarClass(it).packageName»; «compileParserImports(options)» } ''' diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AntlrGrammarGenerator.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AntlrGrammarGenerator.xtend index a8a4b42ad..d56ce3430 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AntlrGrammarGenerator.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/AntlrGrammarGenerator.xtend @@ -27,12 +27,14 @@ 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 com.google.inject.Inject @Singleton class AntlrGrammarGenerator extends AbstractAntlrGrammarWithActionsGenerator { + @Inject extension GrammarNaming naming - protected override getGrammarClass(Grammar it) { - getGrammarClass('') + protected override getGrammarNaming() { + naming } protected override compileOptions(Grammar it, AntlrOptions options) ''' diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/GrammarNaming.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/GrammarNaming.xtend index 337537b15..43c4509df 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/GrammarNaming.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/GrammarNaming.xtend @@ -21,10 +21,10 @@ class GrammarNaming { @Inject extension XtextGeneratorNaming - def String getParserPackage(Grammar it) '''«runtimeBasePackage».idea.parser.antlr.internal''' + def String getParserPackage(Grammar it) '''«runtimeBasePackage».parser.antlr.internal''' - def TypeReference getGrammarClass(Grammar it, String prefix) { - new TypeReference(parserPackage, '''«prefix»Internal«simpleName»''') + def TypeReference getGrammarClass(Grammar it) { + new TypeReference(parserPackage, '''Internal«simpleName»''') } def TypeReference getInternalParserClass(Grammar it) {