/*
 * generated by Xtext 2.18.0.M3
 */
package co.edu.uniandes.accordant_rq.services;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.List;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Alternatives;
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.GrammarUtil;
import org.eclipse.xtext.Group;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.TerminalRule;
import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
import org.eclipse.xtext.service.AbstractElementFinder.AbstractEnumRuleElementFinder;
import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
import org.eclipse.xtext.service.GrammarProvider;

@Singleton
public class AinlGrammarAccess extends AbstractGrammarElementFinder {
	
	public class ProjectElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.Project");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cProjectAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cProjectKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cQScenariosKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Keyword cLeftCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Assignment cScenariosAssignment_6 = (Assignment)cGroup.eContents().get(6);
		private final RuleCall cScenariosQScenarioParserRuleCall_6_0 = (RuleCall)cScenariosAssignment_6.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cCommaKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Assignment cScenariosAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
		private final RuleCall cScenariosQScenarioParserRuleCall_7_1_0 = (RuleCall)cScenariosAssignment_7_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cAnalyzedQScenariosKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cAnalyzedQsAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final RuleCall cAnalyzedQsAnalyzedQSParserRuleCall_9_2_0 = (RuleCall)cAnalyzedQsAssignment_9_2.eContents().get(0);
		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
		private final Assignment cAnalyzedQsAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
		private final RuleCall cAnalyzedQsAnalyzedQSParserRuleCall_9_3_1_0 = (RuleCall)cAnalyzedQsAssignment_9_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cConstraintsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cConstraintsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cConstraintsConstraintParserRuleCall_10_2_0 = (RuleCall)cConstraintsAssignment_10_2.eContents().get(0);
		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
		private final Keyword cCommaKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
		private final Assignment cConstraintsAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
		private final RuleCall cConstraintsConstraintParserRuleCall_10_3_1_0 = (RuleCall)cConstraintsAssignment_10_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
		private final Keyword cTacticsKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cLeftCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Assignment cTacticsAssignment_13 = (Assignment)cGroup.eContents().get(13);
		private final RuleCall cTacticsTacticParserRuleCall_13_0 = (RuleCall)cTacticsAssignment_13.eContents().get(0);
		private final Group cGroup_14 = (Group)cGroup.eContents().get(14);
		private final Keyword cCommaKeyword_14_0 = (Keyword)cGroup_14.eContents().get(0);
		private final Assignment cTacticsAssignment_14_1 = (Assignment)cGroup_14.eContents().get(1);
		private final RuleCall cTacticsTacticParserRuleCall_14_1_0 = (RuleCall)cTacticsAssignment_14_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
		
		//Project:
		//	{Project}
		//	'Project'
		//	name=ID
		//	'{'
		//	'QScenarios' '{' scenarios+=QScenario ("," scenarios+=QScenario)* '}' ('analyzedQScenarios' '{' analyzedQs+=AnalyzedQS
		//	("," analyzedQs+=AnalyzedQS)* '}')? ('constraints' '{' constraints+=Constraint ("," constraints+=Constraint)* '}')?
		//	'tactics' '{' tactics+=Tactic (',' tactics+=Tactic)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//{Project} 'Project' name=ID '{' 'QScenarios' '{' scenarios+=QScenario ("," scenarios+=QScenario)* '}'
		//('analyzedQScenarios' '{' analyzedQs+=AnalyzedQS ("," analyzedQs+=AnalyzedQS)* '}')? ('constraints' '{'
		//constraints+=Constraint ("," constraints+=Constraint)* '}')? 'tactics' '{' tactics+=Tactic (',' tactics+=Tactic)* '}'
		//'}'
		public Group getGroup() { return cGroup; }
		
		//{Project}
		public Action getProjectAction_0() { return cProjectAction_0; }
		
