/*
* generated by Xtext
*/

package org.xtext.example.mydsl3.services;

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

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 MyDslGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class AgentInternalViewpointElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AgentInternalViewpoint");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAgentInternalViewPointKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
		private final Assignment cSemanticwebagentAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
		private final RuleCall cSemanticwebagentSemanticWebAgentParserRuleCall_2_0_0_0 = (RuleCall)cSemanticwebagentAssignment_2_0_0.eContents().get(0);
		private final Assignment cCapabilitiesAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
		private final RuleCall cCapabilitiesCapabilitiesParserRuleCall_2_0_1_0 = (RuleCall)cCapabilitiesAssignment_2_0_1.eContents().get(0);
		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
		private final Assignment cCapabilitiesAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
		private final RuleCall cCapabilitiesCapabilitiesParserRuleCall_2_1_0_0 = (RuleCall)cCapabilitiesAssignment_2_1_0.eContents().get(0);
		private final Assignment cSemanticwebagentAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
		private final RuleCall cSemanticwebagentSemanticWebAgentParserRuleCall_2_1_1_0 = (RuleCall)cSemanticwebagentAssignment_2_1_1.eContents().get(0);
		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
		private final Assignment cBeliefAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
		private final RuleCall cBeliefBeliefParserRuleCall_3_0_0 = (RuleCall)cBeliefAssignment_3_0.eContents().get(0);
		private final Assignment cGoalAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
		private final RuleCall cGoalGoalParserRuleCall_3_1_0 = (RuleCall)cGoalAssignment_3_1.eContents().get(0);
		private final Assignment cCapabilitiesAssignment_3_2 = (Assignment)cAlternatives_3.eContents().get(2);
		private final RuleCall cCapabilitiesCapabilitiesParserRuleCall_3_2_0 = (RuleCall)cCapabilitiesAssignment_3_2.eContents().get(0);
		private final Assignment cAgentstateAssignment_3_3 = (Assignment)cAlternatives_3.eContents().get(3);
		private final RuleCall cAgentstateAgentStateParserRuleCall_3_3_0 = (RuleCall)cAgentstateAssignment_3_3.eContents().get(0);
		private final Assignment cSemanticwebagentAssignment_3_4 = (Assignment)cAlternatives_3.eContents().get(4);
		private final RuleCall cSemanticwebagentSemanticWebAgentParserRuleCall_3_4_0 = (RuleCall)cSemanticwebagentAssignment_3_4.eContents().get(0);
		private final Assignment cRoleAssignment_3_5 = (Assignment)cAlternatives_3.eContents().get(5);
		private final RuleCall cRoleRoleParserRuleCall_3_5_0 = (RuleCall)cRoleAssignment_3_5.eContents().get(0);
		private final Assignment cPlanAssignment_3_6 = (Assignment)cAlternatives_3.eContents().get(6);
		private final RuleCall cPlanPlanParserRuleCall_3_6_0 = (RuleCall)cPlanAssignment_3_6.eContents().get(0);
		private final Assignment cAgenttypeAssignment_3_7 = (Assignment)cAlternatives_3.eContents().get(7);
		private final RuleCall cAgenttypeAgentTypeParserRuleCall_3_7_0 = (RuleCall)cAgenttypeAssignment_3_7.eContents().get(0);
		private final Assignment cBehaviourAssignment_3_8 = (Assignment)cAlternatives_3.eContents().get(8);
		private final RuleCall cBehaviourBehaviourParserRuleCall_3_8_0 = (RuleCall)cBehaviourAssignment_3_8.eContents().get(0);
		private final Keyword cRGhtCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//AgentInternalViewpoint:
		//	"AgentInternalViewPoint" "{" (semanticwebagent+=SemanticWebAgent capabilities+=Capabilities |
		//	capabilities+=Capabilities semanticwebagent+=SemanticWebAgent) (belief+=Belief | goal+=Goal |
		//	capabilities+=Capabilities | agentstate+=AgentState | semanticwebagent+=SemanticWebAgent | role+=Role | plan+=Plan |
		//	agenttype+=AgentType | behaviour+=Behaviour)* "}";
		public ParserRule getRule() { return rule; }

		//"AgentInternalViewPoint" "{" (semanticwebagent+=SemanticWebAgent capabilities+=Capabilities | capabilities+=Capabilities
		//semanticwebagent+=SemanticWebAgent) (belief+=Belief | goal+=Goal | capabilities+=Capabilities | agentstate+=AgentState
		//| semanticwebagent+=SemanticWebAgent | role+=Role | plan+=Plan | agenttype+=AgentType | behaviour+=Behaviour)* "}"
		public Group getGroup() { return cGroup; }

		//"AgentInternalViewPoint"
		public Keyword getAgentInternalViewPointKeyword_0() { return cAgentInternalViewPointKeyword_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }

		//semanticwebagent+=SemanticWebAgent capabilities+=Capabilities | capabilities+=Capabilities
		//semanticwebagent+=SemanticWebAgent
		public Alternatives getAlternatives_2() { return cAlternatives_2; }

		//semanticwebagent+=SemanticWebAgent capabilities+=Capabilities
		public Group getGroup_2_0() { return cGroup_2_0; }

		//semanticwebagent+=SemanticWebAgent
		public Assignment getSemanticwebagentAssignment_2_0_0() { return cSemanticwebagentAssignment_2_0_0; }

		//SemanticWebAgent
		public RuleCall getSemanticwebagentSemanticWebAgentParserRuleCall_2_0_0_0() { return cSemanticwebagentSemanticWebAgentParserRuleCall_2_0_0_0; }

		//capabilities+=Capabilities
		public Assignment getCapabilitiesAssignment_2_0_1() { return cCapabilitiesAssignment_2_0_1; }

		//Capabilities
		public RuleCall getCapabilitiesCapabilitiesParserRuleCall_2_0_1_0() { return cCapabilitiesCapabilitiesParserRuleCall_2_0_1_0; }

		//capabilities+=Capabilities semanticwebagent+=SemanticWebAgent
		public Group getGroup_2_1() { return cGroup_2_1; }

		//capabilities+=Capabilities
		public Assignment getCapabilitiesAssignment_2_1_0() { return cCapabilitiesAssignment_2_1_0; }

		//Capabilities
		public RuleCall getCapabilitiesCapabilitiesParserRuleCall_2_1_0_0() { return cCapabilitiesCapabilitiesParserRuleCall_2_1_0_0; }

		//semanticwebagent+=SemanticWebAgent
		public Assignment getSemanticwebagentAssignment_2_1_1() { return cSemanticwebagentAssignment_2_1_1; }

		//SemanticWebAgent
		public RuleCall getSemanticwebagentSemanticWebAgentParserRuleCall_2_1_1_0() { return cSemanticwebagentSemanticWebAgentParserRuleCall_2_1_1_0; }

		//(belief+=Belief | goal+=Goal | capabilities+=Capabilities | agentstate+=AgentState | semanticwebagent+=SemanticWebAgent
		//| role+=Role | plan+=Plan | agenttype+=AgentType | behaviour+=Behaviour)*
		public Alternatives getAlternatives_3() { return cAlternatives_3; }

		//belief+=Belief
		public Assignment getBeliefAssignment_3_0() { return cBeliefAssignment_3_0; }

		//Belief
		public RuleCall getBeliefBeliefParserRuleCall_3_0_0() { return cBeliefBeliefParserRuleCall_3_0_0; }

		//goal+=Goal
		public Assignment getGoalAssignment_3_1() { return cGoalAssignment_3_1; }

		//Goal
		public RuleCall getGoalGoalParserRuleCall_3_1_0() { return cGoalGoalParserRuleCall_3_1_0; }

		//capabilities+=Capabilities
		public Assignment getCapabilitiesAssignment_3_2() { return cCapabilitiesAssignment_3_2; }

		//Capabilities
		public RuleCall getCapabilitiesCapabilitiesParserRuleCall_3_2_0() { return cCapabilitiesCapabilitiesParserRuleCall_3_2_0; }

		//agentstate+=AgentState
		public Assignment getAgentstateAssignment_3_3() { return cAgentstateAssignment_3_3; }

		//AgentState
		public RuleCall getAgentstateAgentStateParserRuleCall_3_3_0() { return cAgentstateAgentStateParserRuleCall_3_3_0; }

		//semanticwebagent+=SemanticWebAgent
		public Assignment getSemanticwebagentAssignment_3_4() { return cSemanticwebagentAssignment_3_4; }

		//SemanticWebAgent
		public RuleCall getSemanticwebagentSemanticWebAgentParserRuleCall_3_4_0() { return cSemanticwebagentSemanticWebAgentParserRuleCall_3_4_0; }

		//role+=Role
		public Assignment getRoleAssignment_3_5() { return cRoleAssignment_3_5; }

		//Role
		public RuleCall getRoleRoleParserRuleCall_3_5_0() { return cRoleRoleParserRuleCall_3_5_0; }

		//plan+=Plan
		public Assignment getPlanAssignment_3_6() { return cPlanAssignment_3_6; }

		//Plan
		public RuleCall getPlanPlanParserRuleCall_3_6_0() { return cPlanPlanParserRuleCall_3_6_0; }

		//agenttype+=AgentType
		public Assignment getAgenttypeAssignment_3_7() { return cAgenttypeAssignment_3_7; }

		//AgentType
		public RuleCall getAgenttypeAgentTypeParserRuleCall_3_7_0() { return cAgenttypeAgentTypeParserRuleCall_3_7_0; }

		//behaviour+=Behaviour
		public Assignment getBehaviourAssignment_3_8() { return cBehaviourAssignment_3_8; }

		//Behaviour
		public RuleCall getBehaviourBehaviourParserRuleCall_3_8_0() { return cBehaviourBehaviourParserRuleCall_3_8_0; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_4() { return cRGhtCurlyBracketKeyword_4; }
	}

	public class BeliefElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Belief");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cBeliefKeyword_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 Assignment cDescriptionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cDescriptionSTRINGTerminalRuleCall_2_0 = (RuleCall)cDescriptionAssignment_2.eContents().get(0);
		private final Assignment cDynamicAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cDynamicINTTerminalRuleCall_3_0 = (RuleCall)cDynamicAssignment_3.eContents().get(0);
		private final Keyword cSemColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//Belief:
		//	"Belief" name=ID description=STRING dynamic=INT ";";
		public ParserRule getRule() { return rule; }

		//"Belief" name=ID description=STRING dynamic=INT ";"
		public Group getGroup() { return cGroup; }

		//"Belief"
		public Keyword getBeliefKeyword_0() { return cBeliefKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//description=STRING
		public Assignment getDescriptionAssignment_2() { return cDescriptionAssignment_2; }

		//STRING
		public RuleCall getDescriptionSTRINGTerminalRuleCall_2_0() { return cDescriptionSTRINGTerminalRuleCall_2_0; }

		//dynamic=INT
		public Assignment getDynamicAssignment_3() { return cDynamicAssignment_3; }

		//INT
		public RuleCall getDynamicINTTerminalRuleCall_3_0() { return cDynamicINTTerminalRuleCall_3_0; }

		//";"
		public Keyword getSemColonKeyword_4() { return cSemColonKeyword_4; }
	}

	public class GoalElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Goal");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cGoalKeyword_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 Assignment cDescriptionAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cDescriptionSTRINGTerminalRuleCall_2_0 = (RuleCall)cDescriptionAssignment_2.eContents().get(0);
		private final Assignment cRecurAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cRecurINTTerminalRuleCall_3_0 = (RuleCall)cRecurAssignment_3.eContents().get(0);
		private final Keyword cSemColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//Goal:
		//	"Goal" name=ID description=STRING recur=INT ";";
		public ParserRule getRule() { return rule; }

		//"Goal" name=ID description=STRING recur=INT ";"
		public Group getGroup() { return cGroup; }

		//"Goal"
		public Keyword getGoalKeyword_0() { return cGoalKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//description=STRING
		public Assignment getDescriptionAssignment_2() { return cDescriptionAssignment_2; }

		//STRING
		public RuleCall getDescriptionSTRINGTerminalRuleCall_2_0() { return cDescriptionSTRINGTerminalRuleCall_2_0; }

		//recur=INT
		public Assignment getRecurAssignment_3() { return cRecurAssignment_3; }

		//INT
		public RuleCall getRecurINTTerminalRuleCall_3_0() { return cRecurINTTerminalRuleCall_3_0; }

		//";"
		public Keyword getSemColonKeyword_4() { return cSemColonKeyword_4; }
	}

	public class CapabilitiesElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Capabilities");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cCapabilitiesKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0_1_0 = (RuleCall)cNameAssignment_0_1.eContents().get(0);
		private final Assignment cDescriptionAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cDescriptionSTRINGTerminalRuleCall_0_2_0 = (RuleCall)cDescriptionAssignment_0_2.eContents().get(0);
		private final Keyword cSemColonKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cCapAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cCapCapabilitiesCrossReference_1_0_0 = (CrossReference)cCapAssignment_1_0.eContents().get(0);
		private final RuleCall cCapCapabilitiesIDTerminalRuleCall_1_0_0_1 = (RuleCall)cCapCapabilitiesCrossReference_1_0_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Alternatives cAlternatives_1_2 = (Alternatives)cGroup_1.eContents().get(2);
		private final Group cGroup_1_2_0 = (Group)cAlternatives_1_2.eContents().get(0);
		private final Keyword cIncludesKeyword_1_2_0_0 = (Keyword)cGroup_1_2_0.eContents().get(0);
		private final Assignment cBeliefAssignment_1_2_0_1 = (Assignment)cGroup_1_2_0.eContents().get(1);
		private final CrossReference cBeliefBeliefCrossReference_1_2_0_1_0 = (CrossReference)cBeliefAssignment_1_2_0_1.eContents().get(0);
		private final RuleCall cBeliefBeliefIDTerminalRuleCall_1_2_0_1_0_1 = (RuleCall)cBeliefBeliefCrossReference_1_2_0_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_2_0_2 = (Keyword)cGroup_1_2_0.eContents().get(2);
		private final Group cGroup_1_2_1 = (Group)cAlternatives_1_2.eContents().get(1);
		private final Keyword cUsesKeyword_1_2_1_0 = (Keyword)cGroup_1_2_1.eContents().get(0);
		private final Assignment cGoalAssignment_1_2_1_1 = (Assignment)cGroup_1_2_1.eContents().get(1);
		private final CrossReference cGoalGoalCrossReference_1_2_1_1_0 = (CrossReference)cGoalAssignment_1_2_1_1.eContents().get(0);
		private final RuleCall cGoalGoalIDTerminalRuleCall_1_2_1_1_0_1 = (RuleCall)cGoalGoalCrossReference_1_2_1_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_2_1_2 = (Keyword)cGroup_1_2_1.eContents().get(2);
		private final Group cGroup_1_2_2 = (Group)cAlternatives_1_2.eContents().get(2);
		private final Keyword cAppliesKeyword_1_2_2_0 = (Keyword)cGroup_1_2_2.eContents().get(0);
		private final Assignment cPlanAssignment_1_2_2_1 = (Assignment)cGroup_1_2_2.eContents().get(1);
		private final CrossReference cPlanPlanCrossReference_1_2_2_1_0 = (CrossReference)cPlanAssignment_1_2_2_1.eContents().get(0);
		private final RuleCall cPlanPlanIDTerminalRuleCall_1_2_2_1_0_1 = (RuleCall)cPlanPlanCrossReference_1_2_2_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_2_2_2 = (Keyword)cGroup_1_2_2.eContents().get(2);
		private final Keyword cRGhtCurlyBracketKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		
		//Capabilities:
		//	"Capabilities" name=ID description=STRING ";" | cap=[Capabilities] "{" ("includes" belief=[Belief] ";" | "uses"
		//	goal=[Goal] ";" | "applies" plan=[Plan] ";")* "}";
		public ParserRule getRule() { return rule; }

		//"Capabilities" name=ID description=STRING ";" | cap=[Capabilities] "{" ("includes" belief=[Belief] ";" | "uses"
		//goal=[Goal] ";" | "applies" plan=[Plan] ";")* "}"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"Capabilities" name=ID description=STRING ";"
		public Group getGroup_0() { return cGroup_0; }

		//"Capabilities"
		public Keyword getCapabilitiesKeyword_0_0() { return cCapabilitiesKeyword_0_0; }

		//name=ID
		public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_1_0() { return cNameIDTerminalRuleCall_0_1_0; }

		//description=STRING
		public Assignment getDescriptionAssignment_0_2() { return cDescriptionAssignment_0_2; }

		//STRING
		public RuleCall getDescriptionSTRINGTerminalRuleCall_0_2_0() { return cDescriptionSTRINGTerminalRuleCall_0_2_0; }

		//";"
		public Keyword getSemColonKeyword_0_3() { return cSemColonKeyword_0_3; }

		//cap=[Capabilities] "{" ("includes" belief=[Belief] ";" | "uses" goal=[Goal] ";" | "applies" plan=[Plan] ";")* "}"
		public Group getGroup_1() { return cGroup_1; }

		//cap=[Capabilities]
		public Assignment getCapAssignment_1_0() { return cCapAssignment_1_0; }

		//[Capabilities]
		public CrossReference getCapCapabilitiesCrossReference_1_0_0() { return cCapCapabilitiesCrossReference_1_0_0; }

		//ID
		public RuleCall getCapCapabilitiesIDTerminalRuleCall_1_0_0_1() { return cCapCapabilitiesIDTerminalRuleCall_1_0_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1() { return cLeftCurlyBracketKeyword_1_1; }

		//("includes" belief=[Belief] ";" | "uses" goal=[Goal] ";" | "applies" plan=[Plan] ";")*
		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }

		//"includes" belief=[Belief] ";"
		public Group getGroup_1_2_0() { return cGroup_1_2_0; }

		//"includes"
		public Keyword getIncludesKeyword_1_2_0_0() { return cIncludesKeyword_1_2_0_0; }

		//belief=[Belief]
		public Assignment getBeliefAssignment_1_2_0_1() { return cBeliefAssignment_1_2_0_1; }

		//[Belief]
		public CrossReference getBeliefBeliefCrossReference_1_2_0_1_0() { return cBeliefBeliefCrossReference_1_2_0_1_0; }

		//ID
		public RuleCall getBeliefBeliefIDTerminalRuleCall_1_2_0_1_0_1() { return cBeliefBeliefIDTerminalRuleCall_1_2_0_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_2_0_2() { return cSemColonKeyword_1_2_0_2; }

		//"uses" goal=[Goal] ";"
		public Group getGroup_1_2_1() { return cGroup_1_2_1; }

		//"uses"
		public Keyword getUsesKeyword_1_2_1_0() { return cUsesKeyword_1_2_1_0; }

		//goal=[Goal]
		public Assignment getGoalAssignment_1_2_1_1() { return cGoalAssignment_1_2_1_1; }

		//[Goal]
		public CrossReference getGoalGoalCrossReference_1_2_1_1_0() { return cGoalGoalCrossReference_1_2_1_1_0; }

		//ID
		public RuleCall getGoalGoalIDTerminalRuleCall_1_2_1_1_0_1() { return cGoalGoalIDTerminalRuleCall_1_2_1_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_2_1_2() { return cSemColonKeyword_1_2_1_2; }

		//"applies" plan=[Plan] ";"
		public Group getGroup_1_2_2() { return cGroup_1_2_2; }

		//"applies"
		public Keyword getAppliesKeyword_1_2_2_0() { return cAppliesKeyword_1_2_2_0; }

		//plan=[Plan]
		public Assignment getPlanAssignment_1_2_2_1() { return cPlanAssignment_1_2_2_1; }

		//[Plan]
		public CrossReference getPlanPlanCrossReference_1_2_2_1_0() { return cPlanPlanCrossReference_1_2_2_1_0; }

		//ID
		public RuleCall getPlanPlanIDTerminalRuleCall_1_2_2_1_0_1() { return cPlanPlanIDTerminalRuleCall_1_2_2_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_2_2_2() { return cSemColonKeyword_1_2_2_2; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_1_3() { return cRGhtCurlyBracketKeyword_1_3; }
	}

	public class AgentStateElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AgentState");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAgentStateKeyword_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 cSemColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//AgentState:
		//	"AgentState" name=ID ";";
		public ParserRule getRule() { return rule; }

		//"AgentState" name=ID ";"
		public Group getGroup() { return cGroup; }

		//"AgentState"
		public Keyword getAgentStateKeyword_0() { return cAgentStateKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//";"
		public Keyword getSemColonKeyword_2() { return cSemColonKeyword_2; }
	}

	public class SemanticWebAgentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SemanticWebAgent");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cSemanticWebAgentKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0_1_0 = (RuleCall)cNameAssignment_0_1.eContents().get(0);
		private final Assignment cDescriptionAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cDescriptionSTRINGTerminalRuleCall_0_2_0 = (RuleCall)cDescriptionAssignment_0_2.eContents().get(0);
		private final Assignment cPropertiesAssignment_0_3 = (Assignment)cGroup_0.eContents().get(3);
		private final RuleCall cPropertiesSTRINGTerminalRuleCall_0_3_0 = (RuleCall)cPropertiesAssignment_0_3.eContents().get(0);
		private final Keyword cSemColonKeyword_0_4 = (Keyword)cGroup_0.eContents().get(4);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cSemanticwebagentAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cSemanticwebagentSemanticWebAgentCrossReference_1_0_0 = (CrossReference)cSemanticwebagentAssignment_1_0.eContents().get(0);
		private final RuleCall cSemanticwebagentSemanticWebAgentIDTerminalRuleCall_1_0_0_1 = (RuleCall)cSemanticwebagentSemanticWebAgentCrossReference_1_0_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cGroup_1.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_1_0 = (Keyword)cGroup_1_1.eContents().get(0);
		private final Keyword cContainsKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1);
		private final Assignment cAgentstateAssignment_1_1_2 = (Assignment)cGroup_1_1.eContents().get(2);
		private final CrossReference cAgentstateAgentStateCrossReference_1_1_2_0 = (CrossReference)cAgentstateAssignment_1_1_2.eContents().get(0);
		private final RuleCall cAgentstateAgentStateIDTerminalRuleCall_1_1_2_0_1 = (RuleCall)cAgentstateAgentStateCrossReference_1_1_2_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_3 = (Keyword)cGroup_1_1.eContents().get(3);
		private final Group cGroup_1_1_4 = (Group)cGroup_1_1.eContents().get(4);
		private final Keyword cIncludesKeyword_1_1_4_0 = (Keyword)cGroup_1_1_4.eContents().get(0);
		private final Assignment cCapAssignment_1_1_4_1 = (Assignment)cGroup_1_1_4.eContents().get(1);
		private final CrossReference cCapCapabilitiesCrossReference_1_1_4_1_0 = (CrossReference)cCapAssignment_1_1_4_1.eContents().get(0);
		private final RuleCall cCapCapabilitiesIDTerminalRuleCall_1_1_4_1_0_1 = (RuleCall)cCapCapabilitiesCrossReference_1_1_4_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_4_2 = (Keyword)cGroup_1_1_4.eContents().get(2);
		private final Keyword cIncludesKeyword_1_1_5 = (Keyword)cGroup_1_1.eContents().get(5);
		private final Assignment cCapAssignment_1_1_6 = (Assignment)cGroup_1_1.eContents().get(6);
		private final CrossReference cCapCapabilitiesCrossReference_1_1_6_0 = (CrossReference)cCapAssignment_1_1_6.eContents().get(0);
		private final RuleCall cCapCapabilitiesIDTerminalRuleCall_1_1_6_0_1 = (RuleCall)cCapCapabilitiesCrossReference_1_1_6_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_7 = (Keyword)cGroup_1_1.eContents().get(7);
		private final Group cGroup_1_1_8 = (Group)cGroup_1_1.eContents().get(8);
		private final Keyword cHasKeyword_1_1_8_0 = (Keyword)cGroup_1_1_8.eContents().get(0);
		private final Assignment cAgenttypeAssignment_1_1_8_1 = (Assignment)cGroup_1_1_8.eContents().get(1);
		private final CrossReference cAgenttypeAgentTypeCrossReference_1_1_8_1_0 = (CrossReference)cAgenttypeAssignment_1_1_8_1.eContents().get(0);
		private final RuleCall cAgenttypeAgentTypeIDTerminalRuleCall_1_1_8_1_0_1 = (RuleCall)cAgenttypeAgentTypeCrossReference_1_1_8_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_8_2 = (Keyword)cGroup_1_1_8.eContents().get(2);
		private final Keyword cPlaysKeyword_1_1_9 = (Keyword)cGroup_1_1.eContents().get(9);
		private final Assignment cRoleAssignment_1_1_10 = (Assignment)cGroup_1_1.eContents().get(10);
		private final CrossReference cRoleRoleCrossReference_1_1_10_0 = (CrossReference)cRoleAssignment_1_1_10.eContents().get(0);
		private final RuleCall cRoleRoleIDTerminalRuleCall_1_1_10_0_1 = (RuleCall)cRoleRoleCrossReference_1_1_10_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_11 = (Keyword)cGroup_1_1.eContents().get(11);
		private final Group cGroup_1_1_12 = (Group)cGroup_1_1.eContents().get(12);
		private final Keyword cPlaysKeyword_1_1_12_0 = (Keyword)cGroup_1_1_12.eContents().get(0);
		private final Assignment cRoleAssignment_1_1_12_1 = (Assignment)cGroup_1_1_12.eContents().get(1);
		private final CrossReference cRoleRoleCrossReference_1_1_12_1_0 = (CrossReference)cRoleAssignment_1_1_12_1.eContents().get(0);
		private final RuleCall cRoleRoleIDTerminalRuleCall_1_1_12_1_0_1 = (RuleCall)cRoleRoleCrossReference_1_1_12_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_1_12_2 = (Keyword)cGroup_1_1_12.eContents().get(2);
		private final Keyword cRGhtCurlyBracketKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		
		//SemanticWebAgent:
		//	"SemanticWebAgent" name=ID description=STRING properties=STRING ";" | semanticwebagent=[SemanticWebAgent] ("{"
		//	"contains" agentstate=[AgentState] ";" ("includes" cap=[Capabilities] ";")* "includes" cap=[Capabilities] ";" ("has"
		//	agenttype=[AgentType] ";")? "plays" role=[Role] ";" ("plays" role=[Role] ";")*) "}";
		public ParserRule getRule() { return rule; }

		//"SemanticWebAgent" name=ID description=STRING properties=STRING ";" | semanticwebagent=[SemanticWebAgent] ("{"
		//"contains" agentstate=[AgentState] ";" ("includes" cap=[Capabilities] ";")* "includes" cap=[Capabilities] ";" ("has"
		//agenttype=[AgentType] ";")? "plays" role=[Role] ";" ("plays" role=[Role] ";")*) "}"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"SemanticWebAgent" name=ID description=STRING properties=STRING ";"
		public Group getGroup_0() { return cGroup_0; }

		//"SemanticWebAgent"
		public Keyword getSemanticWebAgentKeyword_0_0() { return cSemanticWebAgentKeyword_0_0; }

		//name=ID
		public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_1_0() { return cNameIDTerminalRuleCall_0_1_0; }

		//description=STRING
		public Assignment getDescriptionAssignment_0_2() { return cDescriptionAssignment_0_2; }

		//STRING
		public RuleCall getDescriptionSTRINGTerminalRuleCall_0_2_0() { return cDescriptionSTRINGTerminalRuleCall_0_2_0; }

		//properties=STRING
		public Assignment getPropertiesAssignment_0_3() { return cPropertiesAssignment_0_3; }

		//STRING
		public RuleCall getPropertiesSTRINGTerminalRuleCall_0_3_0() { return cPropertiesSTRINGTerminalRuleCall_0_3_0; }

		//";"
		public Keyword getSemColonKeyword_0_4() { return cSemColonKeyword_0_4; }

		//semanticwebagent=[SemanticWebAgent] ("{" "contains" agentstate=[AgentState] ";" ("includes" cap=[Capabilities] ";")*
		//"includes" cap=[Capabilities] ";" ("has" agenttype=[AgentType] ";")? "plays" role=[Role] ";" ("plays" role=[Role]
		//";")*) "}"
		public Group getGroup_1() { return cGroup_1; }

		//semanticwebagent=[SemanticWebAgent]
		public Assignment getSemanticwebagentAssignment_1_0() { return cSemanticwebagentAssignment_1_0; }

		//[SemanticWebAgent]
		public CrossReference getSemanticwebagentSemanticWebAgentCrossReference_1_0_0() { return cSemanticwebagentSemanticWebAgentCrossReference_1_0_0; }

		//ID
		public RuleCall getSemanticwebagentSemanticWebAgentIDTerminalRuleCall_1_0_0_1() { return cSemanticwebagentSemanticWebAgentIDTerminalRuleCall_1_0_0_1; }

		//"{" "contains" agentstate=[AgentState] ";" ("includes" cap=[Capabilities] ";")* "includes" cap=[Capabilities] ";" ("has"
		//agenttype=[AgentType] ";")? "plays" role=[Role] ";" ("plays" role=[Role] ";")*
		public Group getGroup_1_1() { return cGroup_1_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1_0() { return cLeftCurlyBracketKeyword_1_1_0; }

		//"contains"
		public Keyword getContainsKeyword_1_1_1() { return cContainsKeyword_1_1_1; }

		//agentstate=[AgentState]
		public Assignment getAgentstateAssignment_1_1_2() { return cAgentstateAssignment_1_1_2; }

		//[AgentState]
		public CrossReference getAgentstateAgentStateCrossReference_1_1_2_0() { return cAgentstateAgentStateCrossReference_1_1_2_0; }

		//ID
		public RuleCall getAgentstateAgentStateIDTerminalRuleCall_1_1_2_0_1() { return cAgentstateAgentStateIDTerminalRuleCall_1_1_2_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_3() { return cSemColonKeyword_1_1_3; }

		//("includes" cap=[Capabilities] ";")*
		public Group getGroup_1_1_4() { return cGroup_1_1_4; }

		//"includes"
		public Keyword getIncludesKeyword_1_1_4_0() { return cIncludesKeyword_1_1_4_0; }

		//cap=[Capabilities]
		public Assignment getCapAssignment_1_1_4_1() { return cCapAssignment_1_1_4_1; }

		//[Capabilities]
		public CrossReference getCapCapabilitiesCrossReference_1_1_4_1_0() { return cCapCapabilitiesCrossReference_1_1_4_1_0; }

		//ID
		public RuleCall getCapCapabilitiesIDTerminalRuleCall_1_1_4_1_0_1() { return cCapCapabilitiesIDTerminalRuleCall_1_1_4_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_4_2() { return cSemColonKeyword_1_1_4_2; }

		//"includes"
		public Keyword getIncludesKeyword_1_1_5() { return cIncludesKeyword_1_1_5; }

		//cap=[Capabilities]
		public Assignment getCapAssignment_1_1_6() { return cCapAssignment_1_1_6; }

		//[Capabilities]
		public CrossReference getCapCapabilitiesCrossReference_1_1_6_0() { return cCapCapabilitiesCrossReference_1_1_6_0; }

		//ID
		public RuleCall getCapCapabilitiesIDTerminalRuleCall_1_1_6_0_1() { return cCapCapabilitiesIDTerminalRuleCall_1_1_6_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_7() { return cSemColonKeyword_1_1_7; }

		//("has" agenttype=[AgentType] ";")?
		public Group getGroup_1_1_8() { return cGroup_1_1_8; }

		//"has"
		public Keyword getHasKeyword_1_1_8_0() { return cHasKeyword_1_1_8_0; }

		//agenttype=[AgentType]
		public Assignment getAgenttypeAssignment_1_1_8_1() { return cAgenttypeAssignment_1_1_8_1; }

		//[AgentType]
		public CrossReference getAgenttypeAgentTypeCrossReference_1_1_8_1_0() { return cAgenttypeAgentTypeCrossReference_1_1_8_1_0; }

		//ID
		public RuleCall getAgenttypeAgentTypeIDTerminalRuleCall_1_1_8_1_0_1() { return cAgenttypeAgentTypeIDTerminalRuleCall_1_1_8_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_8_2() { return cSemColonKeyword_1_1_8_2; }

		//"plays"
		public Keyword getPlaysKeyword_1_1_9() { return cPlaysKeyword_1_1_9; }

		//role=[Role]
		public Assignment getRoleAssignment_1_1_10() { return cRoleAssignment_1_1_10; }

		//[Role]
		public CrossReference getRoleRoleCrossReference_1_1_10_0() { return cRoleRoleCrossReference_1_1_10_0; }

		//ID
		public RuleCall getRoleRoleIDTerminalRuleCall_1_1_10_0_1() { return cRoleRoleIDTerminalRuleCall_1_1_10_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_11() { return cSemColonKeyword_1_1_11; }

		//("plays" role=[Role] ";")*
		public Group getGroup_1_1_12() { return cGroup_1_1_12; }

		//"plays"
		public Keyword getPlaysKeyword_1_1_12_0() { return cPlaysKeyword_1_1_12_0; }

		//role=[Role]
		public Assignment getRoleAssignment_1_1_12_1() { return cRoleAssignment_1_1_12_1; }

		//[Role]
		public CrossReference getRoleRoleCrossReference_1_1_12_1_0() { return cRoleRoleCrossReference_1_1_12_1_0; }

		//ID
		public RuleCall getRoleRoleIDTerminalRuleCall_1_1_12_1_0_1() { return cRoleRoleIDTerminalRuleCall_1_1_12_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_1_12_2() { return cSemColonKeyword_1_1_12_2; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_1_2() { return cRGhtCurlyBracketKeyword_1_2; }
	}

	public class RoleElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Role");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cRoleKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0_1_0 = (RuleCall)cNameAssignment_0_1.eContents().get(0);
		private final Keyword cSemColonKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cRoleAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cRoleRoleCrossReference_1_0_0 = (CrossReference)cRoleAssignment_1_0.eContents().get(0);
		private final RuleCall cRoleRoleIDTerminalRuleCall_1_0_0_1 = (RuleCall)cRoleRoleCrossReference_1_0_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Keyword cHasKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Assignment cBehAssignment_1_3 = (Assignment)cGroup_1.eContents().get(3);
		private final CrossReference cBehBehaviourCrossReference_1_3_0 = (CrossReference)cBehAssignment_1_3.eContents().get(0);
		private final RuleCall cBehBehaviourIDTerminalRuleCall_1_3_0_1 = (RuleCall)cBehBehaviourCrossReference_1_3_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4);
		private final Group cGroup_1_5 = (Group)cGroup_1.eContents().get(5);
		private final Keyword cHasKeyword_1_5_0 = (Keyword)cGroup_1_5.eContents().get(0);
		private final Assignment cBehAssignment_1_5_1 = (Assignment)cGroup_1_5.eContents().get(1);
		private final CrossReference cBehBehaviourCrossReference_1_5_1_0 = (CrossReference)cBehAssignment_1_5_1.eContents().get(0);
		private final RuleCall cBehBehaviourIDTerminalRuleCall_1_5_1_0_1 = (RuleCall)cBehBehaviourCrossReference_1_5_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_5_2 = (Keyword)cGroup_1_5.eContents().get(2);
		private final Keyword cRGhtCurlyBracketKeyword_1_6 = (Keyword)cGroup_1.eContents().get(6);
		
		//Role:
		//	"Role" name=ID ";" | role=[Role] "{" "has" beh=[Behaviour] ";" ("has" beh=[Behaviour] ";")* "}";
		public ParserRule getRule() { return rule; }

		//"Role" name=ID ";" | role=[Role] "{" "has" beh=[Behaviour] ";" ("has" beh=[Behaviour] ";")* "}"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"Role" name=ID ";"
		public Group getGroup_0() { return cGroup_0; }

		//"Role"
		public Keyword getRoleKeyword_0_0() { return cRoleKeyword_0_0; }

		//name=ID
		public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_1_0() { return cNameIDTerminalRuleCall_0_1_0; }

		//";"
		public Keyword getSemColonKeyword_0_2() { return cSemColonKeyword_0_2; }

		//role=[Role] "{" "has" beh=[Behaviour] ";" ("has" beh=[Behaviour] ";")* "}"
		public Group getGroup_1() { return cGroup_1; }

		//role=[Role]
		public Assignment getRoleAssignment_1_0() { return cRoleAssignment_1_0; }

		//[Role]
		public CrossReference getRoleRoleCrossReference_1_0_0() { return cRoleRoleCrossReference_1_0_0; }

		//ID
		public RuleCall getRoleRoleIDTerminalRuleCall_1_0_0_1() { return cRoleRoleIDTerminalRuleCall_1_0_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1() { return cLeftCurlyBracketKeyword_1_1; }

		//"has"
		public Keyword getHasKeyword_1_2() { return cHasKeyword_1_2; }

		//beh=[Behaviour]
		public Assignment getBehAssignment_1_3() { return cBehAssignment_1_3; }

		//[Behaviour]
		public CrossReference getBehBehaviourCrossReference_1_3_0() { return cBehBehaviourCrossReference_1_3_0; }

		//ID
		public RuleCall getBehBehaviourIDTerminalRuleCall_1_3_0_1() { return cBehBehaviourIDTerminalRuleCall_1_3_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_4() { return cSemColonKeyword_1_4; }

		//("has" beh=[Behaviour] ";")*
		public Group getGroup_1_5() { return cGroup_1_5; }

		//"has"
		public Keyword getHasKeyword_1_5_0() { return cHasKeyword_1_5_0; }

		//beh=[Behaviour]
		public Assignment getBehAssignment_1_5_1() { return cBehAssignment_1_5_1; }

		//[Behaviour]
		public CrossReference getBehBehaviourCrossReference_1_5_1_0() { return cBehBehaviourCrossReference_1_5_1_0; }

		//ID
		public RuleCall getBehBehaviourIDTerminalRuleCall_1_5_1_0_1() { return cBehBehaviourIDTerminalRuleCall_1_5_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_5_2() { return cSemColonKeyword_1_5_2; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_1_6() { return cRGhtCurlyBracketKeyword_1_6; }
	}

	public class PlanElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Plan");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cPlanKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0_1_0 = (RuleCall)cNameAssignment_0_1.eContents().get(0);
		private final Assignment cTypeAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cTypeSTRINGTerminalRuleCall_0_2_0 = (RuleCall)cTypeAssignment_0_2.eContents().get(0);
		private final Assignment cDescriptionAssignment_0_3 = (Assignment)cGroup_0.eContents().get(3);
		private final RuleCall cDescriptionSTRINGTerminalRuleCall_0_3_0 = (RuleCall)cDescriptionAssignment_0_3.eContents().get(0);
		private final Assignment cPriorityAssignment_0_4 = (Assignment)cGroup_0.eContents().get(4);
		private final RuleCall cPriorityINTTerminalRuleCall_0_4_0 = (RuleCall)cPriorityAssignment_0_4.eContents().get(0);
		private final Keyword cSemColonKeyword_0_5 = (Keyword)cGroup_0.eContents().get(5);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cPlanAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cPlanPlanCrossReference_1_0_0 = (CrossReference)cPlanAssignment_1_0.eContents().get(0);
		private final RuleCall cPlanPlanIDTerminalRuleCall_1_0_0_1 = (RuleCall)cPlanPlanCrossReference_1_0_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final Keyword cDispatchesKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0);
		private final Assignment cGoalAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final CrossReference cGoalGoalCrossReference_1_2_1_0 = (CrossReference)cGoalAssignment_1_2_1.eContents().get(0);
		private final RuleCall cGoalGoalIDTerminalRuleCall_1_2_1_0_1 = (RuleCall)cGoalGoalCrossReference_1_2_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_2_2 = (Keyword)cGroup_1_2.eContents().get(2);
		private final Keyword cRGhtCurlyBracketKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		
		//Plan:
		//	"Plan" name=ID type=STRING description=STRING priority=INT ";" | plan=[Plan] "{" ("dispatches" goal=[Goal] ";")* "}";
		public ParserRule getRule() { return rule; }

		//"Plan" name=ID type=STRING description=STRING priority=INT ";" | plan=[Plan] "{" ("dispatches" goal=[Goal] ";")* "}"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"Plan" name=ID type=STRING description=STRING priority=INT ";"
		public Group getGroup_0() { return cGroup_0; }

		//"Plan"
		public Keyword getPlanKeyword_0_0() { return cPlanKeyword_0_0; }

		//name=ID
		public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_1_0() { return cNameIDTerminalRuleCall_0_1_0; }

		//type=STRING
		public Assignment getTypeAssignment_0_2() { return cTypeAssignment_0_2; }

		//STRING
		public RuleCall getTypeSTRINGTerminalRuleCall_0_2_0() { return cTypeSTRINGTerminalRuleCall_0_2_0; }

		//description=STRING
		public Assignment getDescriptionAssignment_0_3() { return cDescriptionAssignment_0_3; }

		//STRING
		public RuleCall getDescriptionSTRINGTerminalRuleCall_0_3_0() { return cDescriptionSTRINGTerminalRuleCall_0_3_0; }

		//priority=INT
		public Assignment getPriorityAssignment_0_4() { return cPriorityAssignment_0_4; }

		//INT
		public RuleCall getPriorityINTTerminalRuleCall_0_4_0() { return cPriorityINTTerminalRuleCall_0_4_0; }

		//";"
		public Keyword getSemColonKeyword_0_5() { return cSemColonKeyword_0_5; }

		//plan=[Plan] "{" ("dispatches" goal=[Goal] ";")* "}"
		public Group getGroup_1() { return cGroup_1; }

		//plan=[Plan]
		public Assignment getPlanAssignment_1_0() { return cPlanAssignment_1_0; }

		//[Plan]
		public CrossReference getPlanPlanCrossReference_1_0_0() { return cPlanPlanCrossReference_1_0_0; }

		//ID
		public RuleCall getPlanPlanIDTerminalRuleCall_1_0_0_1() { return cPlanPlanIDTerminalRuleCall_1_0_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1() { return cLeftCurlyBracketKeyword_1_1; }

		//("dispatches" goal=[Goal] ";")*
		public Group getGroup_1_2() { return cGroup_1_2; }

		//"dispatches"
		public Keyword getDispatchesKeyword_1_2_0() { return cDispatchesKeyword_1_2_0; }

		//goal=[Goal]
		public Assignment getGoalAssignment_1_2_1() { return cGoalAssignment_1_2_1; }

		//[Goal]
		public CrossReference getGoalGoalCrossReference_1_2_1_0() { return cGoalGoalCrossReference_1_2_1_0; }

		//ID
		public RuleCall getGoalGoalIDTerminalRuleCall_1_2_1_0_1() { return cGoalGoalIDTerminalRuleCall_1_2_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_2_2() { return cSemColonKeyword_1_2_2; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_1_3() { return cRGhtCurlyBracketKeyword_1_3; }
	}

	public class AgentTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AgentType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cAgentTypeKeyword_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 cSemColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//AgentType:
		//	"AgentType" name=ID ";";
		public ParserRule getRule() { return rule; }

		//"AgentType" name=ID ";"
		public Group getGroup() { return cGroup; }

		//"AgentType"
		public Keyword getAgentTypeKeyword_0() { return cAgentTypeKeyword_0; }

		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }

		//";"
		public Keyword getSemColonKeyword_2() { return cSemColonKeyword_2; }
	}

	public class BehaviourElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Behaviour");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Keyword cBehaviourKeyword_0_0 = (Keyword)cGroup_0.eContents().get(0);
		private final Assignment cNameAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cNameIDTerminalRuleCall_0_1_0 = (RuleCall)cNameAssignment_0_1.eContents().get(0);
		private final Assignment cResidentAssignment_0_2 = (Assignment)cGroup_0.eContents().get(2);
		private final RuleCall cResidentINTTerminalRuleCall_0_2_0 = (RuleCall)cResidentAssignment_0_2.eContents().get(0);
		private final Keyword cSemColonKeyword_0_3 = (Keyword)cGroup_0.eContents().get(3);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final Assignment cBehAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final CrossReference cBehBehaviourCrossReference_1_0_0 = (CrossReference)cBehAssignment_1_0.eContents().get(0);
		private final RuleCall cBehBehaviourIDTerminalRuleCall_1_0_0_1 = (RuleCall)cBehBehaviourCrossReference_1_0_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Group cGroup_1_2 = (Group)cGroup_1.eContents().get(2);
		private final Keyword cExecutesKeyword_1_2_0 = (Keyword)cGroup_1_2.eContents().get(0);
		private final Assignment cPlanAssignment_1_2_1 = (Assignment)cGroup_1_2.eContents().get(1);
		private final CrossReference cPlanPlanCrossReference_1_2_1_0 = (CrossReference)cPlanAssignment_1_2_1.eContents().get(0);
		private final RuleCall cPlanPlanIDTerminalRuleCall_1_2_1_0_1 = (RuleCall)cPlanPlanCrossReference_1_2_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_2_2 = (Keyword)cGroup_1_2.eContents().get(2);
		private final Keyword cComposed_ofKeyword_1_3 = (Keyword)cGroup_1.eContents().get(3);
		private final Assignment cBehAssignment_1_4 = (Assignment)cGroup_1.eContents().get(4);
		private final CrossReference cBehBehaviourCrossReference_1_4_0 = (CrossReference)cBehAssignment_1_4.eContents().get(0);
		private final RuleCall cBehBehaviourIDTerminalRuleCall_1_4_0_1 = (RuleCall)cBehBehaviourCrossReference_1_4_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_5 = (Keyword)cGroup_1.eContents().get(5);
		private final Group cGroup_1_6 = (Group)cGroup_1.eContents().get(6);
		private final Keyword cComposed_ofKeyword_1_6_0 = (Keyword)cGroup_1_6.eContents().get(0);
		private final Assignment cBehAssignment_1_6_1 = (Assignment)cGroup_1_6.eContents().get(1);
		private final CrossReference cBehBehaviourCrossReference_1_6_1_0 = (CrossReference)cBehAssignment_1_6_1.eContents().get(0);
		private final RuleCall cBehBehaviourIDTerminalRuleCall_1_6_1_0_1 = (RuleCall)cBehBehaviourCrossReference_1_6_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_6_2 = (Keyword)cGroup_1_6.eContents().get(2);
		private final Group cGroup_1_7 = (Group)cGroup_1.eContents().get(7);
		private final Keyword cExecutesKeyword_1_7_0 = (Keyword)cGroup_1_7.eContents().get(0);
		private final Assignment cPlanAssignment_1_7_1 = (Assignment)cGroup_1_7.eContents().get(1);
		private final CrossReference cPlanPlanCrossReference_1_7_1_0 = (CrossReference)cPlanAssignment_1_7_1.eContents().get(0);
		private final RuleCall cPlanPlanIDTerminalRuleCall_1_7_1_0_1 = (RuleCall)cPlanPlanCrossReference_1_7_1_0.eContents().get(1);
		private final Keyword cSemColonKeyword_1_7_2 = (Keyword)cGroup_1_7.eContents().get(2);
		private final Keyword cRGhtCurlyBracketKeyword_1_8 = (Keyword)cGroup_1.eContents().get(8);
		
		//Behaviour:
		//	"Behaviour" name=ID resident=INT ";" | beh=[Behaviour] "{" ("executes" plan=[Plan] ";")* "composed_of" beh=[Behaviour]
		//	";" ("composed_of" beh=[Behaviour] ";")* ("executes" plan=[Plan] ";")* "}";
		public ParserRule getRule() { return rule; }

		//"Behaviour" name=ID resident=INT ";" | beh=[Behaviour] "{" ("executes" plan=[Plan] ";")* "composed_of" beh=[Behaviour]
		//";" ("composed_of" beh=[Behaviour] ";")* ("executes" plan=[Plan] ";")* "}"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"Behaviour" name=ID resident=INT ";"
		public Group getGroup_0() { return cGroup_0; }

		//"Behaviour"
		public Keyword getBehaviourKeyword_0_0() { return cBehaviourKeyword_0_0; }

		//name=ID
		public Assignment getNameAssignment_0_1() { return cNameAssignment_0_1; }

		//ID
		public RuleCall getNameIDTerminalRuleCall_0_1_0() { return cNameIDTerminalRuleCall_0_1_0; }

		//resident=INT
		public Assignment getResidentAssignment_0_2() { return cResidentAssignment_0_2; }

		//INT
		public RuleCall getResidentINTTerminalRuleCall_0_2_0() { return cResidentINTTerminalRuleCall_0_2_0; }

		//";"
		public Keyword getSemColonKeyword_0_3() { return cSemColonKeyword_0_3; }

		//beh=[Behaviour] "{" ("executes" plan=[Plan] ";")* "composed_of" beh=[Behaviour] ";" ("composed_of" beh=[Behaviour] ";")*
		//("executes" plan=[Plan] ";")* "}"
		public Group getGroup_1() { return cGroup_1; }

		//beh=[Behaviour]
		public Assignment getBehAssignment_1_0() { return cBehAssignment_1_0; }

		//[Behaviour]
		public CrossReference getBehBehaviourCrossReference_1_0_0() { return cBehBehaviourCrossReference_1_0_0; }

		//ID
		public RuleCall getBehBehaviourIDTerminalRuleCall_1_0_0_1() { return cBehBehaviourIDTerminalRuleCall_1_0_0_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1_1() { return cLeftCurlyBracketKeyword_1_1; }

		//("executes" plan=[Plan] ";")*
		public Group getGroup_1_2() { return cGroup_1_2; }

		//"executes"
		public Keyword getExecutesKeyword_1_2_0() { return cExecutesKeyword_1_2_0; }

		//plan=[Plan]
		public Assignment getPlanAssignment_1_2_1() { return cPlanAssignment_1_2_1; }

		//[Plan]
		public CrossReference getPlanPlanCrossReference_1_2_1_0() { return cPlanPlanCrossReference_1_2_1_0; }

		//ID
		public RuleCall getPlanPlanIDTerminalRuleCall_1_2_1_0_1() { return cPlanPlanIDTerminalRuleCall_1_2_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_2_2() { return cSemColonKeyword_1_2_2; }

		//"composed_of"
		public Keyword getComposed_ofKeyword_1_3() { return cComposed_ofKeyword_1_3; }

		//beh=[Behaviour]
		public Assignment getBehAssignment_1_4() { return cBehAssignment_1_4; }

		//[Behaviour]
		public CrossReference getBehBehaviourCrossReference_1_4_0() { return cBehBehaviourCrossReference_1_4_0; }

		//ID
		public RuleCall getBehBehaviourIDTerminalRuleCall_1_4_0_1() { return cBehBehaviourIDTerminalRuleCall_1_4_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_5() { return cSemColonKeyword_1_5; }

		//("composed_of" beh=[Behaviour] ";")*
		public Group getGroup_1_6() { return cGroup_1_6; }

		//"composed_of"
		public Keyword getComposed_ofKeyword_1_6_0() { return cComposed_ofKeyword_1_6_0; }

		//beh=[Behaviour]
		public Assignment getBehAssignment_1_6_1() { return cBehAssignment_1_6_1; }

		//[Behaviour]
		public CrossReference getBehBehaviourCrossReference_1_6_1_0() { return cBehBehaviourCrossReference_1_6_1_0; }

		//ID
		public RuleCall getBehBehaviourIDTerminalRuleCall_1_6_1_0_1() { return cBehBehaviourIDTerminalRuleCall_1_6_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_6_2() { return cSemColonKeyword_1_6_2; }

		//("executes" plan=[Plan] ";")*
		public Group getGroup_1_7() { return cGroup_1_7; }

		//"executes"
		public Keyword getExecutesKeyword_1_7_0() { return cExecutesKeyword_1_7_0; }

		//plan=[Plan]
		public Assignment getPlanAssignment_1_7_1() { return cPlanAssignment_1_7_1; }

		//[Plan]
		public CrossReference getPlanPlanCrossReference_1_7_1_0() { return cPlanPlanCrossReference_1_7_1_0; }

		//ID
		public RuleCall getPlanPlanIDTerminalRuleCall_1_7_1_0_1() { return cPlanPlanIDTerminalRuleCall_1_7_1_0_1; }

		//";"
		public Keyword getSemColonKeyword_1_7_2() { return cSemColonKeyword_1_7_2; }

		//"}"
		public Keyword getRGhtCurlyBracketKeyword_1_8() { return cRGhtCurlyBracketKeyword_1_8; }
	}
	
	
	private AgentInternalViewpointElements pAgentInternalViewpoint;
	private BeliefElements pBelief;
	private GoalElements pGoal;
	private CapabilitiesElements pCapabilities;
	private AgentStateElements pAgentState;
	private SemanticWebAgentElements pSemanticWebAgent;
	private RoleElements pRole;
	private PlanElements pPlan;
	private AgentTypeElements pAgentType;
	private BehaviourElements pBehaviour;
	
	private final GrammarProvider grammarProvider;

	private TerminalsGrammarAccess gaTerminals;

	@Inject
	public MyDslGrammarAccess(GrammarProvider grammarProvider,
		TerminalsGrammarAccess gaTerminals) {
		this.grammarProvider = grammarProvider;
		this.gaTerminals = gaTerminals;
	}
	
	public Grammar getGrammar() {	
		return grammarProvider.getGrammar(this);
	}
	

	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
		return gaTerminals;
	}

	
	//AgentInternalViewpoint:
	//	"AgentInternalViewPoint" "{" (semanticwebagent+=SemanticWebAgent capabilities+=Capabilities |
	//	capabilities+=Capabilities semanticwebagent+=SemanticWebAgent) (belief+=Belief | goal+=Goal |
	//	capabilities+=Capabilities | agentstate+=AgentState | semanticwebagent+=SemanticWebAgent | role+=Role | plan+=Plan |
	//	agenttype+=AgentType | behaviour+=Behaviour)* "}";
	public AgentInternalViewpointElements getAgentInternalViewpointAccess() {
		return (pAgentInternalViewpoint != null) ? pAgentInternalViewpoint : (pAgentInternalViewpoint = new AgentInternalViewpointElements());
	}
	
	public ParserRule getAgentInternalViewpointRule() {
		return getAgentInternalViewpointAccess().getRule();
	}

	//Belief:
	//	"Belief" name=ID description=STRING dynamic=INT ";";
	public BeliefElements getBeliefAccess() {
		return (pBelief != null) ? pBelief : (pBelief = new BeliefElements());
	}
	
	public ParserRule getBeliefRule() {
		return getBeliefAccess().getRule();
	}

	//Goal:
	//	"Goal" name=ID description=STRING recur=INT ";";
	public GoalElements getGoalAccess() {
		return (pGoal != null) ? pGoal : (pGoal = new GoalElements());
	}
	
	public ParserRule getGoalRule() {
		return getGoalAccess().getRule();
	}

	//Capabilities:
	//	"Capabilities" name=ID description=STRING ";" | cap=[Capabilities] "{" ("includes" belief=[Belief] ";" | "uses"
	//	goal=[Goal] ";" | "applies" plan=[Plan] ";")* "}";
	public CapabilitiesElements getCapabilitiesAccess() {
		return (pCapabilities != null) ? pCapabilities : (pCapabilities = new CapabilitiesElements());
	}
	
	public ParserRule getCapabilitiesRule() {
		return getCapabilitiesAccess().getRule();
	}

	//AgentState:
	//	"AgentState" name=ID ";";
	public AgentStateElements getAgentStateAccess() {
		return (pAgentState != null) ? pAgentState : (pAgentState = new AgentStateElements());
	}
	
	public ParserRule getAgentStateRule() {
		return getAgentStateAccess().getRule();
	}

	//SemanticWebAgent:
	//	"SemanticWebAgent" name=ID description=STRING properties=STRING ";" | semanticwebagent=[SemanticWebAgent] ("{"
	//	"contains" agentstate=[AgentState] ";" ("includes" cap=[Capabilities] ";")* "includes" cap=[Capabilities] ";" ("has"
	//	agenttype=[AgentType] ";")? "plays" role=[Role] ";" ("plays" role=[Role] ";")*) "}";
	public SemanticWebAgentElements getSemanticWebAgentAccess() {
		return (pSemanticWebAgent != null) ? pSemanticWebAgent : (pSemanticWebAgent = new SemanticWebAgentElements());
	}
	
	public ParserRule getSemanticWebAgentRule() {
		return getSemanticWebAgentAccess().getRule();
	}

	//Role:
	//	"Role" name=ID ";" | role=[Role] "{" "has" beh=[Behaviour] ";" ("has" beh=[Behaviour] ";")* "}";
	public RoleElements getRoleAccess() {
		return (pRole != null) ? pRole : (pRole = new RoleElements());
	}
	
	public ParserRule getRoleRule() {
		return getRoleAccess().getRule();
	}

	//Plan:
	//	"Plan" name=ID type=STRING description=STRING priority=INT ";" | plan=[Plan] "{" ("dispatches" goal=[Goal] ";")* "}";
	public PlanElements getPlanAccess() {
		return (pPlan != null) ? pPlan : (pPlan = new PlanElements());
	}
	
	public ParserRule getPlanRule() {
		return getPlanAccess().getRule();
	}

	//AgentType:
	//	"AgentType" name=ID ";";
	public AgentTypeElements getAgentTypeAccess() {
		return (pAgentType != null) ? pAgentType : (pAgentType = new AgentTypeElements());
	}
	
	public ParserRule getAgentTypeRule() {
		return getAgentTypeAccess().getRule();
	}

	//Behaviour:
	//	"Behaviour" name=ID resident=INT ";" | beh=[Behaviour] "{" ("executes" plan=[Plan] ";")* "composed_of" beh=[Behaviour]
	//	";" ("composed_of" beh=[Behaviour] ";")* ("executes" plan=[Plan] ";")* "}";
	public BehaviourElements getBehaviourAccess() {
		return (pBehaviour != null) ? pBehaviour : (pBehaviour = new BehaviourElements());
	}
	
	public ParserRule getBehaviourRule() {
		return getBehaviourAccess().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" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" | "n" |
	//	"f" | "r" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
	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();
	} 
}
