/*
* generated by Xtext
*/
grammar InternalSGen;

options {
	superClass=AbstractInternalContentAssistParser;
	
}

@lexer::header {
package org.yakindu.sct.generator.genmodel.ui.contentassist.antlr.internal;

// Hack: Use our own Lexer superclass by means of import. 
// Currently there is no other way to specify the superclass for the lexer.
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
}

@parser::header {
package org.yakindu.sct.generator.genmodel.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.yakindu.sct.generator.genmodel.services.SGenGrammarAccess;

}

@parser::members {
 
 	private SGenGrammarAccess grammarAccess;
 	
    public void setGrammarAccess(SGenGrammarAccess grammarAccess) {
    	this.grammarAccess = grammarAccess;
    }
    
    @Override
    protected Grammar getGrammar() {
    	return grammarAccess.getGrammar();
    }
    
    @Override
    protected String getValueForTokenName(String tokenName) {
    	return tokenName;
    }

}




// Entry rule entryRuleGeneratorModel
entryRuleGeneratorModel 
:
{ before(grammarAccess.getGeneratorModelRule()); }
	 ruleGeneratorModel
{ after(grammarAccess.getGeneratorModelRule()); } 
	 EOF 
;

// Rule GeneratorModel
ruleGeneratorModel
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getGeneratorModelAccess().getGroup()); }
(rule__GeneratorModel__Group__0)
{ after(grammarAccess.getGeneratorModelAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleGeneratorEntry
entryRuleGeneratorEntry 
:
{ before(grammarAccess.getGeneratorEntryRule()); }
	 ruleGeneratorEntry
{ after(grammarAccess.getGeneratorEntryRule()); } 
	 EOF 
;

// Rule GeneratorEntry
ruleGeneratorEntry
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getGeneratorEntryAccess().getGroup()); }
(rule__GeneratorEntry__Group__0)
{ after(grammarAccess.getGeneratorEntryAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleFeatureConfiguration
entryRuleFeatureConfiguration 
:
{ before(grammarAccess.getFeatureConfigurationRule()); }
	 ruleFeatureConfiguration
{ after(grammarAccess.getFeatureConfigurationRule()); } 
	 EOF 
;

// Rule FeatureConfiguration
ruleFeatureConfiguration
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getGroup()); }
(rule__FeatureConfiguration__Group__0)
{ after(grammarAccess.getFeatureConfigurationAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleFeatureParameterValue
entryRuleFeatureParameterValue 
:
{ before(grammarAccess.getFeatureParameterValueRule()); }
	 ruleFeatureParameterValue
{ after(grammarAccess.getFeatureParameterValueRule()); } 
	 EOF 
;

// Rule FeatureParameterValue
ruleFeatureParameterValue
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getGroup()); }
(rule__FeatureParameterValue__Group__0)
{ after(grammarAccess.getFeatureParameterValueAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleLiteral
entryRuleLiteral 
:
{ before(grammarAccess.getLiteralRule()); }
	 ruleLiteral
{ after(grammarAccess.getLiteralRule()); } 
	 EOF 
;

// Rule Literal
ruleLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getLiteralAccess().getAlternatives()); }
(rule__Literal__Alternatives)
{ after(grammarAccess.getLiteralAccess().getAlternatives()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleBoolLiteral
entryRuleBoolLiteral 
:
{ before(grammarAccess.getBoolLiteralRule()); }
	 ruleBoolLiteral
{ after(grammarAccess.getBoolLiteralRule()); } 
	 EOF 
;

// Rule BoolLiteral
ruleBoolLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getBoolLiteralAccess().getGroup()); }
(rule__BoolLiteral__Group__0)
{ after(grammarAccess.getBoolLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleIntLiteral
entryRuleIntLiteral 
:
{ before(grammarAccess.getIntLiteralRule()); }
	 ruleIntLiteral
{ after(grammarAccess.getIntLiteralRule()); } 
	 EOF 
;

// Rule IntLiteral
ruleIntLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getIntLiteralAccess().getGroup()); }
(rule__IntLiteral__Group__0)
{ after(grammarAccess.getIntLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleRealLiteral
entryRuleRealLiteral 
:
{ before(grammarAccess.getRealLiteralRule()); }
	 ruleRealLiteral
{ after(grammarAccess.getRealLiteralRule()); } 
	 EOF 
;

// Rule RealLiteral
ruleRealLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getRealLiteralAccess().getGroup()); }
(rule__RealLiteral__Group__0)
{ after(grammarAccess.getRealLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleStringLiteral
entryRuleStringLiteral 
:
{ before(grammarAccess.getStringLiteralRule()); }
	 ruleStringLiteral
{ after(grammarAccess.getStringLiteralRule()); } 
	 EOF 
;

// Rule StringLiteral
ruleStringLiteral
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getStringLiteralAccess().getGroup()); }
(rule__StringLiteral__Group__0)
{ after(grammarAccess.getStringLiteralAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}



// Entry rule entryRuleQID
entryRuleQID 
:
{ before(grammarAccess.getQIDRule()); }
	 ruleQID
{ after(grammarAccess.getQIDRule()); } 
	 EOF 
;

// Rule QID
ruleQID
    @init {
		int stackSize = keepStackSize();
    }
	:
(
{ before(grammarAccess.getQIDAccess().getGroup()); }
(rule__QID__Group__0)
{ after(grammarAccess.getQIDAccess().getGroup()); }
)

;
finally {
	restoreStackSize(stackSize);
}




rule__Literal__Alternatives
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getLiteralAccess().getBoolLiteralParserRuleCall_0()); }
	ruleBoolLiteral
{ after(grammarAccess.getLiteralAccess().getBoolLiteralParserRuleCall_0()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_1()); }
	ruleIntLiteral
{ after(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_1()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getRealLiteralParserRuleCall_2()); }
	ruleRealLiteral
{ after(grammarAccess.getLiteralAccess().getRealLiteralParserRuleCall_2()); }
)

    |(
{ before(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_3()); }
	ruleStringLiteral
{ after(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__QID__Alternatives_1_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getQIDAccess().getColonColonKeyword_1_0_0()); }

	'::' 

{ after(grammarAccess.getQIDAccess().getColonColonKeyword_1_0_0()); }
)

    |(
{ before(grammarAccess.getQIDAccess().getFullStopKeyword_1_0_1()); }

	'.' 

{ after(grammarAccess.getQIDAccess().getFullStopKeyword_1_0_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}



rule__GeneratorModel__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__0__Impl
	rule__GeneratorModel__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getGeneratorModelKeyword_0()); }

	'GeneratorModel' 