		//'Project'
		public Keyword getProjectKeyword_1() { return cProjectKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
		
		//'QScenarios'
		public Keyword getQScenariosKeyword_4() { return cQScenariosKeyword_4; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
		
		//scenarios+=QScenario
		public Assignment getScenariosAssignment_6() { return cScenariosAssignment_6; }
		
		//QScenario
		public RuleCall getScenariosQScenarioParserRuleCall_6_0() { return cScenariosQScenarioParserRuleCall_6_0; }
		
		//("," scenarios+=QScenario)*
		public Group getGroup_7() { return cGroup_7; }
		
		//","
		public Keyword getCommaKeyword_7_0() { return cCommaKeyword_7_0; }
		
		//scenarios+=QScenario
		public Assignment getScenariosAssignment_7_1() { return cScenariosAssignment_7_1; }
		
		//QScenario
		public RuleCall getScenariosQScenarioParserRuleCall_7_1_0() { return cScenariosQScenarioParserRuleCall_7_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
		
		//('analyzedQScenarios' '{' analyzedQs+=AnalyzedQS ("," analyzedQs+=AnalyzedQS)* '}')?
		public Group getGroup_9() { return cGroup_9; }
		
		//'analyzedQScenarios'
		public Keyword getAnalyzedQScenariosKeyword_9_0() { return cAnalyzedQScenariosKeyword_9_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
		
		//analyzedQs+=AnalyzedQS
		public Assignment getAnalyzedQsAssignment_9_2() { return cAnalyzedQsAssignment_9_2; }
		
		//AnalyzedQS
		public RuleCall getAnalyzedQsAnalyzedQSParserRuleCall_9_2_0() { return cAnalyzedQsAnalyzedQSParserRuleCall_9_2_0; }
		
		//("," analyzedQs+=AnalyzedQS)*
		public Group getGroup_9_3() { return cGroup_9_3; }
		
		//","
		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
		
		//analyzedQs+=AnalyzedQS
		public Assignment getAnalyzedQsAssignment_9_3_1() { return cAnalyzedQsAssignment_9_3_1; }
		
		//AnalyzedQS
		public RuleCall getAnalyzedQsAnalyzedQSParserRuleCall_9_3_1_0() { return cAnalyzedQsAnalyzedQSParserRuleCall_9_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }
		
		//('constraints' '{' constraints+=Constraint ("," constraints+=Constraint)* '}')?
		public Group getGroup_10() { return cGroup_10; }
		
		//'constraints'
		public Keyword getConstraintsKeyword_10_0() { return cConstraintsKeyword_10_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }
		
		//constraints+=Constraint
		public Assignment getConstraintsAssignment_10_2() { return cConstraintsAssignment_10_2; }
		
		//Constraint
		public RuleCall getConstraintsConstraintParserRuleCall_10_2_0() { return cConstraintsConstraintParserRuleCall_10_2_0; }
		
		//("," constraints+=Constraint)*
		public Group getGroup_10_3() { return cGroup_10_3; }
		
		//","
		public Keyword getCommaKeyword_10_3_0() { return cCommaKeyword_10_3_0; }
		
		//constraints+=Constraint
		public Assignment getConstraintsAssignment_10_3_1() { return cConstraintsAssignment_10_3_1; }
		
		//Constraint
		public RuleCall getConstraintsConstraintParserRuleCall_10_3_1_0() { return cConstraintsConstraintParserRuleCall_10_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }
		
		//'tactics'
		public Keyword getTacticsKeyword_11() { return cTacticsKeyword_11; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_12() { return cLeftCurlyBracketKeyword_12; }
		
		//tactics+=Tactic
		public Assignment getTacticsAssignment_13() { return cTacticsAssignment_13; }
		
		//Tactic
		public RuleCall getTacticsTacticParserRuleCall_13_0() { return cTacticsTacticParserRuleCall_13_0; }
		
		//(',' tactics+=Tactic)*
		public Group getGroup_14() { return cGroup_14; }
		
		//','
		public Keyword getCommaKeyword_14_0() { return cCommaKeyword_14_0; }
		
		//tactics+=Tactic
		public Assignment getTacticsAssignment_14_1() { return cTacticsAssignment_14_1; }
		
		//Tactic
		public RuleCall getTacticsTacticParserRuleCall_14_1_0() { return cTacticsTacticParserRuleCall_14_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_15() { return cRightCurlyBracketKeyword_15; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
	}
	public class EStringElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.EString");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//EString:
		//	STRING | ID;
		@Override public ParserRule getRule() { return rule; }
		
		//STRING | ID
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//STRING
		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
		
		//ID
		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
	}
	public class QScenarioElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.QScenario");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cQSKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cQAKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Assignment cQAttributeAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cQAttributeQAttributeEnumRuleCall_5_0 = (RuleCall)cQAttributeAssignment_5.eContents().get(0);
		private final Keyword cStimulusKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cColonKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cStimulusAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cStimulusEStringParserRuleCall_8_0 = (RuleCall)cStimulusAssignment_8.eContents().get(0);
		private final Keyword cEnvironmentKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Keyword cColonKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Assignment cEnvironmentAssignment_11 = (Assignment)cGroup.eContents().get(11);
		private final RuleCall cEnvironmentEStringParserRuleCall_11_0 = (RuleCall)cEnvironmentAssignment_11.eContents().get(0);
		private final Keyword cResponseKeyword_12 = (Keyword)cGroup.eContents().get(12);
		private final Keyword cColonKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final Assignment cResponseAssignment_14 = (Assignment)cGroup.eContents().get(14);
		private final RuleCall cResponseEStringParserRuleCall_14_0 = (RuleCall)cResponseAssignment_14.eContents().get(0);
		private final Keyword cMeasureKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Keyword cColonKeyword_16 = (Keyword)cGroup.eContents().get(16);
		private final Assignment cMeasureAssignment_17 = (Assignment)cGroup.eContents().get(17);
		private final RuleCall cMeasureQAMetricEnumRuleCall_17_0 = (RuleCall)cMeasureAssignment_17.eContents().get(0);
		private final Keyword cBetweenKeyword_18 = (Keyword)cGroup.eContents().get(18);
		private final Assignment cMinValueAssignment_19 = (Assignment)cGroup.eContents().get(19);
		private final RuleCall cMinValueEFloatParserRuleCall_19_0 = (RuleCall)cMinValueAssignment_19.eContents().get(0);
		private final Keyword cAndKeyword_20 = (Keyword)cGroup.eContents().get(20);
		private final Assignment cMaxValueAssignment_21 = (Assignment)cGroup.eContents().get(21);
		private final RuleCall cMaxValueEFloatParserRuleCall_21_0 = (RuleCall)cMaxValueAssignment_21.eContents().get(0);
		private final Keyword cInKeyword_22 = (Keyword)cGroup.eContents().get(22);
		private final Assignment cUnitAssignment_23 = (Assignment)cGroup.eContents().get(23);
		private final RuleCall cUnitMetricUnitEnumRuleCall_23_0 = (RuleCall)cUnitAssignment_23.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_24 = (Keyword)cGroup.eContents().get(24);
		
		//QScenario:
		//	'QS'
		//	name=ID
		//	'{'
		//	'QA' ':' qAttribute=QAttribute
		//	'stimulus' ':' stimulus=EString
		//	'environment' ':' environment=EString
		//	'response' ':' response=EString
		//	'measure' ':' measure=QAMetric 'between' minValue=EFloat 'and' maxValue=EFloat 'in' unit=MetricUnit
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'QS' name=ID '{' 'QA' ':' qAttribute=QAttribute 'stimulus' ':' stimulus=EString 'environment' ':' environment=EString
		//'response' ':' response=EString 'measure' ':' measure=QAMetric 'between' minValue=EFloat 'and' maxValue=EFloat 'in'
		//unit=MetricUnit '}'
		public Group getGroup() { return cGroup; }
		
		//'QS'
		public Keyword getQSKeyword_0() { return cQSKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//'QA'
		public Keyword getQAKeyword_3() { return cQAKeyword_3; }
		
		//':'
		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
		
		//qAttribute=QAttribute
		public Assignment getQAttributeAssignment_5() { return cQAttributeAssignment_5; }
		
		//QAttribute
		public RuleCall getQAttributeQAttributeEnumRuleCall_5_0() { return cQAttributeQAttributeEnumRuleCall_5_0; }
		
		//'stimulus'
		public Keyword getStimulusKeyword_6() { return cStimulusKeyword_6; }
		
		//':'
		public Keyword getColonKeyword_7() { return cColonKeyword_7; }
		
		//stimulus=EString
		public Assignment getStimulusAssignment_8() { return cStimulusAssignment_8; }
		
		//EString
		public RuleCall getStimulusEStringParserRuleCall_8_0() { return cStimulusEStringParserRuleCall_8_0; }
		
		//'environment'
		public Keyword getEnvironmentKeyword_9() { return cEnvironmentKeyword_9; }
		
		//':'
		public Keyword getColonKeyword_10() { return cColonKeyword_10; }
		
		//environment=EString
		public Assignment getEnvironmentAssignment_11() { return cEnvironmentAssignment_11; }
		
		//EString
		public RuleCall getEnvironmentEStringParserRuleCall_11_0() { return cEnvironmentEStringParserRuleCall_11_0; }
		
		//'response'
		public Keyword getResponseKeyword_12() { return cResponseKeyword_12; }
		
		//':'
		public Keyword getColonKeyword_13() { return cColonKeyword_13; }
		
		//response=EString
		public Assignment getResponseAssignment_14() { return cResponseAssignment_14; }
		
		//EString
		public RuleCall getResponseEStringParserRuleCall_14_0() { return cResponseEStringParserRuleCall_14_0; }
		
		//'measure'
		public Keyword getMeasureKeyword_15() { return cMeasureKeyword_15; }
		
		//':'
		public Keyword getColonKeyword_16() { return cColonKeyword_16; }
		
		//measure=QAMetric
		public Assignment getMeasureAssignment_17() { return cMeasureAssignment_17; }
		
		//QAMetric
		public RuleCall getMeasureQAMetricEnumRuleCall_17_0() { return cMeasureQAMetricEnumRuleCall_17_0; }
		
		//'between'
		public Keyword getBetweenKeyword_18() { return cBetweenKeyword_18; }
		
		//minValue=EFloat
		public Assignment getMinValueAssignment_19() { return cMinValueAssignment_19; }
		
		//EFloat
		public RuleCall getMinValueEFloatParserRuleCall_19_0() { return cMinValueEFloatParserRuleCall_19_0; }
		
		//'and'
		public Keyword getAndKeyword_20() { return cAndKeyword_20; }
		
		//maxValue=EFloat
		public Assignment getMaxValueAssignment_21() { return cMaxValueAssignment_21; }
		
		//EFloat
		public RuleCall getMaxValueEFloatParserRuleCall_21_0() { return cMaxValueEFloatParserRuleCall_21_0; }
		
		//'in'
		public Keyword getInKeyword_22() { return cInKeyword_22; }
		
		//unit=MetricUnit
		public Assignment getUnitAssignment_23() { return cUnitAssignment_23; }
		
		//MetricUnit
		public RuleCall getUnitMetricUnitEnumRuleCall_23_0() { return cUnitMetricUnitEnumRuleCall_23_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_24() { return cRightCurlyBracketKeyword_24; }
	}
	public class EFloatElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.EFloat");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Keyword cFullStopKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final RuleCall cINTTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Alternatives cAlternatives_4_0 = (Alternatives)cGroup_4.eContents().get(0);
		private final Keyword cEKeyword_4_0_0 = (Keyword)cAlternatives_4_0.eContents().get(0);
		private final Keyword cEKeyword_4_0_1 = (Keyword)cAlternatives_4_0.eContents().get(1);
		private final Keyword cHyphenMinusKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final RuleCall cINTTerminalRuleCall_4_2 = (RuleCall)cGroup_4.eContents().get(2);
		
		//EFloat ecore::EFloat:
		//	'-'? INT? '.' INT (('E' | 'e') '-'? INT)?;
		@Override public ParserRule getRule() { return rule; }
		
		//'-'? INT? '.' INT (('E' | 'e') '-'? INT)?
		public Group getGroup() { return cGroup; }
		
		//'-'?
		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
		
		//INT?
		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
		
		//'.'
		public Keyword getFullStopKeyword_2() { return cFullStopKeyword_2; }
		
		//INT
		public RuleCall getINTTerminalRuleCall_3() { return cINTTerminalRuleCall_3; }
		
		//(('E' | 'e') '-'? INT)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'E' | 'e'
		public Alternatives getAlternatives_4_0() { return cAlternatives_4_0; }
		
		//'E'
		public Keyword getEKeyword_4_0_0() { return cEKeyword_4_0_0; }
		
		//'e'
		public Keyword getEKeyword_4_0_1() { return cEKeyword_4_0_1; }
		
		//'-'?
		public Keyword getHyphenMinusKeyword_4_1() { return cHyphenMinusKeyword_4_1; }
		
		//INT
		public RuleCall getINTTerminalRuleCall_4_2() { return cINTTerminalRuleCall_4_2; }
	}
	public class AnalyzedQSElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.AnalyzedQS");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAQSKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cOfKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cQsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final CrossReference cQsQScenarioCrossReference_3_0 = (CrossReference)cQsAssignment_3.eContents().get(0);
		private final RuleCall cQsQScenarioIDTerminalRuleCall_3_0_1 = (RuleCall)cQsQScenarioCrossReference_3_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cReasoningKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cReasoningAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cReasoningEStringParserRuleCall_5_2_0 = (RuleCall)cReasoningAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cArchDecisionsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cDecisionsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cDecisionsArchDecisionParserRuleCall_6_2_0 = (RuleCall)cDecisionsAssignment_6_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//AnalyzedQS:
		//	'AQS'
		//	name=ID 'of' qs=[QScenario]
		//	'{' ('reasoning' ':' reasoning=EString)? ('ArchDecisions' '{' decisions=ArchDecision '}')?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'AQS' name=ID 'of' qs=[QScenario] '{' ('reasoning' ':' reasoning=EString)? ('ArchDecisions' '{' decisions=ArchDecision
		//'}')? '}'
		public Group getGroup() { return cGroup; }
		
		//'AQS'
		public Keyword getAQSKeyword_0() { return cAQSKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'of'
		public Keyword getOfKeyword_2() { return cOfKeyword_2; }
		
		//qs=[QScenario]
		public Assignment getQsAssignment_3() { return cQsAssignment_3; }
		
		//[QScenario]
		public CrossReference getQsQScenarioCrossReference_3_0() { return cQsQScenarioCrossReference_3_0; }
		
		//ID
		public RuleCall getQsQScenarioIDTerminalRuleCall_3_0_1() { return cQsQScenarioIDTerminalRuleCall_3_0_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
		
		//('reasoning' ':' reasoning=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'reasoning'
		public Keyword getReasoningKeyword_5_0() { return cReasoningKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//reasoning=EString
		public Assignment getReasoningAssignment_5_2() { return cReasoningAssignment_5_2; }
		
		//EString
		public RuleCall getReasoningEStringParserRuleCall_5_2_0() { return cReasoningEStringParserRuleCall_5_2_0; }
		
		//('ArchDecisions' '{' decisions=ArchDecision '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'ArchDecisions'
		public Keyword getArchDecisionsKeyword_6_0() { return cArchDecisionsKeyword_6_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
		
		//decisions=ArchDecision
		public Assignment getDecisionsAssignment_6_2() { return cDecisionsAssignment_6_2; }
		
		//ArchDecision
		public RuleCall getDecisionsArchDecisionParserRuleCall_6_2_0() { return cDecisionsArchDecisionParserRuleCall_6_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_3() { return cRightCurlyBracketKeyword_6_3; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}
	public class ArchDecisionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.ArchDecision");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDecisionKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cIsRiskAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final Keyword cIsRiskIsRiskKeyword_3_0 = (Keyword)cIsRiskAssignment_3.eContents().get(0);
		private final Assignment cIsSensitivityPointAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final Keyword cIsSensitivityPointIsSensitivityPointKeyword_4_0 = (Keyword)cIsSensitivityPointAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cRationaleKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cRationaleAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cRationaleEStringParserRuleCall_5_2_0 = (RuleCall)cRationaleAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cCodeKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cCodeAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cCodeEStringParserRuleCall_6_2_0 = (RuleCall)cCodeAssignment_6_2.eContents().get(0);
		private final Keyword cTacticsKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Keyword cLeftParenthesisKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Assignment cAppliedTacticsAssignment_9 = (Assignment)cGroup.eContents().get(9);
		private final CrossReference cAppliedTacticsTacticCrossReference_9_0 = (CrossReference)cAppliedTacticsAssignment_9.eContents().get(0);
		private final RuleCall cAppliedTacticsTacticIDTerminalRuleCall_9_0_1 = (RuleCall)cAppliedTacticsTacticCrossReference_9_0.eContents().get(1);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cCommaKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Assignment cAppliedTacticsAssignment_10_1 = (Assignment)cGroup_10.eContents().get(1);
		private final CrossReference cAppliedTacticsTacticCrossReference_10_1_0 = (CrossReference)cAppliedTacticsAssignment_10_1.eContents().get(0);
		private final RuleCall cAppliedTacticsTacticIDTerminalRuleCall_10_1_0_1 = (RuleCall)cAppliedTacticsTacticCrossReference_10_1_0.eContents().get(1);
		private final Keyword cRightParenthesisKeyword_11 = (Keyword)cGroup.eContents().get(11);
		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		
		//ArchDecision:
		//	'Decision'
		//	name=ID
		//	'{'
		//	isRisk?='isRisk'?
		//	isSensitivityPoint?='isSensitivityPoint'? ('rationale' ':' rationale=EString)? ('code' ':' code=EString)?
		//	'tactics' '(' appliedTactics+=[Tactic] ("," appliedTactics+=[Tactic])* ')'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Decision' name=ID '{' isRisk?='isRisk'? isSensitivityPoint?='isSensitivityPoint'? ('rationale' ':' rationale=EString)?
		//('code' ':' code=EString)? 'tactics' '(' appliedTactics+=[Tactic] ("," appliedTactics+=[Tactic])* ')' '}'
		public Group getGroup() { return cGroup; }
		
		//'Decision'
		public Keyword getDecisionKeyword_0() { return cDecisionKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//isRisk?='isRisk'?
		public Assignment getIsRiskAssignment_3() { return cIsRiskAssignment_3; }
		
		//'isRisk'
		public Keyword getIsRiskIsRiskKeyword_3_0() { return cIsRiskIsRiskKeyword_3_0; }
		
		//isSensitivityPoint?='isSensitivityPoint'?
		public Assignment getIsSensitivityPointAssignment_4() { return cIsSensitivityPointAssignment_4; }
		
		//'isSensitivityPoint'
		public Keyword getIsSensitivityPointIsSensitivityPointKeyword_4_0() { return cIsSensitivityPointIsSensitivityPointKeyword_4_0; }
		
		//('rationale' ':' rationale=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'rationale'
		public Keyword getRationaleKeyword_5_0() { return cRationaleKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//rationale=EString
		public Assignment getRationaleAssignment_5_2() { return cRationaleAssignment_5_2; }
		
		//EString
		public RuleCall getRationaleEStringParserRuleCall_5_2_0() { return cRationaleEStringParserRuleCall_5_2_0; }
		
		//('code' ':' code=EString)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'code'
		public Keyword getCodeKeyword_6_0() { return cCodeKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//code=EString
		public Assignment getCodeAssignment_6_2() { return cCodeAssignment_6_2; }
		
		//EString
		public RuleCall getCodeEStringParserRuleCall_6_2_0() { return cCodeEStringParserRuleCall_6_2_0; }
		
		//'tactics'
		public Keyword getTacticsKeyword_7() { return cTacticsKeyword_7; }
		
		//'('
		public Keyword getLeftParenthesisKeyword_8() { return cLeftParenthesisKeyword_8; }
		
		//appliedTactics+=[Tactic]
		public Assignment getAppliedTacticsAssignment_9() { return cAppliedTacticsAssignment_9; }
		
		//[Tactic]
		public CrossReference getAppliedTacticsTacticCrossReference_9_0() { return cAppliedTacticsTacticCrossReference_9_0; }
		
		//ID
		public RuleCall getAppliedTacticsTacticIDTerminalRuleCall_9_0_1() { return cAppliedTacticsTacticIDTerminalRuleCall_9_0_1; }
		
		//("," appliedTactics+=[Tactic])*
		public Group getGroup_10() { return cGroup_10; }
		
		//","
		public Keyword getCommaKeyword_10_0() { return cCommaKeyword_10_0; }
		
		//appliedTactics+=[Tactic]
		public Assignment getAppliedTacticsAssignment_10_1() { return cAppliedTacticsAssignment_10_1; }
		
		//[Tactic]
		public CrossReference getAppliedTacticsTacticCrossReference_10_1_0() { return cAppliedTacticsTacticCrossReference_10_1_0; }
		
		//ID
		public RuleCall getAppliedTacticsTacticIDTerminalRuleCall_10_1_0_1() { return cAppliedTacticsTacticIDTerminalRuleCall_10_1_0_1; }
		
		//')'
		public Keyword getRightParenthesisKeyword_11() { return cRightParenthesisKeyword_11; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
	}
	public class ConstraintElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.Constraint");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cConstraintKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cCodeAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cCodeIDTerminalRuleCall_1_0 = (RuleCall)cCodeAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cTypeKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cTypeAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cTypeConstraintTypeEnumRuleCall_3_2_0 = (RuleCall)cTypeAssignment_3_2.eContents().get(0);
		private final Keyword cEqualsSignKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
		private final Assignment cValueAssignment_3_4 = (Assignment)cGroup_3.eContents().get(4);
		private final RuleCall cValueEStringParserRuleCall_3_4_0 = (RuleCall)cValueAssignment_3_4.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//Constraint:
		//	'Constraint'
		//	code=ID
		//	'{' ('type' ':' type=ConstraintType '=' value=EString)?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Constraint' code=ID '{' ('type' ':' type=ConstraintType '=' value=EString)? '}'
		public Group getGroup() { return cGroup; }
		
		//'Constraint'
		public Keyword getConstraintKeyword_0() { return cConstraintKeyword_0; }
		
		//code=ID
		public Assignment getCodeAssignment_1() { return cCodeAssignment_1; }
		
		//ID
		public RuleCall getCodeIDTerminalRuleCall_1_0() { return cCodeIDTerminalRuleCall_1_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
		
		//('type' ':' type=ConstraintType '=' value=EString)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'type'
		public Keyword getTypeKeyword_3_0() { return cTypeKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//type=ConstraintType
		public Assignment getTypeAssignment_3_2() { return cTypeAssignment_3_2; }
		
		//ConstraintType
		public RuleCall getTypeConstraintTypeEnumRuleCall_3_2_0() { return cTypeConstraintTypeEnumRuleCall_3_2_0; }
		
		//'='
		public Keyword getEqualsSignKeyword_3_3() { return cEqualsSignKeyword_3_3; }
		
		//value=EString
		public Assignment getValueAssignment_3_4() { return cValueAssignment_3_4; }
		
		//EString
		public RuleCall getValueEStringParserRuleCall_3_4_0() { return cValueEStringParserRuleCall_3_4_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}
	public class TacticElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.Tactic");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cTacticAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cTacticKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cQAKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cQAttributeAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cQAttributeQAttributeEnumRuleCall_4_2_0 = (RuleCall)cQAttributeAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cRationaleKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cRationaleAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cRationaleEStringParserRuleCall_5_2_0 = (RuleCall)cRationaleAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cStimulusKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cStimulusAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cStimulusEStringParserRuleCall_6_2_0 = (RuleCall)cStimulusAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cResponseKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cResponseAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cResponseEStringParserRuleCall_7_2_0 = (RuleCall)cResponseAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cViewpointKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cViewpointAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cViewpointEStringParserRuleCall_8_2_0 = (RuleCall)cViewpointAssignment_8_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		
		//Tactic:
		//	{Tactic}
		//	'Tactic'
		//	name=ID
		//	'{' ('QA' ':' qAttribute=QAttribute)? ('rationale' ':' rationale=EString)? ('stimulus' ':' stimulus=EString)?
		//	('response' ':' response=EString)? ('viewpoint' ':' viewpoint=EString)?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//{Tactic} 'Tactic' name=ID '{' ('QA' ':' qAttribute=QAttribute)? ('rationale' ':' rationale=EString)? ('stimulus' ':'
		//stimulus=EString)? ('response' ':' response=EString)? ('viewpoint' ':' viewpoint=EString)? '}'
		public Group getGroup() { return cGroup; }
		
		//{Tactic}
		public Action getTacticAction_0() { return cTacticAction_0; }
		
		//'Tactic'
		public Keyword getTacticKeyword_1() { return cTacticKeyword_1; }
		
		//name=ID
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
		
		//('QA' ':' qAttribute=QAttribute)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'QA'
		public Keyword getQAKeyword_4_0() { return cQAKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//qAttribute=QAttribute
		public Assignment getQAttributeAssignment_4_2() { return cQAttributeAssignment_4_2; }
		
		//QAttribute
		public RuleCall getQAttributeQAttributeEnumRuleCall_4_2_0() { return cQAttributeQAttributeEnumRuleCall_4_2_0; }
		
		//('rationale' ':' rationale=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'rationale'
		public Keyword getRationaleKeyword_5_0() { return cRationaleKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//rationale=EString
		public Assignment getRationaleAssignment_5_2() { return cRationaleAssignment_5_2; }
		
		//EString
		public RuleCall getRationaleEStringParserRuleCall_5_2_0() { return cRationaleEStringParserRuleCall_5_2_0; }
		
		//('stimulus' ':' stimulus=EString)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'stimulus'
		public Keyword getStimulusKeyword_6_0() { return cStimulusKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//stimulus=EString
		public Assignment getStimulusAssignment_6_2() { return cStimulusAssignment_6_2; }
		
		//EString
		public RuleCall getStimulusEStringParserRuleCall_6_2_0() { return cStimulusEStringParserRuleCall_6_2_0; }
		
		//('response' ':' response=EString)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'response'
		public Keyword getResponseKeyword_7_0() { return cResponseKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//response=EString
		public Assignment getResponseAssignment_7_2() { return cResponseAssignment_7_2; }
		
		//EString
		public RuleCall getResponseEStringParserRuleCall_7_2_0() { return cResponseEStringParserRuleCall_7_2_0; }
		
		//('viewpoint' ':' viewpoint=EString)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'viewpoint'
		public Keyword getViewpointKeyword_8_0() { return cViewpointKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//viewpoint=EString
		public Assignment getViewpointAssignment_8_2() { return cViewpointAssignment_8_2; }
		
		//EString
		public RuleCall getViewpointEStringParserRuleCall_8_2_0() { return cViewpointEStringParserRuleCall_8_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
	}
	public class EBooleanElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.EBoolean");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cTrueKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cFalseKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		
		//EBoolean ecore::EBoolean:
		//	'true' | 'false';
		@Override public ParserRule getRule() { return rule; }
		
		//'true' | 'false'
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//'true'
		public Keyword getTrueKeyword_0() { return cTrueKeyword_0; }
		
		//'false'
		public Keyword getFalseKeyword_1() { return cFalseKeyword_1; }
	}
	
	public class QAMetricElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.QAMetric");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cTHROUGHPUTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cTHROUGHPUTTHROUGHPUTKeyword_0_0 = (Keyword)cTHROUGHPUTEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cLATENCYEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cLATENCYLATENCYKeyword_1_0 = (Keyword)cLATENCYEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cDEADLINEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cDEADLINEDEADLINEKeyword_2_0 = (Keyword)cDEADLINEEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cUPDATETIMEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cUPDATETIMEUPDATETIMEKeyword_3_0 = (Keyword)cUPDATETIMEEnumLiteralDeclaration_3.eContents().get(0);
		
		//enum QAMetric:
		//	THROUGHPUT | LATENCY | DEADLINE | UPDATETIME;
		public EnumRule getRule() { return rule; }
		
		//THROUGHPUT | LATENCY | DEADLINE | UPDATETIME
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//THROUGHPUT
		public EnumLiteralDeclaration getTHROUGHPUTEnumLiteralDeclaration_0() { return cTHROUGHPUTEnumLiteralDeclaration_0; }
		
		//'THROUGHPUT'
		public Keyword getTHROUGHPUTTHROUGHPUTKeyword_0_0() { return cTHROUGHPUTTHROUGHPUTKeyword_0_0; }
		
		//LATENCY
		public EnumLiteralDeclaration getLATENCYEnumLiteralDeclaration_1() { return cLATENCYEnumLiteralDeclaration_1; }
		
		//'LATENCY'
		public Keyword getLATENCYLATENCYKeyword_1_0() { return cLATENCYLATENCYKeyword_1_0; }
		
		//DEADLINE
		public EnumLiteralDeclaration getDEADLINEEnumLiteralDeclaration_2() { return cDEADLINEEnumLiteralDeclaration_2; }
		
		//'DEADLINE'
		public Keyword getDEADLINEDEADLINEKeyword_2_0() { return cDEADLINEDEADLINEKeyword_2_0; }
		
		//UPDATETIME
		public EnumLiteralDeclaration getUPDATETIMEEnumLiteralDeclaration_3() { return cUPDATETIMEEnumLiteralDeclaration_3; }
		
		//'UPDATETIME'
		public Keyword getUPDATETIMEUPDATETIMEKeyword_3_0() { return cUPDATETIMEUPDATETIMEKeyword_3_0; }
	}
	public class MetricUnitElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.MetricUnit");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cMILLISEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cMILLISMILLISKeyword_0_0 = (Keyword)cMILLISEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cSECONDSEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cSECONDSSECONDSKeyword_1_0 = (Keyword)cSECONDSEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cMINUTESEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cMINUTESMINUTESKeyword_2_0 = (Keyword)cMINUTESEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cHOURSEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cHOURSHOURSKeyword_3_0 = (Keyword)cHOURSEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cTASKSEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cTASKSTASKSKeyword_4_0 = (Keyword)cTASKSEnumLiteralDeclaration_4.eContents().get(0);
		private final EnumLiteralDeclaration cBYTESEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
		private final Keyword cBYTESBYTESKeyword_5_0 = (Keyword)cBYTESEnumLiteralDeclaration_5.eContents().get(0);
		private final EnumLiteralDeclaration cMSGSEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
		private final Keyword cMSGSMSGSKeyword_6_0 = (Keyword)cMSGSEnumLiteralDeclaration_6.eContents().get(0);
		
		//enum MetricUnit:
		//	MILLIS | SECONDS | MINUTES | HOURS | TASKS | BYTES | MSGS;
		public EnumRule getRule() { return rule; }
		
		//MILLIS | SECONDS | MINUTES | HOURS | TASKS | BYTES | MSGS
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//MILLIS
		public EnumLiteralDeclaration getMILLISEnumLiteralDeclaration_0() { return cMILLISEnumLiteralDeclaration_0; }
		
		//'MILLIS'
		public Keyword getMILLISMILLISKeyword_0_0() { return cMILLISMILLISKeyword_0_0; }
		
		//SECONDS
		public EnumLiteralDeclaration getSECONDSEnumLiteralDeclaration_1() { return cSECONDSEnumLiteralDeclaration_1; }
		
		//'SECONDS'
		public Keyword getSECONDSSECONDSKeyword_1_0() { return cSECONDSSECONDSKeyword_1_0; }
		
		//MINUTES
		public EnumLiteralDeclaration getMINUTESEnumLiteralDeclaration_2() { return cMINUTESEnumLiteralDeclaration_2; }
		
		//'MINUTES'
		public Keyword getMINUTESMINUTESKeyword_2_0() { return cMINUTESMINUTESKeyword_2_0; }
		
		//HOURS
		public EnumLiteralDeclaration getHOURSEnumLiteralDeclaration_3() { return cHOURSEnumLiteralDeclaration_3; }
		
		//'HOURS'
		public Keyword getHOURSHOURSKeyword_3_0() { return cHOURSHOURSKeyword_3_0; }
		
		//TASKS
		public EnumLiteralDeclaration getTASKSEnumLiteralDeclaration_4() { return cTASKSEnumLiteralDeclaration_4; }
		
		//'TASKS'
		public Keyword getTASKSTASKSKeyword_4_0() { return cTASKSTASKSKeyword_4_0; }
		
		//BYTES
		public EnumLiteralDeclaration getBYTESEnumLiteralDeclaration_5() { return cBYTESEnumLiteralDeclaration_5; }
		
		//'BYTES'
		public Keyword getBYTESBYTESKeyword_5_0() { return cBYTESBYTESKeyword_5_0; }
		
		//MSGS
		public EnumLiteralDeclaration getMSGSEnumLiteralDeclaration_6() { return cMSGSEnumLiteralDeclaration_6; }
		
		//'MSGS'
		public Keyword getMSGSMSGSKeyword_6_0() { return cMSGSMSGSKeyword_6_0; }
	}
	public class QAttributeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.QAttribute");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cAVAILABILITYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cAVAILABILITYAVAILABILITYKeyword_0_0 = (Keyword)cAVAILABILITYEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cPERFORMANCEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cPERFORMANCEPERFORMANCEKeyword_1_0 = (Keyword)cPERFORMANCEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cMODIFIABILITYEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cMODIFIABILITYMODIFIABILITYKeyword_2_0 = (Keyword)cMODIFIABILITYEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cTESTABILITYEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cTESTABILITYTESTABILITYKeyword_3_0 = (Keyword)cTESTABILITYEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cSCALABILITYEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cSCALABILITYSCALABILITYKeyword_4_0 = (Keyword)cSCALABILITYEnumLiteralDeclaration_4.eContents().get(0);
		
		//enum QAttribute:
		//	AVAILABILITY | PERFORMANCE | MODIFIABILITY | TESTABILITY | SCALABILITY;
		public EnumRule getRule() { return rule; }
		
		//AVAILABILITY | PERFORMANCE | MODIFIABILITY | TESTABILITY | SCALABILITY
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//AVAILABILITY
		public EnumLiteralDeclaration getAVAILABILITYEnumLiteralDeclaration_0() { return cAVAILABILITYEnumLiteralDeclaration_0; }
		
		//'AVAILABILITY'
		public Keyword getAVAILABILITYAVAILABILITYKeyword_0_0() { return cAVAILABILITYAVAILABILITYKeyword_0_0; }
		
		//PERFORMANCE
		public EnumLiteralDeclaration getPERFORMANCEEnumLiteralDeclaration_1() { return cPERFORMANCEEnumLiteralDeclaration_1; }
		
		//'PERFORMANCE'
		public Keyword getPERFORMANCEPERFORMANCEKeyword_1_0() { return cPERFORMANCEPERFORMANCEKeyword_1_0; }
		
		//MODIFIABILITY
		public EnumLiteralDeclaration getMODIFIABILITYEnumLiteralDeclaration_2() { return cMODIFIABILITYEnumLiteralDeclaration_2; }
		
		//'MODIFIABILITY'
		public Keyword getMODIFIABILITYMODIFIABILITYKeyword_2_0() { return cMODIFIABILITYMODIFIABILITYKeyword_2_0; }
		
		//TESTABILITY
		public EnumLiteralDeclaration getTESTABILITYEnumLiteralDeclaration_3() { return cTESTABILITYEnumLiteralDeclaration_3; }
		
		//'TESTABILITY'
		public Keyword getTESTABILITYTESTABILITYKeyword_3_0() { return cTESTABILITYTESTABILITYKeyword_3_0; }
		
		//SCALABILITY
		public EnumLiteralDeclaration getSCALABILITYEnumLiteralDeclaration_4() { return cSCALABILITYEnumLiteralDeclaration_4; }
		
		//'SCALABILITY'
		public Keyword getSCALABILITYSCALABILITYKeyword_4_0() { return cSCALABILITYSCALABILITYKeyword_4_0; }
	}
	public class ConstraintTypeElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_rq.Ainl.ConstraintType");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cARCH_STYLEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cARCH_STYLEARCH_STYLEKeyword_0_0 = (Keyword)cARCH_STYLEEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cCLOUD_PROVEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cCLOUD_PROVCLOUD_PROVKeyword_1_0 = (Keyword)cCLOUD_PROVEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cLICENSEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cLICENSELICENSEKeyword_2_0 = (Keyword)cLICENSEEnumLiteralDeclaration_2.eContents().get(0);
		private final EnumLiteralDeclaration cPROC_MODELEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
		private final Keyword cPROC_MODELPROC_MODELKeyword_3_0 = (Keyword)cPROC_MODELEnumLiteralDeclaration_3.eContents().get(0);
		private final EnumLiteralDeclaration cTECH_VENDOREnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
		private final Keyword cTECH_VENDORTECH_VENDORKeyword_4_0 = (Keyword)cTECH_VENDOREnumLiteralDeclaration_4.eContents().get(0);
		
		//enum ConstraintType:
		//	ARCH_STYLE | CLOUD_PROV | LICENSE | PROC_MODEL | TECH_VENDOR;
		public EnumRule getRule() { return rule; }
		
		//ARCH_STYLE | CLOUD_PROV | LICENSE | PROC_MODEL | TECH_VENDOR
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//ARCH_STYLE
		public EnumLiteralDeclaration getARCH_STYLEEnumLiteralDeclaration_0() { return cARCH_STYLEEnumLiteralDeclaration_0; }
		
		//'ARCH_STYLE'
		public Keyword getARCH_STYLEARCH_STYLEKeyword_0_0() { return cARCH_STYLEARCH_STYLEKeyword_0_0; }
		
		//CLOUD_PROV
		public EnumLiteralDeclaration getCLOUD_PROVEnumLiteralDeclaration_1() { return cCLOUD_PROVEnumLiteralDeclaration_1; }
		
		//'CLOUD_PROV'
		public Keyword getCLOUD_PROVCLOUD_PROVKeyword_1_0() { return cCLOUD_PROVCLOUD_PROVKeyword_1_0; }
		
		//LICENSE
		public EnumLiteralDeclaration getLICENSEEnumLiteralDeclaration_2() { return cLICENSEEnumLiteralDeclaration_2; }
		
		//'LICENSE'
		public Keyword getLICENSELICENSEKeyword_2_0() { return cLICENSELICENSEKeyword_2_0; }
		
		//PROC_MODEL
		public EnumLiteralDeclaration getPROC_MODELEnumLiteralDeclaration_3() { return cPROC_MODELEnumLiteralDeclaration_3; }
		
		//'PROC_MODEL'
		public Keyword getPROC_MODELPROC_MODELKeyword_3_0() { return cPROC_MODELPROC_MODELKeyword_3_0; }
		
		//TECH_VENDOR
		public EnumLiteralDeclaration getTECH_VENDOREnumLiteralDeclaration_4() { return cTECH_VENDOREnumLiteralDeclaration_4; }
		
		//'TECH_VENDOR'
		public Keyword getTECH_VENDORTECH_VENDORKeyword_4_0() { return cTECH_VENDORTECH_VENDORKeyword_4_0; }
	}
	
	private final ProjectElements pProject;
	private final EStringElements pEString;
	private final QScenarioElements pQScenario;
	private final QAMetricElements eQAMetric;
	private final EFloatElements pEFloat;
	private final MetricUnitElements eMetricUnit;
	private final QAttributeElements eQAttribute;
	private final ConstraintTypeElements eConstraintType;
	private final AnalyzedQSElements pAnalyzedQS;
	private final ArchDecisionElements pArchDecision;
	private final ConstraintElements pConstraint;
	private final TacticElements pTactic;
	private final EBooleanElements pEBoolean;
	
	private final Grammar grammar;
	
	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public AinlGrammarAccess(GrammarProvider grammarProvider,
			TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
		this.pProject = new ProjectElements();
		this.pEString = new EStringElements();
		this.pQScenario = new QScenarioElements();
		this.eQAMetric = new QAMetricElements();
		this.pEFloat = new EFloatElements();
		this.eMetricUnit = new MetricUnitElements();
		this.eQAttribute = new QAttributeElements();
		this.eConstraintType = new ConstraintTypeElements();
		this.pAnalyzedQS = new AnalyzedQSElements();
		this.pArchDecision = new ArchDecisionElements();
		this.pConstraint = new ConstraintElements();
		this.pTactic = new TacticElements();
		this.pEBoolean = new EBooleanElements();
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("co.edu.uniandes.accordant_rq.Ainl".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	
	
	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//Project:
	//	{Project}
	//	'Project'
	//	name=ID
	//	'{'
	//	'QScenarios' '{' scenarios+=QScenario ("," scenarios+=QScenario)* '}' ('analyzedQScenarios' '{' analyzedQs+=AnalyzedQS
	//	("," analyzedQs+=AnalyzedQS)* '}')? ('constraints' '{' constraints+=Constraint ("," constraints+=Constraint)* '}')?
	//	'tactics' '{' tactics+=Tactic (',' tactics+=Tactic)* '}'
	//	'}';
	public ProjectElements getProjectAccess() {
		return pProject;
	}
	
	public ParserRule getProjectRule() {
		return getProjectAccess().getRule();
	}
	
	//EString:
	//	STRING | ID;
	public EStringElements getEStringAccess() {
		return pEString;
	}
	
	public ParserRule getEStringRule() {
		return getEStringAccess().getRule();
	}
	
	//QScenario:
	//	'QS'
	//	name=ID
	//	'{'
	//	'QA' ':' qAttribute=QAttribute
	//	'stimulus' ':' stimulus=EString
	//	'environment' ':' environment=EString
	//	'response' ':' response=EString
	//	'measure' ':' measure=QAMetric 'between' minValue=EFloat 'and' maxValue=EFloat 'in' unit=MetricUnit
	//	'}';
	public QScenarioElements getQScenarioAccess() {
		return pQScenario;
	}
	
	public ParserRule getQScenarioRule() {
		return getQScenarioAccess().getRule();
	}
	
	//enum QAMetric:
	//	THROUGHPUT | LATENCY | DEADLINE | UPDATETIME;
	public QAMetricElements getQAMetricAccess() {
		return eQAMetric;
	}
	
	public EnumRule getQAMetricRule() {
		return getQAMetricAccess().getRule();
	}
	
	//EFloat ecore::EFloat:
	//	'-'? INT? '.' INT (('E' | 'e') '-'? INT)?;
	public EFloatElements getEFloatAccess() {
		return pEFloat;
	}
	
	public ParserRule getEFloatRule() {
		return getEFloatAccess().getRule();
	}
	
	//enum MetricUnit:
	//	MILLIS | SECONDS | MINUTES | HOURS | TASKS | BYTES | MSGS;
	public MetricUnitElements getMetricUnitAccess() {
		return eMetricUnit;
	}
	
	public EnumRule getMetricUnitRule() {
		return getMetricUnitAccess().getRule();
	}
	
	//enum QAttribute:
	//	AVAILABILITY | PERFORMANCE | MODIFIABILITY | TESTABILITY | SCALABILITY;
	public QAttributeElements getQAttributeAccess() {
		return eQAttribute;
	}
	
	public EnumRule getQAttributeRule() {
		return getQAttributeAccess().getRule();
	}
	
	//enum ConstraintType:
	//	ARCH_STYLE | CLOUD_PROV | LICENSE | PROC_MODEL | TECH_VENDOR;
	public ConstraintTypeElements getConstraintTypeAccess() {
		return eConstraintType;
	}
	
	public EnumRule getConstraintTypeRule() {
		return getConstraintTypeAccess().getRule();
	}
	
	//AnalyzedQS:
	//	'AQS'
	//	name=ID 'of' qs=[QScenario]
	//	'{' ('reasoning' ':' reasoning=EString)? ('ArchDecisions' '{' decisions=ArchDecision '}')?
	//	'}';
	public AnalyzedQSElements getAnalyzedQSAccess() {
		return pAnalyzedQS;
	}
	
	public ParserRule getAnalyzedQSRule() {
		return getAnalyzedQSAccess().getRule();
	}
	
	//ArchDecision:
	//	'Decision'
	//	name=ID
	//	'{'
	//	isRisk?='isRisk'?
	//	isSensitivityPoint?='isSensitivityPoint'? ('rationale' ':' rationale=EString)? ('code' ':' code=EString)?
	//	'tactics' '(' appliedTactics+=[Tactic] ("," appliedTactics+=[Tactic])* ')'
	//	'}';
	public ArchDecisionElements getArchDecisionAccess() {
		return pArchDecision;
	}
	
	public ParserRule getArchDecisionRule() {
		return getArchDecisionAccess().getRule();
	}
	
	//Constraint:
	//	'Constraint'
	//	code=ID
	//	'{' ('type' ':' type=ConstraintType '=' value=EString)?
	//	'}';
	public ConstraintElements getConstraintAccess() {
		return pConstraint;
	}
	
	public ParserRule getConstraintRule() {
		return getConstraintAccess().getRule();
	}
	
	//Tactic:
	//	{Tactic}
	//	'Tactic'
	//	name=ID
	//	'{' ('QA' ':' qAttribute=QAttribute)? ('rationale' ':' rationale=EString)? ('stimulus' ':' stimulus=EString)?
	//	('response' ':' response=EString)? ('viewpoint' ':' viewpoint=EString)?
	//	'}';
	public TacticElements getTacticAccess() {
		return pTactic;
	}
	
	public ParserRule getTacticRule() {
		return getTacticAccess().getRule();
	}
	
	//EBoolean ecore::EBoolean:
	//	'true' | 'false';
	public EBooleanElements getEBooleanAccess() {
		return pEBoolean;
	}
	
	public ParserRule getEBooleanRule() {
		return getEBooleanAccess().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:
	//	'"' ('\\' . | !('\\' | '"'))* '"' |
	//	"'" ('\\' . | !('\\' | "'"))* "'";
	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();
	}
}
