/*
 * generated by Xtext 2.18.0.M3
 */
package co.edu.uniandes.accordant_dv.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.UnorderedGroup;
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 AdvlGrammarAccess extends AbstractGrammarElementFinder {
	
	public class DeploymentViewElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.DeploymentView");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDeploymentViewKeyword_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 cUseKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Keyword cProjectKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cProjectAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final CrossReference cProjectProjectCrossReference_4_0 = (CrossReference)cProjectAssignment_4.eContents().get(0);
		private final RuleCall cProjectProjectIDTerminalRuleCall_4_0_1 = (RuleCall)cProjectProjectCrossReference_4_0.eContents().get(1);
		private final Keyword cUseKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Keyword cFunctionalViewKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cFvAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final CrossReference cFvFunctionalViewCrossReference_7_0 = (CrossReference)cFvAssignment_7.eContents().get(0);
		private final RuleCall cFvFunctionalViewIDTerminalRuleCall_7_0_1 = (RuleCall)cFvFunctionalViewCrossReference_7_0.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
		private final Keyword cArtifactsKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Keyword cLeftCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Assignment cArtifactsAssignment_11 = (Assignment)cGroup.eContents().get(11);
		private final RuleCall cArtifactsArtifactParserRuleCall_11_0 = (RuleCall)cArtifactsAssignment_11.eContents().get(0);
		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
		private final Keyword cCommaKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
		private final Assignment cArtifactsAssignment_12_1 = (Assignment)cGroup_12.eContents().get(1);
		private final RuleCall cArtifactsArtifactParserRuleCall_12_1_0 = (RuleCall)cArtifactsAssignment_12_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
		private final Keyword cDevsKeyword_14 = (Keyword)cGroup.eContents().get(14);
		private final Keyword cLeftCurlyBracketKeyword_15 = (Keyword)cGroup.eContents().get(15);
		private final Assignment cDevsAssignment_16 = (Assignment)cGroup.eContents().get(16);
		private final RuleCall cDevsDeviceParserRuleCall_16_0 = (RuleCall)cDevsAssignment_16.eContents().get(0);
		private final Group cGroup_17 = (Group)cGroup.eContents().get(17);
		private final Keyword cCommaKeyword_17_0 = (Keyword)cGroup_17.eContents().get(0);
		private final Assignment cDevsAssignment_17_1 = (Assignment)cGroup_17.eContents().get(1);
		private final RuleCall cDevsDeviceParserRuleCall_17_1_0 = (RuleCall)cDevsAssignment_17_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_18 = (Keyword)cGroup.eContents().get(18);
		private final Keyword cDeploymentsKeyword_19 = (Keyword)cGroup.eContents().get(19);
		private final Keyword cLeftCurlyBracketKeyword_20 = (Keyword)cGroup.eContents().get(20);
		private final Assignment cDeploymentsAssignment_21 = (Assignment)cGroup.eContents().get(21);
		private final RuleCall cDeploymentsDeploymentParserRuleCall_21_0 = (RuleCall)cDeploymentsAssignment_21.eContents().get(0);
		private final Group cGroup_22 = (Group)cGroup.eContents().get(22);
		private final Keyword cCommaKeyword_22_0 = (Keyword)cGroup_22.eContents().get(0);
		private final Assignment cDeploymentsAssignment_22_1 = (Assignment)cGroup_22.eContents().get(1);
		private final RuleCall cDeploymentsDeploymentParserRuleCall_22_1_0 = (RuleCall)cDeploymentsAssignment_22_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_23 = (Keyword)cGroup.eContents().get(23);
		private final Group cGroup_24 = (Group)cGroup.eContents().get(24);
		private final Keyword cServicesKeyword_24_0 = (Keyword)cGroup_24.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_24_1 = (Keyword)cGroup_24.eContents().get(1);
		private final Assignment cServicesAssignment_24_2 = (Assignment)cGroup_24.eContents().get(2);
		private final RuleCall cServicesServiceParserRuleCall_24_2_0 = (RuleCall)cServicesAssignment_24_2.eContents().get(0);
		private final Group cGroup_24_3 = (Group)cGroup_24.eContents().get(3);
		private final Keyword cCommaKeyword_24_3_0 = (Keyword)cGroup_24_3.eContents().get(0);
		private final Assignment cServicesAssignment_24_3_1 = (Assignment)cGroup_24_3.eContents().get(1);
		private final RuleCall cServicesServiceParserRuleCall_24_3_1_0 = (RuleCall)cServicesAssignment_24_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_24_4 = (Keyword)cGroup_24.eContents().get(4);
		private final Group cGroup_25 = (Group)cGroup.eContents().get(25);
		private final Keyword cServerlessKeyword_25_0 = (Keyword)cGroup_25.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_25_1 = (Keyword)cGroup_25.eContents().get(1);
		private final Assignment cServerlessAssignment_25_2 = (Assignment)cGroup_25.eContents().get(2);
		private final RuleCall cServerlessServerlessEnvParserRuleCall_25_2_0 = (RuleCall)cServerlessAssignment_25_2.eContents().get(0);
		private final Group cGroup_25_3 = (Group)cGroup_25.eContents().get(3);
		private final Keyword cCommaKeyword_25_3_0 = (Keyword)cGroup_25_3.eContents().get(0);
		private final Assignment cServerlessAssignment_25_3_1 = (Assignment)cGroup_25_3.eContents().get(1);
		private final RuleCall cServerlessServerlessEnvParserRuleCall_25_3_1_0 = (RuleCall)cServerlessAssignment_25_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_25_4 = (Keyword)cGroup_25.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_26 = (Keyword)cGroup.eContents().get(26);
		
		////import "http://www.example.org/bdarchops_fv" as bdarchops_fv
		////import "http://uniandes.accordant.functional" as fv
		//DeploymentView:
		//	'DeploymentView'
		//	name=ID
		//	'use' 'project' project=[rq::Project]
		//	'use' 'functionalView' fv=[fv::FunctionalView]
		//	'{'
		//	'artifacts' '{' artifacts+=Artifact (',' artifacts+=Artifact)* '}'
		//	'devs' '{' devs+=Device (',' devs+=Device)* '}'
		//	'deployments' '{' deployments+=Deployment (',' deployments+=Deployment)* '}' ('services' '{' services+=Service (','
		//	services+=Service)* '}')? ('serverless' '{' serverless+=ServerlessEnv ("," serverless+=ServerlessEnv)* '}')?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'DeploymentView' name=ID 'use' 'project' project=[rq::Project] 'use' 'functionalView' fv=[fv::FunctionalView] '{'
		//'artifacts' '{' artifacts+=Artifact (',' artifacts+=Artifact)* '}' 'devs' '{' devs+=Device (',' devs+=Device)* '}'
		//'deployments' '{' deployments+=Deployment (',' deployments+=Deployment)* '}' ('services' '{' services+=Service (','
		//services+=Service)* '}')? ('serverless' '{' serverless+=ServerlessEnv ("," serverless+=ServerlessEnv)* '}')? '}'
		public Group getGroup() { return cGroup; }
		
		//'DeploymentView'
		public Keyword getDeploymentViewKeyword_0() { return cDeploymentViewKeyword_0; }
		
		//name=ID
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
		
		//ID
		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
		
		//'use'
		public Keyword getUseKeyword_2() { return cUseKeyword_2; }
		
		//'project'
		public Keyword getProjectKeyword_3() { return cProjectKeyword_3; }
		
		//project=[rq::Project]
		public Assignment getProjectAssignment_4() { return cProjectAssignment_4; }
		
		//[rq::Project]
		public CrossReference getProjectProjectCrossReference_4_0() { return cProjectProjectCrossReference_4_0; }
		
		//ID
		public RuleCall getProjectProjectIDTerminalRuleCall_4_0_1() { return cProjectProjectIDTerminalRuleCall_4_0_1; }
		
		//'use'
		public Keyword getUseKeyword_5() { return cUseKeyword_5; }
		
		//'functionalView'
		public Keyword getFunctionalViewKeyword_6() { return cFunctionalViewKeyword_6; }
		
		//fv=[fv::FunctionalView]
		public Assignment getFvAssignment_7() { return cFvAssignment_7; }
		
		//[fv::FunctionalView]
		public CrossReference getFvFunctionalViewCrossReference_7_0() { return cFvFunctionalViewCrossReference_7_0; }
		
		//ID
		public RuleCall getFvFunctionalViewIDTerminalRuleCall_7_0_1() { return cFvFunctionalViewIDTerminalRuleCall_7_0_1; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_8() { return cLeftCurlyBracketKeyword_8; }
		
		//'artifacts'
		public Keyword getArtifactsKeyword_9() { return cArtifactsKeyword_9; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_10() { return cLeftCurlyBracketKeyword_10; }
		
		//artifacts+=Artifact
		public Assignment getArtifactsAssignment_11() { return cArtifactsAssignment_11; }
		
		//Artifact
		public RuleCall getArtifactsArtifactParserRuleCall_11_0() { return cArtifactsArtifactParserRuleCall_11_0; }
		
		//(',' artifacts+=Artifact)*
		public Group getGroup_12() { return cGroup_12; }
		
		//','
		public Keyword getCommaKeyword_12_0() { return cCommaKeyword_12_0; }
		
		//artifacts+=Artifact
		public Assignment getArtifactsAssignment_12_1() { return cArtifactsAssignment_12_1; }
		
		//Artifact
		public RuleCall getArtifactsArtifactParserRuleCall_12_1_0() { return cArtifactsArtifactParserRuleCall_12_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
		
		//'devs'
		public Keyword getDevsKeyword_14() { return cDevsKeyword_14; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_15() { return cLeftCurlyBracketKeyword_15; }
		
		//devs+=Device
		public Assignment getDevsAssignment_16() { return cDevsAssignment_16; }
		
		//Device
		public RuleCall getDevsDeviceParserRuleCall_16_0() { return cDevsDeviceParserRuleCall_16_0; }
		
		//(',' devs+=Device)*
		public Group getGroup_17() { return cGroup_17; }
		
		//','
		public Keyword getCommaKeyword_17_0() { return cCommaKeyword_17_0; }
		
		//devs+=Device
		public Assignment getDevsAssignment_17_1() { return cDevsAssignment_17_1; }
		
		//Device
		public RuleCall getDevsDeviceParserRuleCall_17_1_0() { return cDevsDeviceParserRuleCall_17_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_18() { return cRightCurlyBracketKeyword_18; }
		
		//'deployments'
		public Keyword getDeploymentsKeyword_19() { return cDeploymentsKeyword_19; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_20() { return cLeftCurlyBracketKeyword_20; }
		
		//deployments+=Deployment
		public Assignment getDeploymentsAssignment_21() { return cDeploymentsAssignment_21; }
		
		//Deployment
		public RuleCall getDeploymentsDeploymentParserRuleCall_21_0() { return cDeploymentsDeploymentParserRuleCall_21_0; }
		
		//(',' deployments+=Deployment)*
		public Group getGroup_22() { return cGroup_22; }
		
		//','
		public Keyword getCommaKeyword_22_0() { return cCommaKeyword_22_0; }
		
		//deployments+=Deployment
		public Assignment getDeploymentsAssignment_22_1() { return cDeploymentsAssignment_22_1; }
		
		//Deployment
		public RuleCall getDeploymentsDeploymentParserRuleCall_22_1_0() { return cDeploymentsDeploymentParserRuleCall_22_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_23() { return cRightCurlyBracketKeyword_23; }
		
		//('services' '{' services+=Service (',' services+=Service)* '}')?
		public Group getGroup_24() { return cGroup_24; }
		
		//'services'
		public Keyword getServicesKeyword_24_0() { return cServicesKeyword_24_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_24_1() { return cLeftCurlyBracketKeyword_24_1; }
		
		//services+=Service
		public Assignment getServicesAssignment_24_2() { return cServicesAssignment_24_2; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_24_2_0() { return cServicesServiceParserRuleCall_24_2_0; }
		
		//(',' services+=Service)*
		public Group getGroup_24_3() { return cGroup_24_3; }
		
		//','
		public Keyword getCommaKeyword_24_3_0() { return cCommaKeyword_24_3_0; }
		
		//services+=Service
		public Assignment getServicesAssignment_24_3_1() { return cServicesAssignment_24_3_1; }
		
		//Service
		public RuleCall getServicesServiceParserRuleCall_24_3_1_0() { return cServicesServiceParserRuleCall_24_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_24_4() { return cRightCurlyBracketKeyword_24_4; }
		
		//('serverless' '{' serverless+=ServerlessEnv ("," serverless+=ServerlessEnv)* '}')?
		public Group getGroup_25() { return cGroup_25; }
		
		//'serverless'
		public Keyword getServerlessKeyword_25_0() { return cServerlessKeyword_25_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_25_1() { return cLeftCurlyBracketKeyword_25_1; }
		
		//serverless+=ServerlessEnv
		public Assignment getServerlessAssignment_25_2() { return cServerlessAssignment_25_2; }
		
		//ServerlessEnv
		public RuleCall getServerlessServerlessEnvParserRuleCall_25_2_0() { return cServerlessServerlessEnvParserRuleCall_25_2_0; }
		
		//("," serverless+=ServerlessEnv)*
		public Group getGroup_25_3() { return cGroup_25_3; }
		
		//","
		public Keyword getCommaKeyword_25_3_0() { return cCommaKeyword_25_3_0; }
		
		//serverless+=ServerlessEnv
		public Assignment getServerlessAssignment_25_3_1() { return cServerlessAssignment_25_3_1; }
		
		//ServerlessEnv
		public RuleCall getServerlessServerlessEnvParserRuleCall_25_3_1_0() { return cServerlessServerlessEnvParserRuleCall_25_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_25_4() { return cRightCurlyBracketKeyword_25_4; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_26() { return cRightCurlyBracketKeyword_26; }
	}
	public class EStringElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.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);
		
		////FQN:
		////    ID ("." ID)*;
		//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 DeviceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.Device");
		private final UnorderedGroup cUnorderedGroup = (UnorderedGroup)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cUnorderedGroup.eContents().get(0);
		private final Keyword cDeviceKeyword_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 cLeftCurlyBracketKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final Group cGroup_0_3 = (Group)cGroup_0.eContents().get(3);
		private final Keyword cHostKeyword_0_3_0 = (Keyword)cGroup_0_3.eContents().get(0);
		private final Keyword cColonKeyword_0_3_1 = (Keyword)cGroup_0_3.eContents().get(1);
		private final Assignment cHostAssignment_0_3_2 = (Assignment)cGroup_0_3.eContents().get(2);
		private final RuleCall cHostEStringParserRuleCall_0_3_2_0 = (RuleCall)cHostAssignment_0_3_2.eContents().get(0);
		private final Group cGroup_1 = (Group)cUnorderedGroup.eContents().get(1);
		private final Keyword cTypeKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Keyword cColonKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cTypeAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cTypeTypeDeviceEnumRuleCall_1_2_0 = (RuleCall)cTypeAssignment_1_2.eContents().get(0);
		private final Group cGroup_2 = (Group)cUnorderedGroup.eContents().get(2);
		private final Keyword cCpuKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cColonKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cCpuAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final RuleCall cCpuEIntParserRuleCall_2_2_0 = (RuleCall)cCpuAssignment_2_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cUnorderedGroup.eContents().get(3);
		private final Keyword cStorageKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cStorageAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cStorageEIntParserRuleCall_3_2_0 = (RuleCall)cStorageAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cUnorderedGroup.eContents().get(4);
		private final Group cGroup_4_0 = (Group)cGroup_4.eContents().get(0);
		private final Keyword cMemoryKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
		private final Keyword cColonKeyword_4_0_1 = (Keyword)cGroup_4_0.eContents().get(1);
		private final Assignment cMemAssignment_4_0_2 = (Assignment)cGroup_4_0.eContents().get(2);
		private final RuleCall cMemEIntParserRuleCall_4_0_2_0 = (RuleCall)cMemAssignment_4_0_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		
		//Device:
		//	'Device' name=ID
		//	'{' ('host' ':' host=EString)? & ('type' ':' type=TypeDevice)? & ('cpu' ':' cpu=EInt)? & ('storage' ':' storage=EInt)?
		//	& ('memory' ':' mem=EInt)?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Device' name=ID '{' ('host' ':' host=EString)? & ('type' ':' type=TypeDevice)? & ('cpu' ':' cpu=EInt)? & ('storage' ':'
		//storage=EInt)? & ('memory' ':' mem=EInt)? '}'
		public UnorderedGroup getUnorderedGroup() { return cUnorderedGroup; }
		
		//'Device' name=ID '{' ('host' ':' host=EString)?
		public Group getGroup_0() { return cGroup_0; }
		
		//'Device'
		public Keyword getDeviceKeyword_0_0() { return cDeviceKeyword_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 getLeftCurlyBracketKeyword_0_2() { return cLeftCurlyBracketKeyword_0_2; }
		
		//('host' ':' host=EString)?
		public Group getGroup_0_3() { return cGroup_0_3; }
		
		//'host'
		public Keyword getHostKeyword_0_3_0() { return cHostKeyword_0_3_0; }
		
		//':'
		public Keyword getColonKeyword_0_3_1() { return cColonKeyword_0_3_1; }
		
		//host=EString
		public Assignment getHostAssignment_0_3_2() { return cHostAssignment_0_3_2; }
		
		//EString
		public RuleCall getHostEStringParserRuleCall_0_3_2_0() { return cHostEStringParserRuleCall_0_3_2_0; }
		
		//('type' ':' type=TypeDevice)?
		public Group getGroup_1() { return cGroup_1; }
		
		//'type'
		public Keyword getTypeKeyword_1_0() { return cTypeKeyword_1_0; }
		
		//':'
		public Keyword getColonKeyword_1_1() { return cColonKeyword_1_1; }
		
		//type=TypeDevice
		public Assignment getTypeAssignment_1_2() { return cTypeAssignment_1_2; }
		
		//TypeDevice
		public RuleCall getTypeTypeDeviceEnumRuleCall_1_2_0() { return cTypeTypeDeviceEnumRuleCall_1_2_0; }
		
		//('cpu' ':' cpu=EInt)?
		public Group getGroup_2() { return cGroup_2; }
		
		//'cpu'
		public Keyword getCpuKeyword_2_0() { return cCpuKeyword_2_0; }
		
		//':'
		public Keyword getColonKeyword_2_1() { return cColonKeyword_2_1; }
		
		//cpu=EInt
		public Assignment getCpuAssignment_2_2() { return cCpuAssignment_2_2; }
		
		//EInt
		public RuleCall getCpuEIntParserRuleCall_2_2_0() { return cCpuEIntParserRuleCall_2_2_0; }
		
		//('storage' ':' storage=EInt)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'storage'
		public Keyword getStorageKeyword_3_0() { return cStorageKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//storage=EInt
		public Assignment getStorageAssignment_3_2() { return cStorageAssignment_3_2; }
		
		//EInt
		public RuleCall getStorageEIntParserRuleCall_3_2_0() { return cStorageEIntParserRuleCall_3_2_0; }
		
		//('memory' ':' mem=EInt)? '}'
		public Group getGroup_4() { return cGroup_4; }
		
		//('memory' ':' mem=EInt)?
		public Group getGroup_4_0() { return cGroup_4_0; }
		
		//'memory'
		public Keyword getMemoryKeyword_4_0_0() { return cMemoryKeyword_4_0_0; }
		
		//':'
		public Keyword getColonKeyword_4_0_1() { return cColonKeyword_4_0_1; }
		
		//mem=EInt
		public Assignment getMemAssignment_4_0_2() { return cMemAssignment_4_0_2; }
		
		//EInt
		public RuleCall getMemEIntParserRuleCall_4_0_2_0() { return cMemEIntParserRuleCall_4_0_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_1() { return cRightCurlyBracketKeyword_4_1; }
	}
	public class DeploymentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.Deployment");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cDeploymentKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cReplicasKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cReplicasAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cReplicasEIntParserRuleCall_3_2_0 = (RuleCall)cReplicasAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cMaxSurgeKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cMaxSurgeAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cMaxSurgeEIntParserRuleCall_4_2_0 = (RuleCall)cMaxSurgeAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cMaxUnavailableKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cMaxUnavailAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cMaxUnavailEIntParserRuleCall_5_2_0 = (RuleCall)cMaxUnavailAssignment_5_2.eContents().get(0);
		private final Keyword cPodsKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cPodsAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cPodsPodParserRuleCall_8_0 = (RuleCall)cPodsAssignment_8.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cCommaKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cPodsAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cPodsPodParserRuleCall_9_1_0 = (RuleCall)cPodsAssignment_9_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cDecisionKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Keyword cColonKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
		private final Assignment cDecisionAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_11_2_0 = (CrossReference)cDecisionAssignment_11_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_11_2_0.eContents().get(1);
		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		
		//Deployment:
		//	'Deployment' name=ID
		//	'{' ('replicas' ':' replicas=EInt)? ('maxSurge' ':' maxSurge=EInt)? ('maxUnavailable' ':' maxUnavail=EInt)?
		//	'pods' '{' pods+=Pod (',' pods+=Pod)* '}' ('decision' ':' decision=[rq::ArchDecision])?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Deployment' name=ID '{' ('replicas' ':' replicas=EInt)? ('maxSurge' ':' maxSurge=EInt)? ('maxUnavailable' ':'
		//maxUnavail=EInt)? 'pods' '{' pods+=Pod (',' pods+=Pod)* '}' ('decision' ':' decision=[rq::ArchDecision])? '}'
		public Group getGroup() { return cGroup; }
		
		//'Deployment'
		public Keyword getDeploymentKeyword_0() { return cDeploymentKeyword_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; }
		
		//('replicas' ':' replicas=EInt)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'replicas'
		public Keyword getReplicasKeyword_3_0() { return cReplicasKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//replicas=EInt
		public Assignment getReplicasAssignment_3_2() { return cReplicasAssignment_3_2; }
		
		//EInt
		public RuleCall getReplicasEIntParserRuleCall_3_2_0() { return cReplicasEIntParserRuleCall_3_2_0; }
		
		//('maxSurge' ':' maxSurge=EInt)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'maxSurge'
		public Keyword getMaxSurgeKeyword_4_0() { return cMaxSurgeKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//maxSurge=EInt
		public Assignment getMaxSurgeAssignment_4_2() { return cMaxSurgeAssignment_4_2; }
		
		//EInt
		public RuleCall getMaxSurgeEIntParserRuleCall_4_2_0() { return cMaxSurgeEIntParserRuleCall_4_2_0; }
		
		//('maxUnavailable' ':' maxUnavail=EInt)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'maxUnavailable'
		public Keyword getMaxUnavailableKeyword_5_0() { return cMaxUnavailableKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//maxUnavail=EInt
		public Assignment getMaxUnavailAssignment_5_2() { return cMaxUnavailAssignment_5_2; }
		
		//EInt
		public RuleCall getMaxUnavailEIntParserRuleCall_5_2_0() { return cMaxUnavailEIntParserRuleCall_5_2_0; }
		
		//'pods'
		public Keyword getPodsKeyword_6() { return cPodsKeyword_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
		
		//pods+=Pod
		public Assignment getPodsAssignment_8() { return cPodsAssignment_8; }
		
		//Pod
		public RuleCall getPodsPodParserRuleCall_8_0() { return cPodsPodParserRuleCall_8_0; }
		
		//(',' pods+=Pod)*
		public Group getGroup_9() { return cGroup_9; }
		
		//','
		public Keyword getCommaKeyword_9_0() { return cCommaKeyword_9_0; }
		
		//pods+=Pod
		public Assignment getPodsAssignment_9_1() { return cPodsAssignment_9_1; }
		
		//Pod
		public RuleCall getPodsPodParserRuleCall_9_1_0() { return cPodsPodParserRuleCall_9_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_11() { return cGroup_11; }
		
		//'decision'
		public Keyword getDecisionKeyword_11_0() { return cDecisionKeyword_11_0; }
		
		//':'
		public Keyword getColonKeyword_11_1() { return cColonKeyword_11_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_11_2() { return cDecisionAssignment_11_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_11_2_0() { return cDecisionArchDecisionCrossReference_11_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_11_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_11_2_0_1; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
	}
	public class PodElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.Pod");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPodKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cHostKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cHostAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cHostEStringParserRuleCall_3_2_0 = (RuleCall)cHostAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cDeviceKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cNodeAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final CrossReference cNodeDeviceCrossReference_4_2_0 = (CrossReference)cNodeAssignment_4_2.eContents().get(0);
		private final RuleCall cNodeDeviceIDTerminalRuleCall_4_2_0_1 = (RuleCall)cNodeDeviceCrossReference_4_2_0.eContents().get(1);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cRestartPolicyKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cRestartPolicyAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cRestartPolicyEStringParserRuleCall_5_2_0 = (RuleCall)cRestartPolicyAssignment_5_2.eContents().get(0);
		private final Keyword cEnvsKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		private final Assignment cEnvsAssignment_8 = (Assignment)cGroup.eContents().get(8);
		private final RuleCall cEnvsExecEnvironmentParserRuleCall_8_0 = (RuleCall)cEnvsAssignment_8.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cCommaKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Assignment cEnvsAssignment_9_1 = (Assignment)cGroup_9.eContents().get(1);
		private final RuleCall cEnvsExecEnvironmentParserRuleCall_9_1_0 = (RuleCall)cEnvsAssignment_9_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		private final Keyword cRightCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
		
		//Pod:
		//	'Pod' name=ID
		//	'{' ('host' ':' host=EString)? ('device' ':' node=[Device])? ('restartPolicy' ':' restartPolicy=EString)?
		//	'envs' '{' envs+=ExecEnvironment (',' envs+=ExecEnvironment)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Pod' name=ID '{' ('host' ':' host=EString)? ('device' ':' node=[Device])? ('restartPolicy' ':' restartPolicy=EString)?
		//'envs' '{' envs+=ExecEnvironment (',' envs+=ExecEnvironment)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Pod'
		public Keyword getPodKeyword_0() { return cPodKeyword_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; }
		
		//('host' ':' host=EString)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'host'
		public Keyword getHostKeyword_3_0() { return cHostKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//host=EString
		public Assignment getHostAssignment_3_2() { return cHostAssignment_3_2; }
		
		//EString
		public RuleCall getHostEStringParserRuleCall_3_2_0() { return cHostEStringParserRuleCall_3_2_0; }
		
		//('device' ':' node=[Device])?
		public Group getGroup_4() { return cGroup_4; }
		
		//'device'
		public Keyword getDeviceKeyword_4_0() { return cDeviceKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//node=[Device]
		public Assignment getNodeAssignment_4_2() { return cNodeAssignment_4_2; }
		
		//[Device]
		public CrossReference getNodeDeviceCrossReference_4_2_0() { return cNodeDeviceCrossReference_4_2_0; }
		
		//ID
		public RuleCall getNodeDeviceIDTerminalRuleCall_4_2_0_1() { return cNodeDeviceIDTerminalRuleCall_4_2_0_1; }
		
		//('restartPolicy' ':' restartPolicy=EString)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'restartPolicy'
		public Keyword getRestartPolicyKeyword_5_0() { return cRestartPolicyKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//restartPolicy=EString
		public Assignment getRestartPolicyAssignment_5_2() { return cRestartPolicyAssignment_5_2; }
		
		//EString
		public RuleCall getRestartPolicyEStringParserRuleCall_5_2_0() { return cRestartPolicyEStringParserRuleCall_5_2_0; }
		
		//'envs'
		public Keyword getEnvsKeyword_6() { return cEnvsKeyword_6; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
		
		//envs+=ExecEnvironment
		public Assignment getEnvsAssignment_8() { return cEnvsAssignment_8; }
		
		//ExecEnvironment
		public RuleCall getEnvsExecEnvironmentParserRuleCall_8_0() { return cEnvsExecEnvironmentParserRuleCall_8_0; }
		
		//(',' envs+=ExecEnvironment)*
		public Group getGroup_9() { return cGroup_9; }
		
		//','
		public Keyword getCommaKeyword_9_0() { return cCommaKeyword_9_0; }
		
		//envs+=ExecEnvironment
		public Assignment getEnvsAssignment_9_1() { return cEnvsAssignment_9_1; }
		
		//ExecEnvironment
		public RuleCall getEnvsExecEnvironmentParserRuleCall_9_1_0() { return cEnvsExecEnvironmentParserRuleCall_9_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_11() { return cRightCurlyBracketKeyword_11; }
	}
	public class ServiceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.Service");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cServiceKeyword_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 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 cTypeEStringParserRuleCall_3_2_0 = (RuleCall)cTypeAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cExtAccessKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cExtAccessAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cExtAccessEStringParserRuleCall_4_2_0 = (RuleCall)cExtAccessAssignment_4_2.eContents().get(0);
		private final Keyword cPortsKeyword_5 = (Keyword)cGroup.eContents().get(5);
		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		private final Assignment cPortsAssignment_7 = (Assignment)cGroup.eContents().get(7);
		private final RuleCall cPortsExposedPortParserRuleCall_7_0 = (RuleCall)cPortsAssignment_7.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cCommaKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Assignment cPortsAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
		private final RuleCall cPortsExposedPortParserRuleCall_8_1_0 = (RuleCall)cPortsAssignment_8_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
		
		//Service:
		//	'Service' name=ID
		//	'{' ('type' ':' type=EString)? ('extAccess' ':' extAccess=EString)?
		//	'ports' '{' ports+=ExposedPort (',' ports+=ExposedPort)* '}'
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Service' name=ID '{' ('type' ':' type=EString)? ('extAccess' ':' extAccess=EString)? 'ports' '{' ports+=ExposedPort
		//(',' ports+=ExposedPort)* '}' '}'
		public Group getGroup() { return cGroup; }
		
		//'Service'
		public Keyword getServiceKeyword_0() { return cServiceKeyword_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; }
		
		//('type' ':' type=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=EString
		public Assignment getTypeAssignment_3_2() { return cTypeAssignment_3_2; }
		
		//EString
		public RuleCall getTypeEStringParserRuleCall_3_2_0() { return cTypeEStringParserRuleCall_3_2_0; }
		
		//('extAccess' ':' extAccess=EString)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'extAccess'
		public Keyword getExtAccessKeyword_4_0() { return cExtAccessKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//extAccess=EString
		public Assignment getExtAccessAssignment_4_2() { return cExtAccessAssignment_4_2; }
		
		//EString
		public RuleCall getExtAccessEStringParserRuleCall_4_2_0() { return cExtAccessEStringParserRuleCall_4_2_0; }
		
		//'ports'
		public Keyword getPortsKeyword_5() { return cPortsKeyword_5; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
		
		//ports+=ExposedPort
		public Assignment getPortsAssignment_7() { return cPortsAssignment_7; }
		
		//ExposedPort
		public RuleCall getPortsExposedPortParserRuleCall_7_0() { return cPortsExposedPortParserRuleCall_7_0; }
		
		//(',' ports+=ExposedPort)*
		public Group getGroup_8() { return cGroup_8; }
		
		//','
		public Keyword getCommaKeyword_8_0() { return cCommaKeyword_8_0; }
		
		//ports+=ExposedPort
		public Assignment getPortsAssignment_8_1() { return cPortsAssignment_8_1; }
		
		//ExposedPort
		public RuleCall getPortsExposedPortParserRuleCall_8_1_0() { return cPortsExposedPortParserRuleCall_8_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
	}
	public class ExposedPortElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.ExposedPort");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cPortKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cProtocolKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cProtocolAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cProtocolEStringParserRuleCall_3_2_0 = (RuleCall)cProtocolAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cTargetKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cTargetAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cTargetEStringParserRuleCall_4_2_0 = (RuleCall)cTargetAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cPortKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cPortAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cPortEIntParserRuleCall_5_2_0 = (RuleCall)cPortAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cExposesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cExposesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final CrossReference cExposesPodCrossReference_6_2_0 = (CrossReference)cExposesAssignment_6_2.eContents().get(0);
		private final RuleCall cExposesPodIDTerminalRuleCall_6_2_0_1 = (RuleCall)cExposesPodCrossReference_6_2_0.eContents().get(1);
		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
		private final Assignment cExposesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
		private final CrossReference cExposesPodCrossReference_6_3_1_0 = (CrossReference)cExposesAssignment_6_3_1.eContents().get(0);
		private final RuleCall cExposesPodIDTerminalRuleCall_6_3_1_0_1 = (RuleCall)cExposesPodCrossReference_6_3_1_0.eContents().get(1);
		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//ExposedPort:
		//	'Port' name=ID
		//	'{' ('protocol' ':' protocol=EString)? ('target' ':' target=EString)? ('port' ':' port=EInt)? ('exposes' '{'
		//	exposes+=[Pod] (',' exposes+=[Pod])* '}')?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Port' name=ID '{' ('protocol' ':' protocol=EString)? ('target' ':' target=EString)? ('port' ':' port=EInt)? ('exposes'
		//'{' exposes+=[Pod] (',' exposes+=[Pod])* '}')? '}'
		public Group getGroup() { return cGroup; }
		
		//'Port'
		public Keyword getPortKeyword_0() { return cPortKeyword_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; }
		
		//('protocol' ':' protocol=EString)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'protocol'
		public Keyword getProtocolKeyword_3_0() { return cProtocolKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//protocol=EString
		public Assignment getProtocolAssignment_3_2() { return cProtocolAssignment_3_2; }
		
		//EString
		public RuleCall getProtocolEStringParserRuleCall_3_2_0() { return cProtocolEStringParserRuleCall_3_2_0; }
		
		//('target' ':' target=EString)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'target'
		public Keyword getTargetKeyword_4_0() { return cTargetKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//target=EString
		public Assignment getTargetAssignment_4_2() { return cTargetAssignment_4_2; }
		
		//EString
		public RuleCall getTargetEStringParserRuleCall_4_2_0() { return cTargetEStringParserRuleCall_4_2_0; }
		
		//('port' ':' port=EInt)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'port'
		public Keyword getPortKeyword_5_0() { return cPortKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//port=EInt
		public Assignment getPortAssignment_5_2() { return cPortAssignment_5_2; }
		
		//EInt
		public RuleCall getPortEIntParserRuleCall_5_2_0() { return cPortEIntParserRuleCall_5_2_0; }
		
		//('exposes' '{' exposes+=[Pod] (',' exposes+=[Pod])* '}')?
		public Group getGroup_6() { return cGroup_6; }
		
		//'exposes'
		public Keyword getExposesKeyword_6_0() { return cExposesKeyword_6_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
		
		//exposes+=[Pod]
		public Assignment getExposesAssignment_6_2() { return cExposesAssignment_6_2; }
		
		//[Pod]
		public CrossReference getExposesPodCrossReference_6_2_0() { return cExposesPodCrossReference_6_2_0; }
		
		//ID
		public RuleCall getExposesPodIDTerminalRuleCall_6_2_0_1() { return cExposesPodIDTerminalRuleCall_6_2_0_1; }
		
		//(',' exposes+=[Pod])*
		public Group getGroup_6_3() { return cGroup_6_3; }
		
		//','
		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
		
		//exposes+=[Pod]
		public Assignment getExposesAssignment_6_3_1() { return cExposesAssignment_6_3_1; }
		
		//[Pod]
		public CrossReference getExposesPodCrossReference_6_3_1_0() { return cExposesPodCrossReference_6_3_1_0; }
		
		//ID
		public RuleCall getExposesPodIDTerminalRuleCall_6_3_1_0_1() { return cExposesPodIDTerminalRuleCall_6_3_1_0_1; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}
	public class EIntElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.EInt");
		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);
		
		//EInt ecore::EInt:
		//	'-'? INT;
		@Override public ParserRule getRule() { return rule; }
		
		//'-'? INT
		public Group getGroup() { return cGroup; }
		
		//'-'?
		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
		
		//INT
		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
	}
	public class EFloatElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.EFloat");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final RuleCall cFLOATTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//EFloat ecore::EFloat:
		//	'-'? FLOAT;
		@Override public ParserRule getRule() { return rule; }
		
		//'-'? FLOAT
		public Group getGroup() { return cGroup; }
		
		//'-'?
		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
		
		//FLOAT
		public RuleCall getFLOATTerminalRuleCall_1() { return cFLOATTerminalRuleCall_1; }
	}
	public class ExecEnvironmentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.ExecEnvironment");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cExecEnvKeyword_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 Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cDeployedArtifactsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cPaasArtsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final CrossReference cPaasArtsArtifactCrossReference_3_2_0 = (CrossReference)cPaasArtsAssignment_3_2.eContents().get(0);
		private final RuleCall cPaasArtsArtifactIDTerminalRuleCall_3_2_0_1 = (RuleCall)cPaasArtsArtifactCrossReference_3_2_0.eContents().get(1);
		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
		private final Assignment cPaasArtsAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
		private final CrossReference cPaasArtsArtifactCrossReference_3_3_1_0 = (CrossReference)cPaasArtsAssignment_3_3_1.eContents().get(0);
		private final RuleCall cPaasArtsArtifactIDTerminalRuleCall_3_3_1_0_1 = (RuleCall)cPaasArtsArtifactCrossReference_3_3_1_0.eContents().get(1);
		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cImageKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cImageAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cImageEStringParserRuleCall_4_2_0 = (RuleCall)cImageAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cCpu_limKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cCpu_limAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cCpu_limEFloatParserRuleCall_5_2_0 = (RuleCall)cCpu_limAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cMemory_limKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cMem_limAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cMem_limEIntParserRuleCall_6_2_0 = (RuleCall)cMem_limAssignment_6_2.eContents().get(0);
		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
		private final Keyword cCpu_reqKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
		private final Keyword cColonKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
		private final Assignment cCpu_reqAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
		private final RuleCall cCpu_reqEFloatParserRuleCall_7_2_0 = (RuleCall)cCpu_reqAssignment_7_2.eContents().get(0);
		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
		private final Keyword cMem_reqKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
		private final Keyword cColonKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
		private final Assignment cMem_reqAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
		private final RuleCall cMem_reqEIntParserRuleCall_8_2_0 = (RuleCall)cMem_reqAssignment_8_2.eContents().get(0);
		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
		private final Keyword cPortsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
		private final Assignment cPortsAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
		private final RuleCall cPortsEIntParserRuleCall_9_2_0 = (RuleCall)cPortsAssignment_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 cPortsAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
		private final RuleCall cPortsEIntParserRuleCall_9_3_1_0 = (RuleCall)cPortsAssignment_9_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
		private final Keyword cCommandsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
		private final Assignment cCommandsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
		private final RuleCall cCommandsEStringParserRuleCall_10_2_0 = (RuleCall)cCommandsAssignment_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 cCommandsAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
		private final RuleCall cCommandsEStringParserRuleCall_10_3_1_0 = (RuleCall)cCommandsAssignment_10_3_1.eContents().get(0);
		private final Keyword cRightSquareBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
		private final Keyword cEnvVarsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
		private final Assignment cVarsAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
		private final RuleCall cVarsEnvVarParserRuleCall_11_2_0 = (RuleCall)cVarsAssignment_11_2.eContents().get(0);
		private final Group cGroup_11_3 = (Group)cGroup_11.eContents().get(3);
		private final Keyword cCommaKeyword_11_3_0 = (Keyword)cGroup_11_3.eContents().get(0);
		private final Assignment cVarsAssignment_11_3_1 = (Assignment)cGroup_11_3.eContents().get(1);
		private final RuleCall cVarsEnvVarParserRuleCall_11_3_1_0 = (RuleCall)cVarsAssignment_11_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_11_4 = (Keyword)cGroup_11.eContents().get(4);
		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
		
		//ExecEnvironment:
		//	'ExecEnv'
		//	name=ID
		//	'{' ('deployedArtifacts' '{' PaasArts+=[Artifact] ("," PaasArts+=[Artifact])* '}')? ('image' ':' image=EString)?
		//	('cpu_lim' ':' cpu_lim=EFloat)? ('memory_lim' ':' mem_lim=EInt)? ('cpu_req' ':' cpu_req=EFloat)? ('mem_req' ':'
		//	mem_req=EInt)? ('ports' '[' ports+=EInt (',' ports+=EInt)* ']')? ('commands' '[' commands+=EString (','
		//	commands+=EString)* ']')? ('envVars' '{' vars+=EnvVar (',' vars+=EnvVar)* '}')?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'ExecEnv' name=ID '{' ('deployedArtifacts' '{' PaasArts+=[Artifact] ("," PaasArts+=[Artifact])* '}')? ('image' ':'
		//image=EString)? ('cpu_lim' ':' cpu_lim=EFloat)? ('memory_lim' ':' mem_lim=EInt)? ('cpu_req' ':' cpu_req=EFloat)?
		//('mem_req' ':' mem_req=EInt)? ('ports' '[' ports+=EInt (',' ports+=EInt)* ']')? ('commands' '[' commands+=EString (','
		//commands+=EString)* ']')? ('envVars' '{' vars+=EnvVar (',' vars+=EnvVar)* '}')? '}'
		public Group getGroup() { return cGroup; }
		
		//'ExecEnv'
		public Keyword getExecEnvKeyword_0() { return cExecEnvKeyword_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; }
		
		//('deployedArtifacts' '{' PaasArts+=[Artifact] ("," PaasArts+=[Artifact])* '}')?
		public Group getGroup_3() { return cGroup_3; }
		
		//'deployedArtifacts'
		public Keyword getDeployedArtifactsKeyword_3_0() { return cDeployedArtifactsKeyword_3_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
		
		//PaasArts+=[Artifact]
		public Assignment getPaasArtsAssignment_3_2() { return cPaasArtsAssignment_3_2; }
		
		//[Artifact]
		public CrossReference getPaasArtsArtifactCrossReference_3_2_0() { return cPaasArtsArtifactCrossReference_3_2_0; }
		
		//ID
		public RuleCall getPaasArtsArtifactIDTerminalRuleCall_3_2_0_1() { return cPaasArtsArtifactIDTerminalRuleCall_3_2_0_1; }
		
		//("," PaasArts+=[Artifact])*
		public Group getGroup_3_3() { return cGroup_3_3; }
		
		//","
		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
		
		//PaasArts+=[Artifact]
		public Assignment getPaasArtsAssignment_3_3_1() { return cPaasArtsAssignment_3_3_1; }
		
		//[Artifact]
		public CrossReference getPaasArtsArtifactCrossReference_3_3_1_0() { return cPaasArtsArtifactCrossReference_3_3_1_0; }
		
		//ID
		public RuleCall getPaasArtsArtifactIDTerminalRuleCall_3_3_1_0_1() { return cPaasArtsArtifactIDTerminalRuleCall_3_3_1_0_1; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
		
		//('image' ':' image=EString)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'image'
		public Keyword getImageKeyword_4_0() { return cImageKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//image=EString
		public Assignment getImageAssignment_4_2() { return cImageAssignment_4_2; }
		
		//EString
		public RuleCall getImageEStringParserRuleCall_4_2_0() { return cImageEStringParserRuleCall_4_2_0; }
		
		//('cpu_lim' ':' cpu_lim=EFloat)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'cpu_lim'
		public Keyword getCpu_limKeyword_5_0() { return cCpu_limKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//cpu_lim=EFloat
		public Assignment getCpu_limAssignment_5_2() { return cCpu_limAssignment_5_2; }
		
		//EFloat
		public RuleCall getCpu_limEFloatParserRuleCall_5_2_0() { return cCpu_limEFloatParserRuleCall_5_2_0; }
		
		//('memory_lim' ':' mem_lim=EInt)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'memory_lim'
		public Keyword getMemory_limKeyword_6_0() { return cMemory_limKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//mem_lim=EInt
		public Assignment getMem_limAssignment_6_2() { return cMem_limAssignment_6_2; }
		
		//EInt
		public RuleCall getMem_limEIntParserRuleCall_6_2_0() { return cMem_limEIntParserRuleCall_6_2_0; }
		
		//('cpu_req' ':' cpu_req=EFloat)?
		public Group getGroup_7() { return cGroup_7; }
		
		//'cpu_req'
		public Keyword getCpu_reqKeyword_7_0() { return cCpu_reqKeyword_7_0; }
		
		//':'
		public Keyword getColonKeyword_7_1() { return cColonKeyword_7_1; }
		
		//cpu_req=EFloat
		public Assignment getCpu_reqAssignment_7_2() { return cCpu_reqAssignment_7_2; }
		
		//EFloat
		public RuleCall getCpu_reqEFloatParserRuleCall_7_2_0() { return cCpu_reqEFloatParserRuleCall_7_2_0; }
		
		//('mem_req' ':' mem_req=EInt)?
		public Group getGroup_8() { return cGroup_8; }
		
		//'mem_req'
		public Keyword getMem_reqKeyword_8_0() { return cMem_reqKeyword_8_0; }
		
		//':'
		public Keyword getColonKeyword_8_1() { return cColonKeyword_8_1; }
		
		//mem_req=EInt
		public Assignment getMem_reqAssignment_8_2() { return cMem_reqAssignment_8_2; }
		
		//EInt
		public RuleCall getMem_reqEIntParserRuleCall_8_2_0() { return cMem_reqEIntParserRuleCall_8_2_0; }
		
		//('ports' '[' ports+=EInt (',' ports+=EInt)* ']')?
		public Group getGroup_9() { return cGroup_9; }
		
		//'ports'
		public Keyword getPortsKeyword_9_0() { return cPortsKeyword_9_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_9_1() { return cLeftSquareBracketKeyword_9_1; }
		
		//ports+=EInt
		public Assignment getPortsAssignment_9_2() { return cPortsAssignment_9_2; }
		
		//EInt
		public RuleCall getPortsEIntParserRuleCall_9_2_0() { return cPortsEIntParserRuleCall_9_2_0; }
		
		//(',' ports+=EInt)*
		public Group getGroup_9_3() { return cGroup_9_3; }
		
		//','
		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
		
		//ports+=EInt
		public Assignment getPortsAssignment_9_3_1() { return cPortsAssignment_9_3_1; }
		
		//EInt
		public RuleCall getPortsEIntParserRuleCall_9_3_1_0() { return cPortsEIntParserRuleCall_9_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_9_4() { return cRightSquareBracketKeyword_9_4; }
		
		//('commands' '[' commands+=EString (',' commands+=EString)* ']')?
		public Group getGroup_10() { return cGroup_10; }
		
		//'commands'
		public Keyword getCommandsKeyword_10_0() { return cCommandsKeyword_10_0; }
		
		//'['
		public Keyword getLeftSquareBracketKeyword_10_1() { return cLeftSquareBracketKeyword_10_1; }
		
		//commands+=EString
		public Assignment getCommandsAssignment_10_2() { return cCommandsAssignment_10_2; }
		
		//EString
		public RuleCall getCommandsEStringParserRuleCall_10_2_0() { return cCommandsEStringParserRuleCall_10_2_0; }
		
		//(',' commands+=EString)*
		public Group getGroup_10_3() { return cGroup_10_3; }
		
		//','
		public Keyword getCommaKeyword_10_3_0() { return cCommaKeyword_10_3_0; }
		
		//commands+=EString
		public Assignment getCommandsAssignment_10_3_1() { return cCommandsAssignment_10_3_1; }
		
		//EString
		public RuleCall getCommandsEStringParserRuleCall_10_3_1_0() { return cCommandsEStringParserRuleCall_10_3_1_0; }
		
		//']'
		public Keyword getRightSquareBracketKeyword_10_4() { return cRightSquareBracketKeyword_10_4; }
		
		//('envVars' '{' vars+=EnvVar (',' vars+=EnvVar)* '}')?
		public Group getGroup_11() { return cGroup_11; }
		
		//'envVars'
		public Keyword getEnvVarsKeyword_11_0() { return cEnvVarsKeyword_11_0; }
		
		//'{'
		public Keyword getLeftCurlyBracketKeyword_11_1() { return cLeftCurlyBracketKeyword_11_1; }
		
		//vars+=EnvVar
		public Assignment getVarsAssignment_11_2() { return cVarsAssignment_11_2; }
		
		//EnvVar
		public RuleCall getVarsEnvVarParserRuleCall_11_2_0() { return cVarsEnvVarParserRuleCall_11_2_0; }
		
		//(',' vars+=EnvVar)*
		public Group getGroup_11_3() { return cGroup_11_3; }
		
		//','
		public Keyword getCommaKeyword_11_3_0() { return cCommaKeyword_11_3_0; }
		
		//vars+=EnvVar
		public Assignment getVarsAssignment_11_3_1() { return cVarsAssignment_11_3_1; }
		
		//EnvVar
		public RuleCall getVarsEnvVarParserRuleCall_11_3_1_0() { return cVarsEnvVarParserRuleCall_11_3_1_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_11_4() { return cRightCurlyBracketKeyword_11_4; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
	}
	public class EnvVarElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.EnvVar");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cEnvVarAction_0 = (Action)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_1_0 = (Assignment)cGroup_1.eContents().get(0);
		private final RuleCall cNameEStringParserRuleCall_1_0_0 = (RuleCall)cNameAssignment_1_0.eContents().get(0);
		private final Keyword cColonKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cValueAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cValueEStringParserRuleCall_1_2_0 = (RuleCall)cValueAssignment_1_2.eContents().get(0);
		
		//EnvVar:
		//	{EnvVar} (name=EString ':' value=EString)?;
		@Override public ParserRule getRule() { return rule; }
		
		//{EnvVar} (name=EString ':' value=EString)?
		public Group getGroup() { return cGroup; }
		
		//{EnvVar}
		public Action getEnvVarAction_0() { return cEnvVarAction_0; }
		
		//(name=EString ':' value=EString)?
		public Group getGroup_1() { return cGroup_1; }
		
		//name=EString
		public Assignment getNameAssignment_1_0() { return cNameAssignment_1_0; }
		
		//EString
		public RuleCall getNameEStringParserRuleCall_1_0_0() { return cNameEStringParserRuleCall_1_0_0; }
		
		//':'
		public Keyword getColonKeyword_1_1() { return cColonKeyword_1_1; }
		
		//value=EString
		public Assignment getValueAssignment_1_2() { return cValueAssignment_1_2; }
		
		//EString
		public RuleCall getValueEStringParserRuleCall_1_2_0() { return cValueEStringParserRuleCall_1_2_0; }
	}
	public class ServerlessEnvElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.ServerlessEnv");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cServerlessEnvAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cServerlessEnvKeyword_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 cProviderKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Keyword cColonKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		private final Assignment cProviderAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
		private final RuleCall cProviderEStringParserRuleCall_4_2_0 = (RuleCall)cProviderAssignment_4_2.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cMemoryKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Keyword cColonKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
		private final Assignment cMemoryAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
		private final RuleCall cMemoryEFloatParserRuleCall_5_2_0 = (RuleCall)cMemoryAssignment_5_2.eContents().get(0);
		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
		private final Keyword cTimeoutKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
		private final Keyword cColonKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
		private final Assignment cTimeoutAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
		private final RuleCall cTimeoutEIntParserRuleCall_6_2_0 = (RuleCall)cTimeoutAssignment_6_2.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
		
		//ServerlessEnv:
		//	{ServerlessEnv}
		//	'ServerlessEnv'
		//	name=ID
		//	'{' ('provider' ':' provider=EString)? ('memory' ':' memory=EFloat)? ('timeout' ':' timeout=EInt)?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//{ServerlessEnv} 'ServerlessEnv' name=ID '{' ('provider' ':' provider=EString)? ('memory' ':' memory=EFloat)? ('timeout'
		//':' timeout=EInt)? '}'
		public Group getGroup() { return cGroup; }
		
		//{ServerlessEnv}
		public Action getServerlessEnvAction_0() { return cServerlessEnvAction_0; }
		
		//'ServerlessEnv'
		public Keyword getServerlessEnvKeyword_1() { return cServerlessEnvKeyword_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; }
		
		//('provider' ':' provider=EString)?
		public Group getGroup_4() { return cGroup_4; }
		
		//'provider'
		public Keyword getProviderKeyword_4_0() { return cProviderKeyword_4_0; }
		
		//':'
		public Keyword getColonKeyword_4_1() { return cColonKeyword_4_1; }
		
		//provider=EString
		public Assignment getProviderAssignment_4_2() { return cProviderAssignment_4_2; }
		
		//EString
		public RuleCall getProviderEStringParserRuleCall_4_2_0() { return cProviderEStringParserRuleCall_4_2_0; }
		
		//('memory' ':' memory=EFloat)?
		public Group getGroup_5() { return cGroup_5; }
		
		//'memory'
		public Keyword getMemoryKeyword_5_0() { return cMemoryKeyword_5_0; }
		
		//':'
		public Keyword getColonKeyword_5_1() { return cColonKeyword_5_1; }
		
		//memory=EFloat
		public Assignment getMemoryAssignment_5_2() { return cMemoryAssignment_5_2; }
		
		//EFloat
		public RuleCall getMemoryEFloatParserRuleCall_5_2_0() { return cMemoryEFloatParserRuleCall_5_2_0; }
		
		//('timeout' ':' timeout=EInt)?
		public Group getGroup_6() { return cGroup_6; }
		
		//'timeout'
		public Keyword getTimeoutKeyword_6_0() { return cTimeoutKeyword_6_0; }
		
		//':'
		public Keyword getColonKeyword_6_1() { return cColonKeyword_6_1; }
		
		//timeout=EInt
		public Assignment getTimeoutAssignment_6_2() { return cTimeoutAssignment_6_2; }
		
		//EInt
		public RuleCall getTimeoutEIntParserRuleCall_6_2_0() { return cTimeoutEIntParserRuleCall_6_2_0; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
	}
	public class ArtifactElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.Artifact");
		private final UnorderedGroup cUnorderedGroup = (UnorderedGroup)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cUnorderedGroup.eContents().get(0);
		private final Keyword cArtifactKeyword_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 cLeftCurlyBracketKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final Group cGroup_0_3 = (Group)cGroup_0.eContents().get(3);
		private final Keyword cComponentKeyword_0_3_0 = (Keyword)cGroup_0_3.eContents().get(0);
		private final Keyword cColonKeyword_0_3_1 = (Keyword)cGroup_0_3.eContents().get(1);
		private final Assignment cCompAssignment_0_3_2 = (Assignment)cGroup_0_3.eContents().get(2);
		private final CrossReference cCompComponentCrossReference_0_3_2_0 = (CrossReference)cCompAssignment_0_3_2.eContents().get(0);
		private final RuleCall cCompComponentIDTerminalRuleCall_0_3_2_0_1 = (RuleCall)cCompComponentCrossReference_0_3_2_0.eContents().get(1);
		private final Group cGroup_1 = (Group)cUnorderedGroup.eContents().get(1);
		private final Keyword cConnectorKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
		private final Keyword cColonKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
		private final Assignment cConnAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final CrossReference cConnConnectorCrossReference_1_2_0 = (CrossReference)cConnAssignment_1_2.eContents().get(0);
		private final RuleCall cConnConnectorIDTerminalRuleCall_1_2_0_1 = (RuleCall)cConnConnectorCrossReference_1_2_0.eContents().get(1);
		private final Group cGroup_2 = (Group)cUnorderedGroup.eContents().get(2);
		private final Keyword cTechnologyKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
		private final Keyword cColonKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cTechnologyAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final RuleCall cTechnologyEStringParserRuleCall_2_2_0 = (RuleCall)cTechnologyAssignment_2_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cUnorderedGroup.eContents().get(3);
		private final Keyword cPropsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Keyword cColonKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
		private final Assignment cPropsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
		private final RuleCall cPropsEStringParserRuleCall_3_2_0 = (RuleCall)cPropsAssignment_3_2.eContents().get(0);
		private final Group cGroup_4 = (Group)cUnorderedGroup.eContents().get(4);
		private final Group cGroup_4_0 = (Group)cGroup_4.eContents().get(0);
		private final Keyword cDecisionKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
		private final Keyword cColonKeyword_4_0_1 = (Keyword)cGroup_4_0.eContents().get(1);
		private final Assignment cDecisionAssignment_4_0_2 = (Assignment)cGroup_4_0.eContents().get(2);
		private final CrossReference cDecisionArchDecisionCrossReference_4_0_2_0 = (CrossReference)cDecisionAssignment_4_0_2.eContents().get(0);
		private final RuleCall cDecisionArchDecisionIDTerminalRuleCall_4_0_2_0_1 = (RuleCall)cDecisionArchDecisionCrossReference_4_0_2_0.eContents().get(1);
		private final Keyword cRightCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
		
		//Artifact:
		//	'Artifact'
		//	name=ID
		//	'{' ('component' ':' comp=[fv::Component])? & ('connector' ':' conn=[fv::Connector])? & 'technology' ':'
		//	technology=EString & ('props' ':' props=EString)? & ('decision' ':' decision=[rq::ArchDecision])?
		//	'}';
		@Override public ParserRule getRule() { return rule; }
		
		//'Artifact' name=ID '{' ('component' ':' comp=[fv::Component])? & ('connector' ':' conn=[fv::Connector])? & 'technology'
		//':' technology=EString & ('props' ':' props=EString)? & ('decision' ':' decision=[rq::ArchDecision])? '}'
		public UnorderedGroup getUnorderedGroup() { return cUnorderedGroup; }
		
		//'Artifact' name=ID '{' ('component' ':' comp=[fv::Component])?
		public Group getGroup_0() { return cGroup_0; }
		
		//'Artifact'
		public Keyword getArtifactKeyword_0_0() { return cArtifactKeyword_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 getLeftCurlyBracketKeyword_0_2() { return cLeftCurlyBracketKeyword_0_2; }
		
		//('component' ':' comp=[fv::Component])?
		public Group getGroup_0_3() { return cGroup_0_3; }
		
		//'component'
		public Keyword getComponentKeyword_0_3_0() { return cComponentKeyword_0_3_0; }
		
		//':'
		public Keyword getColonKeyword_0_3_1() { return cColonKeyword_0_3_1; }
		
		//comp=[fv::Component]
		public Assignment getCompAssignment_0_3_2() { return cCompAssignment_0_3_2; }
		
		//[fv::Component]
		public CrossReference getCompComponentCrossReference_0_3_2_0() { return cCompComponentCrossReference_0_3_2_0; }
		
		//ID
		public RuleCall getCompComponentIDTerminalRuleCall_0_3_2_0_1() { return cCompComponentIDTerminalRuleCall_0_3_2_0_1; }
		
		//('connector' ':' conn=[fv::Connector])?
		public Group getGroup_1() { return cGroup_1; }
		
		//'connector'
		public Keyword getConnectorKeyword_1_0() { return cConnectorKeyword_1_0; }
		
		//':'
		public Keyword getColonKeyword_1_1() { return cColonKeyword_1_1; }
		
		//conn=[fv::Connector]
		public Assignment getConnAssignment_1_2() { return cConnAssignment_1_2; }
		
		//[fv::Connector]
		public CrossReference getConnConnectorCrossReference_1_2_0() { return cConnConnectorCrossReference_1_2_0; }
		
		//ID
		public RuleCall getConnConnectorIDTerminalRuleCall_1_2_0_1() { return cConnConnectorIDTerminalRuleCall_1_2_0_1; }
		
		//'technology' ':' technology=EString
		public Group getGroup_2() { return cGroup_2; }
		
		//'technology'
		public Keyword getTechnologyKeyword_2_0() { return cTechnologyKeyword_2_0; }
		
		//':'
		public Keyword getColonKeyword_2_1() { return cColonKeyword_2_1; }
		
		//technology=EString
		public Assignment getTechnologyAssignment_2_2() { return cTechnologyAssignment_2_2; }
		
		//EString
		public RuleCall getTechnologyEStringParserRuleCall_2_2_0() { return cTechnologyEStringParserRuleCall_2_2_0; }
		
		//('props' ':' props=EString)?
		public Group getGroup_3() { return cGroup_3; }
		
		//'props'
		public Keyword getPropsKeyword_3_0() { return cPropsKeyword_3_0; }
		
		//':'
		public Keyword getColonKeyword_3_1() { return cColonKeyword_3_1; }
		
		//props=EString
		public Assignment getPropsAssignment_3_2() { return cPropsAssignment_3_2; }
		
		//EString
		public RuleCall getPropsEStringParserRuleCall_3_2_0() { return cPropsEStringParserRuleCall_3_2_0; }
		
		//('decision' ':' decision=[rq::ArchDecision])? '}'
		public Group getGroup_4() { return cGroup_4; }
		
		//('decision' ':' decision=[rq::ArchDecision])?
		public Group getGroup_4_0() { return cGroup_4_0; }
		
		//'decision'
		public Keyword getDecisionKeyword_4_0_0() { return cDecisionKeyword_4_0_0; }
		
		//':'
		public Keyword getColonKeyword_4_0_1() { return cColonKeyword_4_0_1; }
		
		//decision=[rq::ArchDecision]
		public Assignment getDecisionAssignment_4_0_2() { return cDecisionAssignment_4_0_2; }
		
		//[rq::ArchDecision]
		public CrossReference getDecisionArchDecisionCrossReference_4_0_2_0() { return cDecisionArchDecisionCrossReference_4_0_2_0; }
		
		//ID
		public RuleCall getDecisionArchDecisionIDTerminalRuleCall_4_0_2_0_1() { return cDecisionArchDecisionIDTerminalRuleCall_4_0_2_0_1; }
		
		//'}'
		public Keyword getRightCurlyBracketKeyword_4_1() { return cRightCurlyBracketKeyword_4_1; }
	}
	
	public class TypeDeviceElements extends AbstractEnumRuleElementFinder {
		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.TypeDevice");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final EnumLiteralDeclaration cMEDIUMEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
		private final Keyword cMEDIUMMEDIUMKeyword_0_0 = (Keyword)cMEDIUMEnumLiteralDeclaration_0.eContents().get(0);
		private final EnumLiteralDeclaration cLARGEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
		private final Keyword cLARGELARGEKeyword_1_0 = (Keyword)cLARGEEnumLiteralDeclaration_1.eContents().get(0);
		private final EnumLiteralDeclaration cSMALLEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
		private final Keyword cSMALLSMALLKeyword_2_0 = (Keyword)cSMALLEnumLiteralDeclaration_2.eContents().get(0);
		
		//enum TypeDevice:
		//	MEDIUM | LARGE | SMALL;
		public EnumRule getRule() { return rule; }
		
		//MEDIUM | LARGE | SMALL
		public Alternatives getAlternatives() { return cAlternatives; }
		
		//MEDIUM
		public EnumLiteralDeclaration getMEDIUMEnumLiteralDeclaration_0() { return cMEDIUMEnumLiteralDeclaration_0; }
		
		//'MEDIUM'
		public Keyword getMEDIUMMEDIUMKeyword_0_0() { return cMEDIUMMEDIUMKeyword_0_0; }
		
		//LARGE
		public EnumLiteralDeclaration getLARGEEnumLiteralDeclaration_1() { return cLARGEEnumLiteralDeclaration_1; }
		
		//'LARGE'
		public Keyword getLARGELARGEKeyword_1_0() { return cLARGELARGEKeyword_1_0; }
		
		//SMALL
		public EnumLiteralDeclaration getSMALLEnumLiteralDeclaration_2() { return cSMALLEnumLiteralDeclaration_2; }
		
		//'SMALL'
		public Keyword getSMALLSMALLKeyword_2_0() { return cSMALLSMALLKeyword_2_0; }
	}
	
	private final DeploymentViewElements pDeploymentView;
	private final EStringElements pEString;
	private final DeviceElements pDevice;
	private final DeploymentElements pDeployment;
	private final PodElements pPod;
	private final ServiceElements pService;
	private final ExposedPortElements pExposedPort;
	private final TypeDeviceElements eTypeDevice;
	private final EIntElements pEInt;
	private final EFloatElements pEFloat;
	private final TerminalRule tFLOAT;
	private final ExecEnvironmentElements pExecEnvironment;
	private final EnvVarElements pEnvVar;
	private final ServerlessEnvElements pServerlessEnv;
	private final ArtifactElements pArtifact;
	
	private final Grammar grammar;
	
	private final TerminalsGrammarAccess gaTerminals;

	@Inject
	public AdvlGrammarAccess(GrammarProvider grammarProvider,
			TerminalsGrammarAccess gaTerminals) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.gaTerminals = gaTerminals;
		this.pDeploymentView = new DeploymentViewElements();
		this.pEString = new EStringElements();
		this.pDevice = new DeviceElements();
		this.pDeployment = new DeploymentElements();
		this.pPod = new PodElements();
		this.pService = new ServiceElements();
		this.pExposedPort = new ExposedPortElements();
		this.eTypeDevice = new TypeDeviceElements();
		this.pEInt = new EIntElements();
		this.pEFloat = new EFloatElements();
		this.tFLOAT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "co.edu.uniandes.accordant_dv.Advl.FLOAT");
		this.pExecEnvironment = new ExecEnvironmentElements();
		this.pEnvVar = new EnvVarElements();
		this.pServerlessEnv = new ServerlessEnvElements();
		this.pArtifact = new ArtifactElements();
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("co.edu.uniandes.accordant_dv.Advl".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;
	}

	
	////import "http://www.example.org/bdarchops_fv" as bdarchops_fv
	////import "http://uniandes.accordant.functional" as fv
	//DeploymentView:
	//	'DeploymentView'
	//	name=ID
	//	'use' 'project' project=[rq::Project]
	//	'use' 'functionalView' fv=[fv::FunctionalView]
	//	'{'
	//	'artifacts' '{' artifacts+=Artifact (',' artifacts+=Artifact)* '}'
	//	'devs' '{' devs+=Device (',' devs+=Device)* '}'
	//	'deployments' '{' deployments+=Deployment (',' deployments+=Deployment)* '}' ('services' '{' services+=Service (','
	//	services+=Service)* '}')? ('serverless' '{' serverless+=ServerlessEnv ("," serverless+=ServerlessEnv)* '}')?
	//	'}';
	public DeploymentViewElements getDeploymentViewAccess() {
		return pDeploymentView;
	}
	
	public ParserRule getDeploymentViewRule() {
		return getDeploymentViewAccess().getRule();
	}
	
	////FQN:
	////    ID ("." ID)*;
	//EString:
	//	STRING | ID;
	public EStringElements getEStringAccess() {
		return pEString;
	}
	
	public ParserRule getEStringRule() {
		return getEStringAccess().getRule();
	}
	
	//Device:
	//	'Device' name=ID
	//	'{' ('host' ':' host=EString)? & ('type' ':' type=TypeDevice)? & ('cpu' ':' cpu=EInt)? & ('storage' ':' storage=EInt)?
	//	& ('memory' ':' mem=EInt)?
	//	'}';
	public DeviceElements getDeviceAccess() {
		return pDevice;
	}
	
	public ParserRule getDeviceRule() {
		return getDeviceAccess().getRule();
	}
	
	//Deployment:
	//	'Deployment' name=ID
	//	'{' ('replicas' ':' replicas=EInt)? ('maxSurge' ':' maxSurge=EInt)? ('maxUnavailable' ':' maxUnavail=EInt)?
	//	'pods' '{' pods+=Pod (',' pods+=Pod)* '}' ('decision' ':' decision=[rq::ArchDecision])?
	//	'}';
	public DeploymentElements getDeploymentAccess() {
		return pDeployment;
	}
	
	public ParserRule getDeploymentRule() {
		return getDeploymentAccess().getRule();
	}
	
	//Pod:
	//	'Pod' name=ID
	//	'{' ('host' ':' host=EString)? ('device' ':' node=[Device])? ('restartPolicy' ':' restartPolicy=EString)?
	//	'envs' '{' envs+=ExecEnvironment (',' envs+=ExecEnvironment)* '}'
	//	'}';
	public PodElements getPodAccess() {
		return pPod;
	}
	
	public ParserRule getPodRule() {
		return getPodAccess().getRule();
	}
	
	//Service:
	//	'Service' name=ID
	//	'{' ('type' ':' type=EString)? ('extAccess' ':' extAccess=EString)?
	//	'ports' '{' ports+=ExposedPort (',' ports+=ExposedPort)* '}'
	//	'}';
	public ServiceElements getServiceAccess() {
		return pService;
	}
	
	public ParserRule getServiceRule() {
		return getServiceAccess().getRule();
	}
	
	//ExposedPort:
	//	'Port' name=ID
	//	'{' ('protocol' ':' protocol=EString)? ('target' ':' target=EString)? ('port' ':' port=EInt)? ('exposes' '{'
	//	exposes+=[Pod] (',' exposes+=[Pod])* '}')?
	//	'}';
	public ExposedPortElements getExposedPortAccess() {
		return pExposedPort;
	}
	
	public ParserRule getExposedPortRule() {
		return getExposedPortAccess().getRule();
	}
	
	//enum TypeDevice:
	//	MEDIUM | LARGE | SMALL;
	public TypeDeviceElements getTypeDeviceAccess() {
		return eTypeDevice;
	}
	
	public EnumRule getTypeDeviceRule() {
		return getTypeDeviceAccess().getRule();
	}
	
	//EInt ecore::EInt:
	//	'-'? INT;
	public EIntElements getEIntAccess() {
		return pEInt;
	}
	
	public ParserRule getEIntRule() {
		return getEIntAccess().getRule();
	}
	
	//EFloat ecore::EFloat:
	//	'-'? FLOAT;
	public EFloatElements getEFloatAccess() {
		return pEFloat;
	}
	
	public ParserRule getEFloatRule() {
		return getEFloatAccess().getRule();
	}
	
	//terminal FLOAT:
	//	INT '.' INT;
	public TerminalRule getFLOATRule() {
		return tFLOAT;
	}
	
	//ExecEnvironment:
	//	'ExecEnv'
	//	name=ID
	//	'{' ('deployedArtifacts' '{' PaasArts+=[Artifact] ("," PaasArts+=[Artifact])* '}')? ('image' ':' image=EString)?
	//	('cpu_lim' ':' cpu_lim=EFloat)? ('memory_lim' ':' mem_lim=EInt)? ('cpu_req' ':' cpu_req=EFloat)? ('mem_req' ':'
	//	mem_req=EInt)? ('ports' '[' ports+=EInt (',' ports+=EInt)* ']')? ('commands' '[' commands+=EString (','
	//	commands+=EString)* ']')? ('envVars' '{' vars+=EnvVar (',' vars+=EnvVar)* '}')?
	//	'}';
	public ExecEnvironmentElements getExecEnvironmentAccess() {
		return pExecEnvironment;
	}
	
	public ParserRule getExecEnvironmentRule() {
		return getExecEnvironmentAccess().getRule();
	}
	
	//EnvVar:
	//	{EnvVar} (name=EString ':' value=EString)?;
	public EnvVarElements getEnvVarAccess() {
		return pEnvVar;
	}
	
	public ParserRule getEnvVarRule() {
		return getEnvVarAccess().getRule();
	}
	
	//ServerlessEnv:
	//	{ServerlessEnv}
	//	'ServerlessEnv'
	//	name=ID
	//	'{' ('provider' ':' provider=EString)? ('memory' ':' memory=EFloat)? ('timeout' ':' timeout=EInt)?
	//	'}';
	public ServerlessEnvElements getServerlessEnvAccess() {
		return pServerlessEnv;
	}
	
	public ParserRule getServerlessEnvRule() {
		return getServerlessEnvAccess().getRule();
	}
	
	//Artifact:
	//	'Artifact'
	//	name=ID
	//	'{' ('component' ':' comp=[fv::Component])? & ('connector' ':' conn=[fv::Connector])? & 'technology' ':'
	//	technology=EString & ('props' ':' props=EString)? & ('decision' ':' decision=[rq::ArchDecision])?
	//	'}';
	public ArtifactElements getArtifactAccess() {
		return pArtifact;
	}
	
	public ParserRule getArtifactRule() {
		return getArtifactAccess().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();
	}
}
