/*
* generated by Xtext
*/
package org.yakindu.sct.generator.genmodel.services;

import com.google.inject.Singleton;
import com.google.inject.Inject;

import java.util.List;

import org.eclipse.xtext.*;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.service.AbstractElementFinder.*;

import org.eclipse.xtext.common.services.TerminalsGrammarAccess;

@Singleton
public class SGenGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class GeneratorModelElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "GeneratorModel");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cGeneratorModelKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cForKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cGeneratorIdAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cGeneratorIdQIDParserRuleCall_2_0 = (RuleCall)cGeneratorIdAssignment_2.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cEntriesAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cEntriesGeneratorEntryParserRuleCall_4_0 = (RuleCall)cEntriesAssignment_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		/// **
		// * @author Andreas Muelder
		// * / GeneratorModel returns gen::GeneratorModel:
		//
		//	"GeneratorModel" "for" generatorId=QID "{" entries+=GeneratorEntry* "}";
		public ParserRule getRule() { return rule; }

		//"GeneratorModel" "for" generatorId=QID "{" entries+=GeneratorEntry* "}"
		public Group getGroup() { return cGroup; }

		//"GeneratorModel"
		public Keyword getGeneratorModelKeyword_0() { return cGeneratorModelKeyword_0; }

		//"for"
		public Keyword getForKeyword_1() { return cForKeyword_1; }

		//generatorId=QID
		public Assignment getGeneratorIdAssignment_2() { return cGeneratorIdAssignment_2; }

		//QID
		public RuleCall getGeneratorIdQIDParserRuleCall_2_0() { return cGeneratorIdQIDParserRuleCall_2_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//entries+=GeneratorEntry*
		public Assignment getEntriesAssignment_4() { return cEntriesAssignment_4; }

		//GeneratorEntry
		public RuleCall getEntriesGeneratorEntryParserRuleCall_4_0() { return cEntriesGeneratorEntryParserRuleCall_4_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class GeneratorEntryElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "GeneratorEntry");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cContentTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cContentTypeIDTerminalRuleCall_0_0 = (RuleCall)cContentTypeAssignment_0.eContents().get(0);
		private final Assignment cElementRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cElementRefEObjectCrossReference_1_0 = (CrossReference)cElementRefAssignment_1.eContents().get(0);
		private final RuleCall cElementRefEObjectQIDParserRuleCall_1_0_1 = (RuleCall)cElementRefEObjectCrossReference_1_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cFeaturesAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cFeaturesFeatureConfigurationParserRuleCall_3_0 = (RuleCall)cFeaturesAssignment_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//GeneratorEntry returns gen::GeneratorEntry:
		//
		//	contentType=ID elementRef=[ecore::EObject|QID] "{" features+=FeatureConfiguration* "}";
		public ParserRule getRule() { return rule; }

		//contentType=ID elementRef=[ecore::EObject|QID] "{" features+=FeatureConfiguration* "}"
		public Group getGroup() { return cGroup; }

		//contentType=ID
		public Assignment getContentTypeAssignment_0() { return cContentTypeAssignment_0; }

		//ID
		public RuleCall getContentTypeIDTerminalRuleCall_0_0() { return cContentTypeIDTerminalRuleCall_0_0; }

		//elementRef=[ecore::EObject|QID]
		public Assignment getElementRefAssignment_1() { return cElementRefAssignment_1; }

		//[ecore::EObject|QID]
		public CrossReference getElementRefEObjectCrossReference_1_0() { return cElementRefEObjectCrossReference_1_0; }

		//QID
		public RuleCall getElementRefEObjectQIDParserRuleCall_1_0_1() { return cElementRefEObjectQIDParserRuleCall_1_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//features+=FeatureConfiguration*
		public Assignment getFeaturesAssignment_3() { return cFeaturesAssignment_3; }

		//FeatureConfiguration
		public RuleCall getFeaturesFeatureConfigurationParserRuleCall_3_0() { return cFeaturesFeatureConfigurationParserRuleCall_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}

	public class FeatureConfigurationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FeatureConfiguration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFeatureConfigurationAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cFeatureKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final CrossReference cTypeFeatureTypeCrossReference_2_0 = (CrossReference)cTypeAssignment_2.eContents().get(0);
		private final RuleCall cTypeFeatureTypeIDTerminalRuleCall_2_0_1 = (RuleCall)cTypeFeatureTypeCrossReference_2_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cParameterValuesAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cParameterValuesFeatureParameterValueParserRuleCall_4_0 = (RuleCall)cParameterValuesAssignment_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//FeatureConfiguration returns gen::FeatureConfiguration:
		//
		//	{gen::FeatureConfiguration} "feature" type=[gen::FeatureType] "{" parameterValues+=FeatureParameterValue* "}";
		public ParserRule getRule() { return rule; }

		//{gen::FeatureConfiguration} "feature" type=[gen::FeatureType] "{" parameterValues+=FeatureParameterValue* "}"
		public Group getGroup() { return cGroup; }

		//{gen::FeatureConfiguration}
		public Action getFeatureConfigurationAction_0() { return cFeatureConfigurationAction_0; }

		//"feature"
		public Keyword getFeatureKeyword_1() { return cFeatureKeyword_1; }

		//type=[gen::FeatureType]
		public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }

		//[gen::FeatureType]
		public CrossReference getTypeFeatureTypeCrossReference_2_0() { return cTypeFeatureTypeCrossReference_2_0; }

		//ID
		public RuleCall getTypeFeatureTypeIDTerminalRuleCall_2_0_1() { return cTypeFeatureTypeIDTerminalRuleCall_2_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//parameterValues+=FeatureParameterValue*
		public Assignment getParameterValuesAssignment_4() { return cParameterValuesAssignment_4; }

		//FeatureParameterValue
		public RuleCall getParameterValuesFeatureParameterValueParserRuleCall_4_0() { return cParameterValuesFeatureParameterValueParserRuleCall_4_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class FeatureParameterValueElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FeatureParameterValue");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFeatureParameterValueAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cParameterAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final CrossReference cParameterFeatureParameterCrossReference_1_0 = (CrossReference)cParameterAssignment_1.eContents().get(0);
		private final RuleCall cParameterFeatureParameterIDTerminalRuleCall_1_0_1 = (RuleCall)cParameterFeatureParameterCrossReference_1_0.eContents().get(1);
		private final Keyword cEqualsSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cExpressionLiteralParserRuleCall_3_0 = (RuleCall)cExpressionAssignment_3.eContents().get(0);
		
		//FeatureParameterValue returns gen::FeatureParameterValue:
		//
		//	{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] "=" expression=Literal;
		public ParserRule getRule() { return rule; }

		//{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] "=" expression=Literal
		public Group getGroup() { return cGroup; }

		//{gen::FeatureParameterValue}
		public Action getFeatureParameterValueAction_0() { return cFeatureParameterValueAction_0; }

		//parameter=[gen::FeatureParameter]
		public Assignment getParameterAssignment_1() { return cParameterAssignment_1; }

		//[gen::FeatureParameter]
		public CrossReference getParameterFeatureParameterCrossReference_1_0() { return cParameterFeatureParameterCrossReference_1_0; }

		//ID
		public RuleCall getParameterFeatureParameterIDTerminalRuleCall_1_0_1() { return cParameterFeatureParameterIDTerminalRuleCall_1_0_1; }

		//"="
		public Keyword getEqualsSignKeyword_2() { return cEqualsSignKeyword_2; }

		//expression=Literal
		public Assignment getExpressionAssignment_3() { return cExpressionAssignment_3; }

		//Literal
		public RuleCall getExpressionLiteralParserRuleCall_3_0() { return cExpressionLiteralParserRuleCall_3_0; }
	}

	public class LiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Literal");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cBoolLiteralParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cIntLiteralParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cRealLiteralParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cStringLiteralParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//Literal returns gen::Literal:
		//
		//	BoolLiteral | IntLiteral | RealLiteral | StringLiteral;
		public ParserRule getRule() { return rule; }

		//BoolLiteral | IntLiteral | RealLiteral | StringLiteral
		public Alternatives getAlternatives() { return cAlternatives; }

		//BoolLiteral
		public RuleCall getBoolLiteralParserRuleCall_0() { return cBoolLiteralParserRuleCall_0; }

		//IntLiteral
		public RuleCall getIntLiteralParserRuleCall_1() { return cIntLiteralParserRuleCall_1; }

		//RealLiteral
		public RuleCall getRealLiteralParserRuleCall_2() { return cRealLiteralParserRuleCall_2; }

		//StringLiteral
		public RuleCall getStringLiteralParserRuleCall_3() { return cStringLiteralParserRuleCall_3; }
	}

	public class BoolLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BoolLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cBoolLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueBOOLTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//BoolLiteral returns gen::BoolLiteral:
		//
		//	{gen::BoolLiteral} value=BOOL;
		public ParserRule getRule() { return rule; }

		//{gen::BoolLiteral} value=BOOL
		public Group getGroup() { return cGroup; }

		//{gen::BoolLiteral}
		public Action getBoolLiteralAction_0() { return cBoolLiteralAction_0; }

		//value=BOOL
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//BOOL
		public RuleCall getValueBOOLTerminalRuleCall_1_0() { return cValueBOOLTerminalRuleCall_1_0; }
	}

	public class IntLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IntLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cIntLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueINTTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//IntLiteral returns gen::IntLiteral:
		//
		//	{gen::IntLiteral} value=INT;
		public ParserRule getRule() { return rule; }

		//{gen::IntLiteral} value=INT
		public Group getGroup() { return cGroup; }

		//{gen::IntLiteral}
		public Action getIntLiteralAction_0() { return cIntLiteralAction_0; }

		//value=INT
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//INT
		public RuleCall getValueINTTerminalRuleCall_1_0() { return cValueINTTerminalRuleCall_1_0; }
	}

	public class RealLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RealLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cRealLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueFLOATTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//RealLiteral returns gen::RealLiteral:
		//
		//	{gen::RealLiteral} value=FLOAT;
		public ParserRule getRule() { return rule; }

		//{gen::RealLiteral} value=FLOAT
		public Group getGroup() { return cGroup; }

		//{gen::RealLiteral}
		public Action getRealLiteralAction_0() { return cRealLiteralAction_0; }

		//value=FLOAT
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//FLOAT
		public RuleCall getValueFLOATTerminalRuleCall_1_0() { return cValueFLOATTerminalRuleCall_1_0; }
	}

	public class StringLiteralElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringLiteral");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cStringLiteralAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueSTRINGTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//StringLiteral returns gen::StringLiteral:
		//
		//	{gen::StringLiteral} value=STRING;
		public ParserRule getRule() { return rule; }

		//{gen::StringLiteral} value=STRING
		public Group getGroup() { return cGroup; }

		//{gen::StringLiteral}
		public Action getStringLiteralAction_0() { return cStringLiteralAction_0; }

		//value=STRING
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//STRING
		public RuleCall getValueSTRINGTerminalRuleCall_1_0() { return cValueSTRINGTerminalRuleCall_1_0; }
	}

	public class QIDElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QID");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
		private final Keyword cColonColonKeyword_1_0_0 = (Keyword)cAlternatives_1_0.eContents().get(0);
		private final Keyword cFullStopKeyword_1_0_1 = (Keyword)cAlternatives_1_0.eContents().get(1);
		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//QID:
		//
		//	ID (("::" | ".") ID)*;
		public ParserRule getRule() { return rule; }

		//ID (("::" | ".") ID)*
		public Group getGroup() { return cGroup; }

		//ID
		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }

		//(("::" | ".") ID)*
		public Group getGroup_1() { return cGroup_1; }

		//"::" | "."
		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }

		//"::"
		public Keyword getColonColonKeyword_1_0_0() { return cColonColonKeyword_1_0_0; }

		//"."
		public Keyword getFullStopKeyword_1_0_1() { return cFullStopKeyword_1_0_1; }

		//ID
		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
	}
	
	
	private GeneratorModelElements pGeneratorModel;
	private GeneratorEntryElements pGeneratorEntry;
	private FeatureConfigurationElements pFeatureConfiguration;
	private FeatureParameterValueElements pFeatureParameterValue;
	private LiteralElements pLiteral;
	private BoolLiteralElements pBoolLiteral;
	private IntLiteralElements pIntLiteral;
	private RealLiteralElements pRealLiteral;
	private StringLiteralElements pStringLiteral;
	private TerminalRule tBOOL;
	private TerminalRule tFLOAT;
	private QIDElements pQID;
	
	private final Grammar grammar;

	private TerminalsGrammarAccess gaTerminals;

	@Inject
	public SGenGrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.yakindu.sct.generator.genmodel.SGen".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	
	public Grammar getGrammar() {
		return grammar;
	}
	

	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	/// **
	// * @author Andreas Muelder
	// * / GeneratorModel returns gen::GeneratorModel:
	//
	//	"GeneratorModel" "for" generatorId=QID "{" entries+=GeneratorEntry* "}";
	public GeneratorModelElements getGeneratorModelAccess() {
		return (pGeneratorModel != null) ? pGeneratorModel : (pGeneratorModel = new GeneratorModelElements());
	}
	
	public ParserRule getGeneratorModelRule() {
		return getGeneratorModelAccess().getRule();
	}

	//GeneratorEntry returns gen::GeneratorEntry:
	//
	//	contentType=ID elementRef=[ecore::EObject|QID] "{" features+=FeatureConfiguration* "}";
	public GeneratorEntryElements getGeneratorEntryAccess() {
		return (pGeneratorEntry != null) ? pGeneratorEntry : (pGeneratorEntry = new GeneratorEntryElements());
	}
	
	public ParserRule getGeneratorEntryRule() {
		return getGeneratorEntryAccess().getRule();
	}

	//FeatureConfiguration returns gen::FeatureConfiguration:
	//
	//	{gen::FeatureConfiguration} "feature" type=[gen::FeatureType] "{" parameterValues+=FeatureParameterValue* "}";
	public FeatureConfigurationElements getFeatureConfigurationAccess() {
		return (pFeatureConfiguration != null) ? pFeatureConfiguration : (pFeatureConfiguration = new FeatureConfigurationElements());
	}
	
	public ParserRule getFeatureConfigurationRule() {
		return getFeatureConfigurationAccess().getRule();
	}

	//FeatureParameterValue returns gen::FeatureParameterValue:
	//
	//	{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] "=" expression=Literal;
	public FeatureParameterValueElements getFeatureParameterValueAccess() {
		return (pFeatureParameterValue != null) ? pFeatureParameterValue : (pFeatureParameterValue = new FeatureParameterValueElements());
	}
	
	public ParserRule getFeatureParameterValueRule() {
		return getFeatureParameterValueAccess().getRule();
	}

	//Literal returns gen::Literal:
	//
	//	BoolLiteral | IntLiteral | RealLiteral | StringLiteral;
	public LiteralElements getLiteralAccess() {
		return (pLiteral != null) ? pLiteral : (pLiteral = new LiteralElements());
	}
	
	public ParserRule getLiteralRule() {
		return getLiteralAccess().getRule();
	}

	//BoolLiteral returns gen::BoolLiteral:
	//
	//	{gen::BoolLiteral} value=BOOL;
	public BoolLiteralElements getBoolLiteralAccess() {
		return (pBoolLiteral != null) ? pBoolLiteral : (pBoolLiteral = new BoolLiteralElements());
	}
	
	public ParserRule getBoolLiteralRule() {
		return getBoolLiteralAccess().getRule();
	}

	//IntLiteral returns gen::IntLiteral:
	//
	//	{gen::IntLiteral} value=INT;
	public IntLiteralElements getIntLiteralAccess() {
		return (pIntLiteral != null) ? pIntLiteral : (pIntLiteral = new IntLiteralElements());
	}
	
	public ParserRule getIntLiteralRule() {
		return getIntLiteralAccess().getRule();
	}

	//RealLiteral returns gen::RealLiteral:
	//
	//	{gen::RealLiteral} value=FLOAT;
	public RealLiteralElements getRealLiteralAccess() {
		return (pRealLiteral != null) ? pRealLiteral : (pRealLiteral = new RealLiteralElements());
	}
	
	public ParserRule getRealLiteralRule() {
		return getRealLiteralAccess().getRule();
	}

	//StringLiteral returns gen::StringLiteral:
	//
	//	{gen::StringLiteral} value=STRING;
	public StringLiteralElements getStringLiteralAccess() {
		return (pStringLiteral != null) ? pStringLiteral : (pStringLiteral = new StringLiteralElements());
	}
	
	public ParserRule getStringLiteralRule() {
		return getStringLiteralAccess().getRule();
	}

	//terminal BOOL returns ecore::EBoolean:
	//
	//	"true" | "false" | "yes" | "no";
	public TerminalRule getBOOLRule() {
		return (tBOOL != null) ? tBOOL : (tBOOL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "BOOL"));
	} 

	//terminal FLOAT returns ecore::EFloat:
	//
	//	(INT "." INT) ("e" ("-" | "+") INT)? ("f" | "F" | "d" | "D")?;
	public TerminalRule getFLOATRule() {
		return (tFLOAT != null) ? tFLOAT : (tFLOAT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "FLOAT"));
	} 

	//QID:
	//
	//	ID (("::" | ".") ID)*;
	public QIDElements getQIDAccess() {
		return (pQID != null) ? pQID : (pQID = new QIDElements());
	}
	
	public ParserRule getQIDRule() {
		return getQIDAccess().getRule();
	}

	//terminal ID:
	//
	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
	public TerminalRule getIDRule() {
		return gaTerminals.getIDRule();
	} 

	//terminal INT returns ecore::EInt:
	//
	//	"0".."9"+;
	public TerminalRule getINTRule() {
		return gaTerminals.getINTRule();
	} 

	//terminal STRING:
	//
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
	//
	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	public TerminalRule getSTRINGRule() {
		return gaTerminals.getSTRINGRule();
	} 

	//terminal ML_COMMENT:
	//
	//	"/ *"->"* /";
	public TerminalRule getML_COMMENTRule() {
		return gaTerminals.getML_COMMENTRule();
	} 

	//terminal SL_COMMENT:
	//
	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
	public TerminalRule getSL_COMMENTRule() {
		return gaTerminals.getSL_COMMENTRule();
	} 

	//terminal WS:
	//
	//	(" " | "\t" | "\r" | "\n")+;
	public TerminalRule getWSRule() {
		return gaTerminals.getWSRule();
	} 

	//terminal ANY_OTHER:
	//
	//	.;
	public TerminalRule getANY_OTHERRule() {
		return gaTerminals.getANY_OTHERRule();
	} 
}