{ after(grammarAccess.getGeneratorModelAccess().getGeneratorModelKeyword_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorModel__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__1__Impl
	rule__GeneratorModel__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getForKeyword_1()); }

	'for' 

{ after(grammarAccess.getGeneratorModelAccess().getForKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorModel__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__2__Impl
	rule__GeneratorModel__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getGeneratorIdAssignment_2()); }
(rule__GeneratorModel__GeneratorIdAssignment_2)
{ after(grammarAccess.getGeneratorModelAccess().getGeneratorIdAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorModel__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__3__Impl
	rule__GeneratorModel__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getLeftCurlyBracketKeyword_3()); }

	'{' 

{ after(grammarAccess.getGeneratorModelAccess().getLeftCurlyBracketKeyword_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorModel__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__4__Impl
	rule__GeneratorModel__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getEntriesAssignment_4()); }
(rule__GeneratorModel__EntriesAssignment_4)*
{ after(grammarAccess.getGeneratorModelAccess().getEntriesAssignment_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorModel__Group__5
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorModel__Group__5__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__Group__5__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getRightCurlyBracketKeyword_5()); }

	'}' 

{ after(grammarAccess.getGeneratorModelAccess().getRightCurlyBracketKeyword_5()); }
)

;
finally {
	restoreStackSize(stackSize);
}














rule__GeneratorEntry__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorEntry__Group__0__Impl
	rule__GeneratorEntry__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getContentTypeAssignment_0()); }
(rule__GeneratorEntry__ContentTypeAssignment_0)
{ after(grammarAccess.getGeneratorEntryAccess().getContentTypeAssignment_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorEntry__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorEntry__Group__1__Impl
	rule__GeneratorEntry__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getElementRefAssignment_1()); }
(rule__GeneratorEntry__ElementRefAssignment_1)
{ after(grammarAccess.getGeneratorEntryAccess().getElementRefAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorEntry__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorEntry__Group__2__Impl
	rule__GeneratorEntry__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getLeftCurlyBracketKeyword_2()); }

	'{' 

{ after(grammarAccess.getGeneratorEntryAccess().getLeftCurlyBracketKeyword_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorEntry__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorEntry__Group__3__Impl
	rule__GeneratorEntry__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getFeaturesAssignment_3()); }
(rule__GeneratorEntry__FeaturesAssignment_3)*
{ after(grammarAccess.getGeneratorEntryAccess().getFeaturesAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__GeneratorEntry__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__GeneratorEntry__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getRightCurlyBracketKeyword_4()); }

	'}' 

{ after(grammarAccess.getGeneratorEntryAccess().getRightCurlyBracketKeyword_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}












rule__FeatureConfiguration__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__0__Impl
	rule__FeatureConfiguration__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getFeatureConfigurationAction_0()); }
(

)
{ after(grammarAccess.getFeatureConfigurationAccess().getFeatureConfigurationAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureConfiguration__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__1__Impl
	rule__FeatureConfiguration__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getFeatureKeyword_1()); }

	'feature' 

{ after(grammarAccess.getFeatureConfigurationAccess().getFeatureKeyword_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureConfiguration__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__2__Impl
	rule__FeatureConfiguration__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getTypeAssignment_2()); }
(rule__FeatureConfiguration__TypeAssignment_2)
{ after(grammarAccess.getFeatureConfigurationAccess().getTypeAssignment_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureConfiguration__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__3__Impl
	rule__FeatureConfiguration__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getLeftCurlyBracketKeyword_3()); }

	'{' 

{ after(grammarAccess.getFeatureConfigurationAccess().getLeftCurlyBracketKeyword_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureConfiguration__Group__4
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__4__Impl
	rule__FeatureConfiguration__Group__5
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__4__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getParameterValuesAssignment_4()); }
(rule__FeatureConfiguration__ParameterValuesAssignment_4)*
{ after(grammarAccess.getFeatureConfigurationAccess().getParameterValuesAssignment_4()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureConfiguration__Group__5
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureConfiguration__Group__5__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__Group__5__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getRightCurlyBracketKeyword_5()); }

	'}' 

{ after(grammarAccess.getFeatureConfigurationAccess().getRightCurlyBracketKeyword_5()); }
)

;
finally {
	restoreStackSize(stackSize);
}














rule__FeatureParameterValue__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureParameterValue__Group__0__Impl
	rule__FeatureParameterValue__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getFeatureParameterValueAction_0()); }
(

)
{ after(grammarAccess.getFeatureParameterValueAccess().getFeatureParameterValueAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureParameterValue__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureParameterValue__Group__1__Impl
	rule__FeatureParameterValue__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getParameterAssignment_1()); }
(rule__FeatureParameterValue__ParameterAssignment_1)
{ after(grammarAccess.getFeatureParameterValueAccess().getParameterAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureParameterValue__Group__2
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureParameterValue__Group__2__Impl
	rule__FeatureParameterValue__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__Group__2__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getEqualsSignKeyword_2()); }

	'=' 

{ after(grammarAccess.getFeatureParameterValueAccess().getEqualsSignKeyword_2()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__FeatureParameterValue__Group__3
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__FeatureParameterValue__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__Group__3__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getExpressionAssignment_3()); }
(rule__FeatureParameterValue__ExpressionAssignment_3)
{ after(grammarAccess.getFeatureParameterValueAccess().getExpressionAssignment_3()); }
)

;
finally {
	restoreStackSize(stackSize);
}










rule__BoolLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BoolLiteral__Group__0__Impl
	rule__BoolLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getBoolLiteralAction_0()); }
(

)
{ after(grammarAccess.getBoolLiteralAccess().getBoolLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__BoolLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__BoolLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getValueAssignment_1()); }
(rule__BoolLiteral__ValueAssignment_1)
{ after(grammarAccess.getBoolLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__IntLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__IntLiteral__Group__0__Impl
	rule__IntLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getIntLiteralAction_0()); }
(

)
{ after(grammarAccess.getIntLiteralAccess().getIntLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__IntLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__IntLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getValueAssignment_1()); }
(rule__IntLiteral__ValueAssignment_1)
{ after(grammarAccess.getIntLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__RealLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__RealLiteral__Group__0__Impl
	rule__RealLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getRealLiteralAction_0()); }
(

)
{ after(grammarAccess.getRealLiteralAccess().getRealLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__RealLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__RealLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getValueAssignment_1()); }
(rule__RealLiteral__ValueAssignment_1)
{ after(grammarAccess.getRealLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__StringLiteral__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StringLiteral__Group__0__Impl
	rule__StringLiteral__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getStringLiteralAction_0()); }
(

)
{ after(grammarAccess.getStringLiteralAccess().getStringLiteralAction_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__StringLiteral__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__StringLiteral__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getValueAssignment_1()); }
(rule__StringLiteral__ValueAssignment_1)
{ after(grammarAccess.getStringLiteralAccess().getValueAssignment_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__QID__Group__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__QID__Group__0__Impl
	rule__QID__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__QID__Group__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getQIDAccess().getIDTerminalRuleCall_0()); }
	RULE_ID
{ after(grammarAccess.getQIDAccess().getIDTerminalRuleCall_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__QID__Group__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__QID__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__QID__Group__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getQIDAccess().getGroup_1()); }
(rule__QID__Group_1__0)*
{ after(grammarAccess.getQIDAccess().getGroup_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}






rule__QID__Group_1__0
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__QID__Group_1__0__Impl
	rule__QID__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__QID__Group_1__0__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getQIDAccess().getAlternatives_1_0()); }
(rule__QID__Alternatives_1_0)
{ after(grammarAccess.getQIDAccess().getAlternatives_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


rule__QID__Group_1__1
    @init {
		int stackSize = keepStackSize();
    }
:
	rule__QID__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__QID__Group_1__1__Impl
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getQIDAccess().getIDTerminalRuleCall_1_1()); }
	RULE_ID
{ after(grammarAccess.getQIDAccess().getIDTerminalRuleCall_1_1()); }
)

;
finally {
	restoreStackSize(stackSize);
}







rule__GeneratorModel__GeneratorIdAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getGeneratorIdQIDParserRuleCall_2_0()); }
	ruleQID{ after(grammarAccess.getGeneratorModelAccess().getGeneratorIdQIDParserRuleCall_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorModel__EntriesAssignment_4
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorModelAccess().getEntriesGeneratorEntryParserRuleCall_4_0()); }
	ruleGeneratorEntry{ after(grammarAccess.getGeneratorModelAccess().getEntriesGeneratorEntryParserRuleCall_4_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__ContentTypeAssignment_0
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getContentTypeIDTerminalRuleCall_0_0()); }
	RULE_ID{ after(grammarAccess.getGeneratorEntryAccess().getContentTypeIDTerminalRuleCall_0_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__ElementRefAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getElementRefEObjectCrossReference_1_0()); }
(
{ before(grammarAccess.getGeneratorEntryAccess().getElementRefEObjectQIDParserRuleCall_1_0_1()); }
	ruleQID{ after(grammarAccess.getGeneratorEntryAccess().getElementRefEObjectQIDParserRuleCall_1_0_1()); }
)
{ after(grammarAccess.getGeneratorEntryAccess().getElementRefEObjectCrossReference_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__GeneratorEntry__FeaturesAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getGeneratorEntryAccess().getFeaturesFeatureConfigurationParserRuleCall_3_0()); }
	ruleFeatureConfiguration{ after(grammarAccess.getGeneratorEntryAccess().getFeaturesFeatureConfigurationParserRuleCall_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__TypeAssignment_2
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getTypeFeatureTypeCrossReference_2_0()); }
(
{ before(grammarAccess.getFeatureConfigurationAccess().getTypeFeatureTypeIDTerminalRuleCall_2_0_1()); }
	RULE_ID{ after(grammarAccess.getFeatureConfigurationAccess().getTypeFeatureTypeIDTerminalRuleCall_2_0_1()); }
)
{ after(grammarAccess.getFeatureConfigurationAccess().getTypeFeatureTypeCrossReference_2_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureConfiguration__ParameterValuesAssignment_4
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureConfigurationAccess().getParameterValuesFeatureParameterValueParserRuleCall_4_0()); }
	ruleFeatureParameterValue{ after(grammarAccess.getFeatureConfigurationAccess().getParameterValuesFeatureParameterValueParserRuleCall_4_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__ParameterAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getParameterFeatureParameterCrossReference_1_0()); }
(
{ before(grammarAccess.getFeatureParameterValueAccess().getParameterFeatureParameterIDTerminalRuleCall_1_0_1()); }
	RULE_ID{ after(grammarAccess.getFeatureParameterValueAccess().getParameterFeatureParameterIDTerminalRuleCall_1_0_1()); }
)
{ after(grammarAccess.getFeatureParameterValueAccess().getParameterFeatureParameterCrossReference_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__FeatureParameterValue__ExpressionAssignment_3
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getFeatureParameterValueAccess().getExpressionLiteralParserRuleCall_3_0()); }
	ruleLiteral{ after(grammarAccess.getFeatureParameterValueAccess().getExpressionLiteralParserRuleCall_3_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__BoolLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getBoolLiteralAccess().getValueBOOLTerminalRuleCall_1_0()); }
	RULE_BOOL{ after(grammarAccess.getBoolLiteralAccess().getValueBOOLTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__IntLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); }
	RULE_INT{ after(grammarAccess.getIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__RealLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getRealLiteralAccess().getValueFLOATTerminalRuleCall_1_0()); }
	RULE_FLOAT{ after(grammarAccess.getRealLiteralAccess().getValueFLOATTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}

rule__StringLiteral__ValueAssignment_1
    @init {
		int stackSize = keepStackSize();
    }
:
(
{ before(grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
	RULE_STRING{ after(grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
)

;
finally {
	restoreStackSize(stackSize);
}


RULE_BOOL : ('true'|'false'|'yes'|'no');

RULE_FLOAT : RULE_INT '.' RULE_INT ('e' ('-'|'+') RULE_INT)? ('f'|'F'|'d'|'D')?;

RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

RULE_INT : ('0'..'9')+;

RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');

RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';

RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;

RULE_WS : (' '|'\t'|'\r'|'\n')+;

RULE_ANY_OTHER : .;


