package com.minres.rdl.parser.antlr.internal;

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import com.minres.rdl.services.RDLGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalRDLParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STR", "RULE_ID", "RULE_NUM", "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_ESCAPE_JSP", "RULE_ESCAPE_ORDL", "'`include'", "'property'", "'{'", "'type'", "'='", "';'", "'}'", "'default'", "'true'", "'false'", "'component'", "'|'", "'external'", "'internal'", "'alias'", "','", "'@'", "'+='", "'%='", "'['", "':'", "']'", "'->'", "'.'", "'enum'", "'name'", "'desc'", "'string'", "'number'", "'boolean'", "'addrmap'", "'reg'", "'regfile'", "'field'", "'ref'", "'signal'", "'all'", "'arbiter'", "'rset'", "'rclr'", "'woclr'", "'woset'", "'we'", "'wel'", "'swwe'", "'swwel'", "'hwset'", "'hwclr'", "'swmod'", "'swacc'", "'sticky'", "'stickybit'", "'intr'", "'anded'", "'ored'", "'xored'", "'counter'", "'overflow'", "'sharedextbus'", "'errextbus'", "'reset'", "'littleendian'", "'bigendian'", "'rsvdset'", "'rsvdsetX'", "'bridge'", "'shared'", "'msb0'", "'lsb0'", "'sync'", "'async'", "'cpuif_reset'", "'field_reset'", "'activehigh'", "'activelow'", "'singlepulse'", "'underflow'", "'incr'", "'decr'", "'incrwidth'", "'decrwidth'", "'incrvalue'", "'decrvalue'", "'saturate'", "'decrsaturate'", "'threshold'", "'decrthreshold'", "'dontcompare'", "'donttest'", "'alignment'", "'regwidth'", "'fieldwidth'", "'signalwidth'", "'accesswidth'", "'sw'", "'hw'", "'addressing'", "'precedence'", "'encode'", "'resetsignal'", "'clock'", "'mask'", "'enable'", "'hwenable'", "'hwmask'", "'haltmask'", "'haltenable'", "'halt'", "'next'", "'UNDEFINED'", "'rw'", "'wr'", "'r'", "'w'", "'na'", "'compact'", "'regalign'", "'fullalign'", "'posedge'", "'negedge'", "'bothedge'", "'level'", "'nonsticky'"
    };
    public static final int T__50=50;
    public static final int T__59=59;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__133=133;
    public static final int T__132=132;
    public static final int T__60=60;
    public static final int T__61=61;
    public static final int T__134=134;
    public static final int RULE_ID=5;
    public static final int T__131=131;
    public static final int T__130=130;
    public static final int T__66=66;
    public static final int RULE_ML_COMMENT=8;
    public static final int T__67=67;
    public static final int T__129=129;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__62=62;
    public static final int T__126=126;
    public static final int T__63=63;
    public static final int T__125=125;
    public static final int T__64=64;
    public static final int T__128=128;
    public static final int T__65=65;
    public static final int T__127=127;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_STR=4;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__91=91;
    public static final int T__100=100;
    public static final int T__92=92;
    public static final int T__93=93;
    public static final int T__102=102;
    public static final int T__94=94;
    public static final int T__101=101;
    public static final int T__90=90;
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__99=99;
    public static final int RULE_NUM=6;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int T__95=95;
    public static final int T__96=96;
    public static final int T__97=97;
    public static final int T__98=98;
    public static final int RULE_ESCAPE_ORDL=11;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__122=122;
    public static final int T__70=70;
    public static final int T__121=121;
    public static final int T__71=71;
    public static final int T__124=124;
    public static final int T__72=72;
    public static final int T__123=123;
    public static final int T__120=120;
    public static final int RULE_SL_COMMENT=9;
    public static final int T__77=77;
    public static final int T__119=119;
    public static final int T__78=78;
    public static final int T__118=118;
    public static final int T__79=79;
    public static final int T__73=73;
    public static final int T__115=115;
    public static final int EOF=-1;
    public static final int T__74=74;
    public static final int T__114=114;
    public static final int T__75=75;
    public static final int T__117=117;
    public static final int T__76=76;
    public static final int T__116=116;
    public static final int T__80=80;
    public static final int T__111=111;
    public static final int T__81=81;
    public static final int T__110=110;
    public static final int RULE_ESCAPE_JSP=10;
    public static final int T__82=82;
    public static final int T__113=113;
    public static final int T__83=83;
    public static final int T__112=112;
    public static final int RULE_WS=7;
    public static final int T__88=88;
    public static final int T__108=108;
    public static final int T__89=89;
    public static final int T__107=107;
    public static final int T__109=109;
    public static final int T__84=84;
    public static final int T__104=104;
    public static final int T__85=85;
    public static final int T__103=103;
    public static final int T__86=86;
    public static final int T__106=106;
    public static final int T__87=87;
    public static final int T__105=105;

    // delegates
    // delegators


        public InternalRDLParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalRDLParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalRDLParser.tokenNames; }
    public String getGrammarFileName() { return "InternalRDL.g"; }



     	private RDLGrammarAccess grammarAccess;

        public InternalRDLParser(TokenStream input, RDLGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }

        @Override
        protected String getFirstRuleName() {
        	return "Root";
       	}

       	@Override
       	protected RDLGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}




    // $ANTLR start "entryRuleRoot"
    // InternalRDL.g:65:1: entryRuleRoot returns [EObject current=null] : iv_ruleRoot= ruleRoot EOF ;
    public final EObject entryRuleRoot() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoot = null;


        try {
            // InternalRDL.g:65:45: (iv_ruleRoot= ruleRoot EOF )
            // InternalRDL.g:66:2: iv_ruleRoot= ruleRoot EOF
            {
             newCompositeNode(grammarAccess.getRootRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleRoot=ruleRoot();

            state._fsp--;

             current =iv_ruleRoot; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRoot"


    // $ANTLR start "ruleRoot"
    // InternalRDL.g:72:1: ruleRoot returns [EObject current=null] : ( ( (lv_includes_0_0= ruleInclude ) ) | ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) ) | ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) ) | ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) ) | ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) ) )* ;
    public final EObject ruleRoot() throws RecognitionException {
        EObject current = null;

        EObject lv_includes_0_0 = null;

        EObject lv_componentDefinitions_1_0 = null;

        EObject lv_enumDefinitions_2_0 = null;

        EObject lv_namedInstantiations_3_0 = null;

        EObject lv_propertyAssignments_4_0 = null;

        EObject lv_propertyDefinitions_5_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:78:2: ( ( ( (lv_includes_0_0= ruleInclude ) ) | ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) ) | ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) ) | ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) ) | ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) ) )* )
            // InternalRDL.g:79:2: ( ( (lv_includes_0_0= ruleInclude ) ) | ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) ) | ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) ) | ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) ) | ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) ) )*
            {
            // InternalRDL.g:79:2: ( ( (lv_includes_0_0= ruleInclude ) ) | ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) ) | ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) ) | ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) ) | ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) ) )*
            loop1:
            do {
                int alt1=7;
                alt1 = dfa1.predict(input);
                switch (alt1) {
            	case 1 :
            	    // InternalRDL.g:80:3: ( (lv_includes_0_0= ruleInclude ) )
            	    {
            	    // InternalRDL.g:80:3: ( (lv_includes_0_0= ruleInclude ) )
            	    // InternalRDL.g:81:4: (lv_includes_0_0= ruleInclude )
            	    {
            	    // InternalRDL.g:81:4: (lv_includes_0_0= ruleInclude )
            	    // InternalRDL.g:82:5: lv_includes_0_0= ruleInclude
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getIncludesIncludeParserRuleCall_0_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_includes_0_0=ruleInclude();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"includes",
            	    						lv_includes_0_0,
            	    						"com.minres.rdl.RDL.Include");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // InternalRDL.g:100:3: ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) )
            	    {
            	    // InternalRDL.g:100:3: ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) )
            	    // InternalRDL.g:101:4: (lv_componentDefinitions_1_0= ruleComponentDefinition )
            	    {
            	    // InternalRDL.g:101:4: (lv_componentDefinitions_1_0= ruleComponentDefinition )
            	    // InternalRDL.g:102:5: lv_componentDefinitions_1_0= ruleComponentDefinition
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_1_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_componentDefinitions_1_0=ruleComponentDefinition();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"componentDefinitions",
            	    						lv_componentDefinitions_1_0,
            	    						"com.minres.rdl.RDL.ComponentDefinition");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // InternalRDL.g:120:3: ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) )
            	    {
            	    // InternalRDL.g:120:3: ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) )
            	    // InternalRDL.g:121:4: (lv_enumDefinitions_2_0= ruleEnumDefinition )
            	    {
            	    // InternalRDL.g:121:4: (lv_enumDefinitions_2_0= ruleEnumDefinition )
            	    // InternalRDL.g:122:5: lv_enumDefinitions_2_0= ruleEnumDefinition
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_2_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_enumDefinitions_2_0=ruleEnumDefinition();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"enumDefinitions",
            	    						lv_enumDefinitions_2_0,
            	    						"com.minres.rdl.RDL.EnumDefinition");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // InternalRDL.g:140:3: ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) )
            	    {
            	    // InternalRDL.g:140:3: ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) )
            	    // InternalRDL.g:141:4: (lv_namedInstantiations_3_0= ruleNamedInstantiation )
            	    {
            	    // InternalRDL.g:141:4: (lv_namedInstantiations_3_0= ruleNamedInstantiation )
            	    // InternalRDL.g:142:5: lv_namedInstantiations_3_0= ruleNamedInstantiation
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getNamedInstantiationsNamedInstantiationParserRuleCall_3_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_namedInstantiations_3_0=ruleNamedInstantiation();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"namedInstantiations",
            	    						lv_namedInstantiations_3_0,
            	    						"com.minres.rdl.RDL.NamedInstantiation");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // InternalRDL.g:160:3: ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) )
            	    {
            	    // InternalRDL.g:160:3: ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) )
            	    // InternalRDL.g:161:4: (lv_propertyAssignments_4_0= rulePropertyAssignment )
            	    {
            	    // InternalRDL.g:161:4: (lv_propertyAssignments_4_0= rulePropertyAssignment )
            	    // InternalRDL.g:162:5: lv_propertyAssignments_4_0= rulePropertyAssignment
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_4_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_propertyAssignments_4_0=rulePropertyAssignment();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"propertyAssignments",
            	    						lv_propertyAssignments_4_0,
            	    						"com.minres.rdl.RDL.PropertyAssignment");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // InternalRDL.g:180:3: ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) )
            	    {
            	    // InternalRDL.g:180:3: ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) )
            	    // InternalRDL.g:181:4: (lv_propertyDefinitions_5_0= rulePropertyDefinition )
            	    {
            	    // InternalRDL.g:181:4: (lv_propertyDefinitions_5_0= rulePropertyDefinition )
            	    // InternalRDL.g:182:5: lv_propertyDefinitions_5_0= rulePropertyDefinition
            	    {

            	    					newCompositeNode(grammarAccess.getRootAccess().getPropertyDefinitionsPropertyDefinitionParserRuleCall_5_0());
            	    				
            	    pushFollow(FOLLOW_3);
            	    lv_propertyDefinitions_5_0=rulePropertyDefinition();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getRootRule());
            	    					}
            	    					add(
            	    						current,
            	    						"propertyDefinitions",
            	    						lv_propertyDefinitions_5_0,
            	    						"com.minres.rdl.RDL.PropertyDefinition");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRoot"


    // $ANTLR start "entryRuleInclude"
    // InternalRDL.g:203:1: entryRuleInclude returns [EObject current=null] : iv_ruleInclude= ruleInclude EOF ;
    public final EObject entryRuleInclude() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInclude = null;


        try {
            // InternalRDL.g:203:48: (iv_ruleInclude= ruleInclude EOF )
            // InternalRDL.g:204:2: iv_ruleInclude= ruleInclude EOF
            {
             newCompositeNode(grammarAccess.getIncludeRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleInclude=ruleInclude();

            state._fsp--;

             current =iv_ruleInclude; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInclude"


    // $ANTLR start "ruleInclude"
    // InternalRDL.g:210:1: ruleInclude returns [EObject current=null] : (otherlv_0= '`include' ( (lv_importURI_1_0= RULE_STR ) ) ) ;
    public final EObject ruleInclude() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;


        	enterRule();

        try {
            // InternalRDL.g:216:2: ( (otherlv_0= '`include' ( (lv_importURI_1_0= RULE_STR ) ) ) )
            // InternalRDL.g:217:2: (otherlv_0= '`include' ( (lv_importURI_1_0= RULE_STR ) ) )
            {
            // InternalRDL.g:217:2: (otherlv_0= '`include' ( (lv_importURI_1_0= RULE_STR ) ) )
            // InternalRDL.g:218:3: otherlv_0= '`include' ( (lv_importURI_1_0= RULE_STR ) )
            {
            otherlv_0=(Token)match(input,12,FOLLOW_4); 

            			newLeafNode(otherlv_0, grammarAccess.getIncludeAccess().getIncludeKeyword_0());
            		
            // InternalRDL.g:222:3: ( (lv_importURI_1_0= RULE_STR ) )
            // InternalRDL.g:223:4: (lv_importURI_1_0= RULE_STR )
            {
            // InternalRDL.g:223:4: (lv_importURI_1_0= RULE_STR )
            // InternalRDL.g:224:5: lv_importURI_1_0= RULE_STR
            {
            lv_importURI_1_0=(Token)match(input,RULE_STR,FOLLOW_2); 

            					newLeafNode(lv_importURI_1_0, grammarAccess.getIncludeAccess().getImportURISTRTerminalRuleCall_1_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getIncludeRule());
            					}
            					setWithLastConsumed(
            						current,
            						"importURI",
            						lv_importURI_1_0,
            						"com.minres.rdl.RDL.STR");
            				

            }


            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInclude"


    // $ANTLR start "entryRulePropertyDefinition"
    // InternalRDL.g:244:1: entryRulePropertyDefinition returns [EObject current=null] : iv_rulePropertyDefinition= rulePropertyDefinition EOF ;
    public final EObject entryRulePropertyDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyDefinition = null;


        try {
            // InternalRDL.g:244:59: (iv_rulePropertyDefinition= rulePropertyDefinition EOF )
            // InternalRDL.g:245:2: iv_rulePropertyDefinition= rulePropertyDefinition EOF
            {
             newCompositeNode(grammarAccess.getPropertyDefinitionRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyDefinition=rulePropertyDefinition();

            state._fsp--;

             current =iv_rulePropertyDefinition; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyDefinition"


    // $ANTLR start "rulePropertyDefinition"
    // InternalRDL.g:251:1: rulePropertyDefinition returns [EObject current=null] : (otherlv_0= 'property' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) ) otherlv_33= '}' otherlv_34= ';' ) ;
    public final EObject rulePropertyDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_18=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_23=null;
        Token otherlv_24=null;
        Token otherlv_26=null;
        Token otherlv_29=null;
        Token otherlv_30=null;
        Token otherlv_32=null;
        Token otherlv_33=null;
        Token otherlv_34=null;
        Enumerator lv_type_5_0 = null;

        EObject lv_usage_7_0 = null;

        EObject lv_default_8_0 = null;

        EObject lv_default_9_0 = null;

        EObject lv_usage_10_0 = null;

        EObject lv_usage_11_0 = null;

        Enumerator lv_type_14_0 = null;

        EObject lv_default_16_0 = null;

        EObject lv_default_17_0 = null;

        Enumerator lv_type_20_0 = null;

        EObject lv_default_22_0 = null;

        Enumerator lv_type_25_0 = null;

        EObject lv_usage_27_0 = null;

        EObject lv_usage_28_0 = null;

        Enumerator lv_type_31_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:257:2: ( (otherlv_0= 'property' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) ) otherlv_33= '}' otherlv_34= ';' ) )
            // InternalRDL.g:258:2: (otherlv_0= 'property' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) ) otherlv_33= '}' otherlv_34= ';' )
            {
            // InternalRDL.g:258:2: (otherlv_0= 'property' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) ) otherlv_33= '}' otherlv_34= ';' )
            // InternalRDL.g:259:3: otherlv_0= 'property' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) ) otherlv_33= '}' otherlv_34= ';'
            {
            otherlv_0=(Token)match(input,13,FOLLOW_5); 

            			newLeafNode(otherlv_0, grammarAccess.getPropertyDefinitionAccess().getPropertyKeyword_0());
            		
            // InternalRDL.g:263:3: ( (lv_name_1_0= RULE_ID ) )
            // InternalRDL.g:264:4: (lv_name_1_0= RULE_ID )
            {
            // InternalRDL.g:264:4: (lv_name_1_0= RULE_ID )
            // InternalRDL.g:265:5: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_6); 

            					newLeafNode(lv_name_1_0, grammarAccess.getPropertyDefinitionAccess().getNameIDTerminalRuleCall_1_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getPropertyDefinitionRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_1_0,
            						"com.minres.rdl.RDL.ID");
            				

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_7); 

            			newLeafNode(otherlv_2, grammarAccess.getPropertyDefinitionAccess().getLeftCurlyBracketKeyword_2());
            		
            // InternalRDL.g:285:3: ( (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) ) | ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) ) | ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) ) )
            int alt7=3;
            switch ( input.LA(1) ) {
            case 15:
                {
                alt7=1;
                }
                break;
            case 22:
                {
                alt7=2;
                }
                break;
            case 19:
                {
                alt7=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }

            switch (alt7) {
                case 1 :
                    // InternalRDL.g:286:4: (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) )
                    {
                    // InternalRDL.g:286:4: (otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) ) )
                    // InternalRDL.g:287:5: otherlv_3= 'type' otherlv_4= '=' ( (lv_type_5_0= rulePropertyTypeName ) ) otherlv_6= ';' ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) )
                    {
                    otherlv_3=(Token)match(input,15,FOLLOW_8); 

                    					newLeafNode(otherlv_3, grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_0_0());
                    				
                    otherlv_4=(Token)match(input,16,FOLLOW_9); 

                    					newLeafNode(otherlv_4, grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_0_1());
                    				
                    // InternalRDL.g:295:5: ( (lv_type_5_0= rulePropertyTypeName ) )
                    // InternalRDL.g:296:6: (lv_type_5_0= rulePropertyTypeName )
                    {
                    // InternalRDL.g:296:6: (lv_type_5_0= rulePropertyTypeName )
                    // InternalRDL.g:297:7: lv_type_5_0= rulePropertyTypeName
                    {

                    							newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_0_2_0());
                    						
                    pushFollow(FOLLOW_10);
                    lv_type_5_0=rulePropertyTypeName();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                    							}
                    							set(
                    								current,
                    								"type",
                    								lv_type_5_0,
                    								"com.minres.rdl.RDL.PropertyTypeName");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    otherlv_6=(Token)match(input,17,FOLLOW_7); 

                    					newLeafNode(otherlv_6, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_0_3());
                    				
                    // InternalRDL.g:318:5: ( ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? ) | ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) ) )
                    int alt3=2;
                    int LA3_0 = input.LA(1);

                    if ( (LA3_0==22) ) {
                        alt3=1;
                    }
                    else if ( (LA3_0==19) ) {
                        alt3=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 3, 0, input);

                        throw nvae;
                    }
                    switch (alt3) {
                        case 1 :
                            // InternalRDL.g:319:6: ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? )
                            {
                            // InternalRDL.g:319:6: ( ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )? )
                            // InternalRDL.g:320:7: ( (lv_usage_7_0= rulePropertyUsage ) ) ( (lv_default_8_0= rulePropertyDefault ) )?
                            {
                            // InternalRDL.g:320:7: ( (lv_usage_7_0= rulePropertyUsage ) )
                            // InternalRDL.g:321:8: (lv_usage_7_0= rulePropertyUsage )
                            {
                            // InternalRDL.g:321:8: (lv_usage_7_0= rulePropertyUsage )
                            // InternalRDL.g:322:9: lv_usage_7_0= rulePropertyUsage
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_0_0_0());
                            								
                            pushFollow(FOLLOW_11);
                            lv_usage_7_0=rulePropertyUsage();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"usage",
                            										lv_usage_7_0,
                            										"com.minres.rdl.RDL.PropertyUsage");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            // InternalRDL.g:339:7: ( (lv_default_8_0= rulePropertyDefault ) )?
                            int alt2=2;
                            int LA2_0 = input.LA(1);

                            if ( (LA2_0==19) ) {
                                alt2=1;
                            }
                            switch (alt2) {
                                case 1 :
                                    // InternalRDL.g:340:8: (lv_default_8_0= rulePropertyDefault )
                                    {
                                    // InternalRDL.g:340:8: (lv_default_8_0= rulePropertyDefault )
                                    // InternalRDL.g:341:9: lv_default_8_0= rulePropertyDefault
                                    {

                                    									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_0_1_0());
                                    								
                                    pushFollow(FOLLOW_12);
                                    lv_default_8_0=rulePropertyDefault();

                                    state._fsp--;


                                    									if (current==null) {
                                    										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                                    									}
                                    									set(
                                    										current,
                                    										"default",
                                    										lv_default_8_0,
                                    										"com.minres.rdl.RDL.PropertyDefault");
                                    									afterParserOrEnumRuleCall();
                                    								

                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalRDL.g:360:6: ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) )
                            {
                            // InternalRDL.g:360:6: ( ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) ) )
                            // InternalRDL.g:361:7: ( (lv_default_9_0= rulePropertyDefault ) ) ( (lv_usage_10_0= rulePropertyUsage ) )
                            {
                            // InternalRDL.g:361:7: ( (lv_default_9_0= rulePropertyDefault ) )
                            // InternalRDL.g:362:8: (lv_default_9_0= rulePropertyDefault )
                            {
                            // InternalRDL.g:362:8: (lv_default_9_0= rulePropertyDefault )
                            // InternalRDL.g:363:9: lv_default_9_0= rulePropertyDefault
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_0_4_1_0_0());
                            								
                            pushFollow(FOLLOW_13);
                            lv_default_9_0=rulePropertyDefault();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"default",
                            										lv_default_9_0,
                            										"com.minres.rdl.RDL.PropertyDefault");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            // InternalRDL.g:380:7: ( (lv_usage_10_0= rulePropertyUsage ) )
                            // InternalRDL.g:381:8: (lv_usage_10_0= rulePropertyUsage )
                            {
                            // InternalRDL.g:381:8: (lv_usage_10_0= rulePropertyUsage )
                            // InternalRDL.g:382:9: lv_usage_10_0= rulePropertyUsage
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_0_4_1_1_0());
                            								
                            pushFollow(FOLLOW_12);
                            lv_usage_10_0=rulePropertyUsage();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"usage",
                            										lv_usage_10_0,
                            										"com.minres.rdl.RDL.PropertyUsage");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:403:4: ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) )
                    {
                    // InternalRDL.g:403:4: ( ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) ) )
                    // InternalRDL.g:404:5: ( (lv_usage_11_0= rulePropertyUsage ) ) ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) )
                    {
                    // InternalRDL.g:404:5: ( (lv_usage_11_0= rulePropertyUsage ) )
                    // InternalRDL.g:405:6: (lv_usage_11_0= rulePropertyUsage )
                    {
                    // InternalRDL.g:405:6: (lv_usage_11_0= rulePropertyUsage )
                    // InternalRDL.g:406:7: lv_usage_11_0= rulePropertyUsage
                    {

                    							newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_1_0_0());
                    						
                    pushFollow(FOLLOW_7);
                    lv_usage_11_0=rulePropertyUsage();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                    							}
                    							set(
                    								current,
                    								"usage",
                    								lv_usage_11_0,
                    								"com.minres.rdl.RDL.PropertyUsage");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalRDL.g:423:5: ( (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? ) | ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' ) )
                    int alt5=2;
                    int LA5_0 = input.LA(1);

                    if ( (LA5_0==15) ) {
                        alt5=1;
                    }
                    else if ( (LA5_0==19) ) {
                        alt5=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 5, 0, input);

                        throw nvae;
                    }
                    switch (alt5) {
                        case 1 :
                            // InternalRDL.g:424:6: (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? )
                            {
                            // InternalRDL.g:424:6: (otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )? )
                            // InternalRDL.g:425:7: otherlv_12= 'type' otherlv_13= '=' ( (lv_type_14_0= rulePropertyTypeName ) ) otherlv_15= ';' ( (lv_default_16_0= rulePropertyDefault ) )?
                            {
                            otherlv_12=(Token)match(input,15,FOLLOW_8); 

                            							newLeafNode(otherlv_12, grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_0_0());
                            						
                            otherlv_13=(Token)match(input,16,FOLLOW_9); 

                            							newLeafNode(otherlv_13, grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_0_1());
                            						
                            // InternalRDL.g:433:7: ( (lv_type_14_0= rulePropertyTypeName ) )
                            // InternalRDL.g:434:8: (lv_type_14_0= rulePropertyTypeName )
                            {
                            // InternalRDL.g:434:8: (lv_type_14_0= rulePropertyTypeName )
                            // InternalRDL.g:435:9: lv_type_14_0= rulePropertyTypeName
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_0_2_0());
                            								
                            pushFollow(FOLLOW_10);
                            lv_type_14_0=rulePropertyTypeName();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"type",
                            										lv_type_14_0,
                            										"com.minres.rdl.RDL.PropertyTypeName");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_15=(Token)match(input,17,FOLLOW_11); 

                            							newLeafNode(otherlv_15, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_0_3());
                            						
                            // InternalRDL.g:456:7: ( (lv_default_16_0= rulePropertyDefault ) )?
                            int alt4=2;
                            int LA4_0 = input.LA(1);

                            if ( (LA4_0==19) ) {
                                alt4=1;
                            }
                            switch (alt4) {
                                case 1 :
                                    // InternalRDL.g:457:8: (lv_default_16_0= rulePropertyDefault )
                                    {
                                    // InternalRDL.g:457:8: (lv_default_16_0= rulePropertyDefault )
                                    // InternalRDL.g:458:9: lv_default_16_0= rulePropertyDefault
                                    {

                                    									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_0_4_0());
                                    								
                                    pushFollow(FOLLOW_12);
                                    lv_default_16_0=rulePropertyDefault();

                                    state._fsp--;


                                    									if (current==null) {
                                    										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                                    									}
                                    									set(
                                    										current,
                                    										"default",
                                    										lv_default_16_0,
                                    										"com.minres.rdl.RDL.PropertyDefault");
                                    									afterParserOrEnumRuleCall();
                                    								

                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalRDL.g:477:6: ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' )
                            {
                            // InternalRDL.g:477:6: ( ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';' )
                            // InternalRDL.g:478:7: ( (lv_default_17_0= rulePropertyDefault ) ) otherlv_18= 'type' otherlv_19= '=' ( (lv_type_20_0= rulePropertyTypeName ) ) otherlv_21= ';'
                            {
                            // InternalRDL.g:478:7: ( (lv_default_17_0= rulePropertyDefault ) )
                            // InternalRDL.g:479:8: (lv_default_17_0= rulePropertyDefault )
                            {
                            // InternalRDL.g:479:8: (lv_default_17_0= rulePropertyDefault )
                            // InternalRDL.g:480:9: lv_default_17_0= rulePropertyDefault
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_1_1_1_0_0());
                            								
                            pushFollow(FOLLOW_14);
                            lv_default_17_0=rulePropertyDefault();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"default",
                            										lv_default_17_0,
                            										"com.minres.rdl.RDL.PropertyDefault");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_18=(Token)match(input,15,FOLLOW_8); 

                            							newLeafNode(otherlv_18, grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_1_1_1_1());
                            						
                            otherlv_19=(Token)match(input,16,FOLLOW_9); 

                            							newLeafNode(otherlv_19, grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_1_1_1_2());
                            						
                            // InternalRDL.g:505:7: ( (lv_type_20_0= rulePropertyTypeName ) )
                            // InternalRDL.g:506:8: (lv_type_20_0= rulePropertyTypeName )
                            {
                            // InternalRDL.g:506:8: (lv_type_20_0= rulePropertyTypeName )
                            // InternalRDL.g:507:9: lv_type_20_0= rulePropertyTypeName
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_1_1_1_3_0());
                            								
                            pushFollow(FOLLOW_10);
                            lv_type_20_0=rulePropertyTypeName();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"type",
                            										lv_type_20_0,
                            										"com.minres.rdl.RDL.PropertyTypeName");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_21=(Token)match(input,17,FOLLOW_12); 

                            							newLeafNode(otherlv_21, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_1_1_1_4());
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:532:4: ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) )
                    {
                    // InternalRDL.g:532:4: ( ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) ) )
                    // InternalRDL.g:533:5: ( (lv_default_22_0= rulePropertyDefault ) ) ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) )
                    {
                    // InternalRDL.g:533:5: ( (lv_default_22_0= rulePropertyDefault ) )
                    // InternalRDL.g:534:6: (lv_default_22_0= rulePropertyDefault )
                    {
                    // InternalRDL.g:534:6: (lv_default_22_0= rulePropertyDefault )
                    // InternalRDL.g:535:7: lv_default_22_0= rulePropertyDefault
                    {

                    							newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getDefaultPropertyDefaultParserRuleCall_3_2_0_0());
                    						
                    pushFollow(FOLLOW_15);
                    lv_default_22_0=rulePropertyDefault();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                    							}
                    							set(
                    								current,
                    								"default",
                    								lv_default_22_0,
                    								"com.minres.rdl.RDL.PropertyDefault");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    // InternalRDL.g:552:5: ( (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) ) | ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' ) )
                    int alt6=2;
                    int LA6_0 = input.LA(1);

                    if ( (LA6_0==15) ) {
                        alt6=1;
                    }
                    else if ( (LA6_0==22) ) {
                        alt6=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 6, 0, input);

                        throw nvae;
                    }
                    switch (alt6) {
                        case 1 :
                            // InternalRDL.g:553:6: (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) )
                            {
                            // InternalRDL.g:553:6: (otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) ) )
                            // InternalRDL.g:554:7: otherlv_23= 'type' otherlv_24= '=' ( (lv_type_25_0= rulePropertyTypeName ) ) otherlv_26= ';' ( (lv_usage_27_0= rulePropertyUsage ) )
                            {
                            otherlv_23=(Token)match(input,15,FOLLOW_8); 

                            							newLeafNode(otherlv_23, grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_0_0());
                            						
                            otherlv_24=(Token)match(input,16,FOLLOW_9); 

                            							newLeafNode(otherlv_24, grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_0_1());
                            						
                            // InternalRDL.g:562:7: ( (lv_type_25_0= rulePropertyTypeName ) )
                            // InternalRDL.g:563:8: (lv_type_25_0= rulePropertyTypeName )
                            {
                            // InternalRDL.g:563:8: (lv_type_25_0= rulePropertyTypeName )
                            // InternalRDL.g:564:9: lv_type_25_0= rulePropertyTypeName
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_0_2_0());
                            								
                            pushFollow(FOLLOW_10);
                            lv_type_25_0=rulePropertyTypeName();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"type",
                            										lv_type_25_0,
                            										"com.minres.rdl.RDL.PropertyTypeName");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_26=(Token)match(input,17,FOLLOW_13); 

                            							newLeafNode(otherlv_26, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_0_3());
                            						
                            // InternalRDL.g:585:7: ( (lv_usage_27_0= rulePropertyUsage ) )
                            // InternalRDL.g:586:8: (lv_usage_27_0= rulePropertyUsage )
                            {
                            // InternalRDL.g:586:8: (lv_usage_27_0= rulePropertyUsage )
                            // InternalRDL.g:587:9: lv_usage_27_0= rulePropertyUsage
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_0_4_0());
                            								
                            pushFollow(FOLLOW_12);
                            lv_usage_27_0=rulePropertyUsage();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"usage",
                            										lv_usage_27_0,
                            										"com.minres.rdl.RDL.PropertyUsage");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalRDL.g:606:6: ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' )
                            {
                            // InternalRDL.g:606:6: ( ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';' )
                            // InternalRDL.g:607:7: ( (lv_usage_28_0= rulePropertyUsage ) ) otherlv_29= 'type' otherlv_30= '=' ( (lv_type_31_0= rulePropertyTypeName ) ) otherlv_32= ';'
                            {
                            // InternalRDL.g:607:7: ( (lv_usage_28_0= rulePropertyUsage ) )
                            // InternalRDL.g:608:8: (lv_usage_28_0= rulePropertyUsage )
                            {
                            // InternalRDL.g:608:8: (lv_usage_28_0= rulePropertyUsage )
                            // InternalRDL.g:609:9: lv_usage_28_0= rulePropertyUsage
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getUsagePropertyUsageParserRuleCall_3_2_1_1_0_0());
                            								
                            pushFollow(FOLLOW_14);
                            lv_usage_28_0=rulePropertyUsage();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"usage",
                            										lv_usage_28_0,
                            										"com.minres.rdl.RDL.PropertyUsage");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_29=(Token)match(input,15,FOLLOW_8); 

                            							newLeafNode(otherlv_29, grammarAccess.getPropertyDefinitionAccess().getTypeKeyword_3_2_1_1_1());
                            						
                            otherlv_30=(Token)match(input,16,FOLLOW_9); 

                            							newLeafNode(otherlv_30, grammarAccess.getPropertyDefinitionAccess().getEqualsSignKeyword_3_2_1_1_2());
                            						
                            // InternalRDL.g:634:7: ( (lv_type_31_0= rulePropertyTypeName ) )
                            // InternalRDL.g:635:8: (lv_type_31_0= rulePropertyTypeName )
                            {
                            // InternalRDL.g:635:8: (lv_type_31_0= rulePropertyTypeName )
                            // InternalRDL.g:636:9: lv_type_31_0= rulePropertyTypeName
                            {

                            									newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getTypePropertyTypeNameEnumRuleCall_3_2_1_1_3_0());
                            								
                            pushFollow(FOLLOW_10);
                            lv_type_31_0=rulePropertyTypeName();

                            state._fsp--;


                            									if (current==null) {
                            										current = createModelElementForParent(grammarAccess.getPropertyDefinitionRule());
                            									}
                            									set(
                            										current,
                            										"type",
                            										lv_type_31_0,
                            										"com.minres.rdl.RDL.PropertyTypeName");
                            									afterParserOrEnumRuleCall();
                            								

                            }


                            }

                            otherlv_32=(Token)match(input,17,FOLLOW_12); 

                            							newLeafNode(otherlv_32, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_3_2_1_1_4());
                            						

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            otherlv_33=(Token)match(input,18,FOLLOW_10); 

            			newLeafNode(otherlv_33, grammarAccess.getPropertyDefinitionAccess().getRightCurlyBracketKeyword_4());
            		
            otherlv_34=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_34, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_5());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyDefinition"


    // $ANTLR start "entryRulePropertyDefault"
    // InternalRDL.g:673:1: entryRulePropertyDefault returns [EObject current=null] : iv_rulePropertyDefault= rulePropertyDefault EOF ;
    public final EObject entryRulePropertyDefault() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyDefault = null;


        try {
            // InternalRDL.g:673:56: (iv_rulePropertyDefault= rulePropertyDefault EOF )
            // InternalRDL.g:674:2: iv_rulePropertyDefault= rulePropertyDefault EOF
            {
             newCompositeNode(grammarAccess.getPropertyDefaultRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyDefault=rulePropertyDefault();

            state._fsp--;

             current =iv_rulePropertyDefault; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyDefault"


    // $ANTLR start "rulePropertyDefault"
    // InternalRDL.g:680:1: rulePropertyDefault returns [EObject current=null] : (otherlv_0= 'default' otherlv_1= '=' ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) ) otherlv_6= ';' ) ;
    public final EObject rulePropertyDefault() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_string_2_0=null;
        Token lv_value_3_0=null;
        Token lv_string_4_0=null;
        Token lv_string_5_0=null;
        Token otherlv_6=null;


        	enterRule();

        try {
            // InternalRDL.g:686:2: ( (otherlv_0= 'default' otherlv_1= '=' ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) ) otherlv_6= ';' ) )
            // InternalRDL.g:687:2: (otherlv_0= 'default' otherlv_1= '=' ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) ) otherlv_6= ';' )
            {
            // InternalRDL.g:687:2: (otherlv_0= 'default' otherlv_1= '=' ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) ) otherlv_6= ';' )
            // InternalRDL.g:688:3: otherlv_0= 'default' otherlv_1= '=' ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) ) otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_8); 

            			newLeafNode(otherlv_0, grammarAccess.getPropertyDefaultAccess().getDefaultKeyword_0());
            		
            otherlv_1=(Token)match(input,16,FOLLOW_16); 

            			newLeafNode(otherlv_1, grammarAccess.getPropertyDefaultAccess().getEqualsSignKeyword_1());
            		
            // InternalRDL.g:696:3: ( ( (lv_string_2_0= RULE_STR ) ) | ( (lv_value_3_0= RULE_NUM ) ) | ( (lv_string_4_0= 'true' ) ) | ( (lv_string_5_0= 'false' ) ) )
            int alt8=4;
            switch ( input.LA(1) ) {
            case RULE_STR:
                {
                alt8=1;
                }
                break;
            case RULE_NUM:
                {
                alt8=2;
                }
                break;
            case 20:
                {
                alt8=3;
                }
                break;
            case 21:
                {
                alt8=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }

            switch (alt8) {
                case 1 :
                    // InternalRDL.g:697:4: ( (lv_string_2_0= RULE_STR ) )
                    {
                    // InternalRDL.g:697:4: ( (lv_string_2_0= RULE_STR ) )
                    // InternalRDL.g:698:5: (lv_string_2_0= RULE_STR )
                    {
                    // InternalRDL.g:698:5: (lv_string_2_0= RULE_STR )
                    // InternalRDL.g:699:6: lv_string_2_0= RULE_STR
                    {
                    lv_string_2_0=(Token)match(input,RULE_STR,FOLLOW_10); 

                    						newLeafNode(lv_string_2_0, grammarAccess.getPropertyDefaultAccess().getStringSTRTerminalRuleCall_2_0_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropertyDefaultRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"string",
                    							lv_string_2_0,
                    							"com.minres.rdl.RDL.STR");
                    					

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:716:4: ( (lv_value_3_0= RULE_NUM ) )
                    {
                    // InternalRDL.g:716:4: ( (lv_value_3_0= RULE_NUM ) )
                    // InternalRDL.g:717:5: (lv_value_3_0= RULE_NUM )
                    {
                    // InternalRDL.g:717:5: (lv_value_3_0= RULE_NUM )
                    // InternalRDL.g:718:6: lv_value_3_0= RULE_NUM
                    {
                    lv_value_3_0=(Token)match(input,RULE_NUM,FOLLOW_10); 

                    						newLeafNode(lv_value_3_0, grammarAccess.getPropertyDefaultAccess().getValueNUMTerminalRuleCall_2_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropertyDefaultRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"value",
                    							lv_value_3_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:735:4: ( (lv_string_4_0= 'true' ) )
                    {
                    // InternalRDL.g:735:4: ( (lv_string_4_0= 'true' ) )
                    // InternalRDL.g:736:5: (lv_string_4_0= 'true' )
                    {
                    // InternalRDL.g:736:5: (lv_string_4_0= 'true' )
                    // InternalRDL.g:737:6: lv_string_4_0= 'true'
                    {
                    lv_string_4_0=(Token)match(input,20,FOLLOW_10); 

                    						newLeafNode(lv_string_4_0, grammarAccess.getPropertyDefaultAccess().getStringTrueKeyword_2_2_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropertyDefaultRule());
                    						}
                    						setWithLastConsumed(current, "string", lv_string_4_0, "true");
                    					

                    }


                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:750:4: ( (lv_string_5_0= 'false' ) )
                    {
                    // InternalRDL.g:750:4: ( (lv_string_5_0= 'false' ) )
                    // InternalRDL.g:751:5: (lv_string_5_0= 'false' )
                    {
                    // InternalRDL.g:751:5: (lv_string_5_0= 'false' )
                    // InternalRDL.g:752:6: lv_string_5_0= 'false'
                    {
                    lv_string_5_0=(Token)match(input,21,FOLLOW_10); 

                    						newLeafNode(lv_string_5_0, grammarAccess.getPropertyDefaultAccess().getStringFalseKeyword_2_3_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropertyDefaultRule());
                    						}
                    						setWithLastConsumed(current, "string", lv_string_5_0, "false");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getPropertyDefaultAccess().getSemicolonKeyword_3());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyDefault"


    // $ANTLR start "entryRulePropertyUsage"
    // InternalRDL.g:773:1: entryRulePropertyUsage returns [EObject current=null] : iv_rulePropertyUsage= rulePropertyUsage EOF ;
    public final EObject entryRulePropertyUsage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyUsage = null;


        try {
            // InternalRDL.g:773:54: (iv_rulePropertyUsage= rulePropertyUsage EOF )
            // InternalRDL.g:774:2: iv_rulePropertyUsage= rulePropertyUsage EOF
            {
             newCompositeNode(grammarAccess.getPropertyUsageRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyUsage=rulePropertyUsage();

            state._fsp--;

             current =iv_rulePropertyUsage; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyUsage"


    // $ANTLR start "rulePropertyUsage"
    // InternalRDL.g:780:1: rulePropertyUsage returns [EObject current=null] : (otherlv_0= 'component' otherlv_1= '=' ( (lv_components_2_0= rulePropertyComponent ) ) (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )* otherlv_5= ';' ) ;
    public final EObject rulePropertyUsage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Enumerator lv_components_2_0 = null;

        Enumerator lv_components_4_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:786:2: ( (otherlv_0= 'component' otherlv_1= '=' ( (lv_components_2_0= rulePropertyComponent ) ) (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )* otherlv_5= ';' ) )
            // InternalRDL.g:787:2: (otherlv_0= 'component' otherlv_1= '=' ( (lv_components_2_0= rulePropertyComponent ) ) (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )* otherlv_5= ';' )
            {
            // InternalRDL.g:787:2: (otherlv_0= 'component' otherlv_1= '=' ( (lv_components_2_0= rulePropertyComponent ) ) (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )* otherlv_5= ';' )
            // InternalRDL.g:788:3: otherlv_0= 'component' otherlv_1= '=' ( (lv_components_2_0= rulePropertyComponent ) ) (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )* otherlv_5= ';'
            {
            otherlv_0=(Token)match(input,22,FOLLOW_8); 

            			newLeafNode(otherlv_0, grammarAccess.getPropertyUsageAccess().getComponentKeyword_0());
            		
            otherlv_1=(Token)match(input,16,FOLLOW_17); 

            			newLeafNode(otherlv_1, grammarAccess.getPropertyUsageAccess().getEqualsSignKeyword_1());
            		
            // InternalRDL.g:796:3: ( (lv_components_2_0= rulePropertyComponent ) )
            // InternalRDL.g:797:4: (lv_components_2_0= rulePropertyComponent )
            {
            // InternalRDL.g:797:4: (lv_components_2_0= rulePropertyComponent )
            // InternalRDL.g:798:5: lv_components_2_0= rulePropertyComponent
            {

            					newCompositeNode(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_2_0());
            				
            pushFollow(FOLLOW_18);
            lv_components_2_0=rulePropertyComponent();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getPropertyUsageRule());
            					}
            					add(
            						current,
            						"components",
            						lv_components_2_0,
            						"com.minres.rdl.RDL.PropertyComponent");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:815:3: (otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) ) )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==23) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // InternalRDL.g:816:4: otherlv_3= '|' ( (lv_components_4_0= rulePropertyComponent ) )
            	    {
            	    otherlv_3=(Token)match(input,23,FOLLOW_17); 

            	    				newLeafNode(otherlv_3, grammarAccess.getPropertyUsageAccess().getVerticalLineKeyword_3_0());
            	    			
            	    // InternalRDL.g:820:4: ( (lv_components_4_0= rulePropertyComponent ) )
            	    // InternalRDL.g:821:5: (lv_components_4_0= rulePropertyComponent )
            	    {
            	    // InternalRDL.g:821:5: (lv_components_4_0= rulePropertyComponent )
            	    // InternalRDL.g:822:6: lv_components_4_0= rulePropertyComponent
            	    {

            	    						newCompositeNode(grammarAccess.getPropertyUsageAccess().getComponentsPropertyComponentEnumRuleCall_3_1_0());
            	    					
            	    pushFollow(FOLLOW_18);
            	    lv_components_4_0=rulePropertyComponent();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getPropertyUsageRule());
            	    						}
            	    						add(
            	    							current,
            	    							"components",
            	    							lv_components_4_0,
            	    							"com.minres.rdl.RDL.PropertyComponent");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            otherlv_5=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getPropertyUsageAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyUsage"


    // $ANTLR start "entryRuleComponentDefinition"
    // InternalRDL.g:848:1: entryRuleComponentDefinition returns [EObject current=null] : iv_ruleComponentDefinition= ruleComponentDefinition EOF ;
    public final EObject entryRuleComponentDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentDefinition = null;


        try {
            // InternalRDL.g:848:60: (iv_ruleComponentDefinition= ruleComponentDefinition EOF )
            // InternalRDL.g:849:2: iv_ruleComponentDefinition= ruleComponentDefinition EOF
            {
             newCompositeNode(grammarAccess.getComponentDefinitionRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleComponentDefinition=ruleComponentDefinition();

            state._fsp--;

             current =iv_ruleComponentDefinition; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentDefinition"


    // $ANTLR start "ruleComponentDefinition"
    // InternalRDL.g:855:1: ruleComponentDefinition returns [EObject current=null] : ( ( (lv_type_0_0= ruleComponentDefinitionType ) ) ( (lv_name_1_0= RULE_ID ) )? otherlv_2= '{' ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )* otherlv_7= '}' ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )? otherlv_9= ';' ) ;
    public final EObject ruleComponentDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Enumerator lv_type_0_0 = null;

        EObject lv_componentDefinitions_3_0 = null;

        EObject lv_namedInstantiations_4_0 = null;

        EObject lv_propertyAssignments_5_0 = null;

        EObject lv_enumDefinitions_6_0 = null;

        EObject lv_immediateInstantiation_8_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:861:2: ( ( ( (lv_type_0_0= ruleComponentDefinitionType ) ) ( (lv_name_1_0= RULE_ID ) )? otherlv_2= '{' ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )* otherlv_7= '}' ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )? otherlv_9= ';' ) )
            // InternalRDL.g:862:2: ( ( (lv_type_0_0= ruleComponentDefinitionType ) ) ( (lv_name_1_0= RULE_ID ) )? otherlv_2= '{' ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )* otherlv_7= '}' ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )? otherlv_9= ';' )
            {
            // InternalRDL.g:862:2: ( ( (lv_type_0_0= ruleComponentDefinitionType ) ) ( (lv_name_1_0= RULE_ID ) )? otherlv_2= '{' ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )* otherlv_7= '}' ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )? otherlv_9= ';' )
            // InternalRDL.g:863:3: ( (lv_type_0_0= ruleComponentDefinitionType ) ) ( (lv_name_1_0= RULE_ID ) )? otherlv_2= '{' ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )* otherlv_7= '}' ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )? otherlv_9= ';'
            {
            // InternalRDL.g:863:3: ( (lv_type_0_0= ruleComponentDefinitionType ) )
            // InternalRDL.g:864:4: (lv_type_0_0= ruleComponentDefinitionType )
            {
            // InternalRDL.g:864:4: (lv_type_0_0= ruleComponentDefinitionType )
            // InternalRDL.g:865:5: lv_type_0_0= ruleComponentDefinitionType
            {

            					newCompositeNode(grammarAccess.getComponentDefinitionAccess().getTypeComponentDefinitionTypeEnumRuleCall_0_0());
            				
            pushFollow(FOLLOW_19);
            lv_type_0_0=ruleComponentDefinitionType();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
            					}
            					set(
            						current,
            						"type",
            						lv_type_0_0,
            						"com.minres.rdl.RDL.ComponentDefinitionType");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:882:3: ( (lv_name_1_0= RULE_ID ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==RULE_ID) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // InternalRDL.g:883:4: (lv_name_1_0= RULE_ID )
                    {
                    // InternalRDL.g:883:4: (lv_name_1_0= RULE_ID )
                    // InternalRDL.g:884:5: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_6); 

                    					newLeafNode(lv_name_1_0, grammarAccess.getComponentDefinitionAccess().getNameIDTerminalRuleCall_1_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getComponentDefinitionRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"name",
                    						lv_name_1_0,
                    						"com.minres.rdl.RDL.ID");
                    				

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,14,FOLLOW_20); 

            			newLeafNode(otherlv_2, grammarAccess.getComponentDefinitionAccess().getLeftCurlyBracketKeyword_2());
            		
            // InternalRDL.g:904:3: ( ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) ) | ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) ) | ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) ) )*
            loop11:
            do {
                int alt11=5;
                switch ( input.LA(1) ) {
                case 42:
                case 43:
                case 44:
                case 45:
                case 47:
                    {
                    alt11=1;
                    }
                    break;
                case 24:
                case 26:
                    {
                    alt11=2;
                    }
                    break;
                case 25:
                    {
                    int LA11_4 = input.LA(2);

                    if ( (LA11_4==RULE_ID||LA11_4==26) ) {
                        alt11=2;
                    }
                    else if ( ((LA11_4>=16 && LA11_4<=17)) ) {
                        alt11=3;
                    }


                    }
                    break;
                case RULE_ID:
                    {
                    int LA11_5 = input.LA(2);

                    if ( ((LA11_5>=16 && LA11_5<=17)||(LA11_5>=34 && LA11_5<=35)) ) {
                        alt11=3;
                    }
                    else if ( (LA11_5==RULE_ID) ) {
                        alt11=2;
                    }


                    }
                    break;
                case 19:
                case 37:
                case 38:
                case 49:
                case 50:
                case 51:
                case 52:
                case 53:
                case 54:
                case 55:
                case 56:
                case 57:
                case 58:
                case 59:
                case 60:
                case 61:
                case 62:
                case 63:
                case 64:
                case 65:
                case 66:
                case 67:
                case 68:
                case 69:
                case 70:
                case 71:
                case 72:
                case 73:
                case 74:
                case 75:
                case 76:
                case 77:
                case 78:
                case 79:
                case 80:
                case 81:
                case 82:
                case 83:
                case 84:
                case 85:
                case 86:
                case 87:
                case 88:
                case 89:
                case 90:
                case 91:
                case 92:
                case 93:
                case 94:
                case 95:
                case 96:
                case 97:
                case 98:
                case 99:
                case 100:
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                case 106:
                case 107:
                case 108:
                case 109:
                case 110:
                case 111:
                case 112:
                case 113:
                case 114:
                case 115:
                case 116:
                case 117:
                case 118:
                case 119:
                case 120:
                case 121:
                case 130:
                case 131:
                case 132:
                case 133:
                case 134:
                    {
                    alt11=3;
                    }
                    break;
                case 36:
                    {
                    alt11=4;
                    }
                    break;

                }

                switch (alt11) {
            	case 1 :
            	    // InternalRDL.g:905:4: ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) )
            	    {
            	    // InternalRDL.g:905:4: ( (lv_componentDefinitions_3_0= ruleComponentDefinition ) )
            	    // InternalRDL.g:906:5: (lv_componentDefinitions_3_0= ruleComponentDefinition )
            	    {
            	    // InternalRDL.g:906:5: (lv_componentDefinitions_3_0= ruleComponentDefinition )
            	    // InternalRDL.g:907:6: lv_componentDefinitions_3_0= ruleComponentDefinition
            	    {

            	    						newCompositeNode(grammarAccess.getComponentDefinitionAccess().getComponentDefinitionsComponentDefinitionParserRuleCall_3_0_0());
            	    					
            	    pushFollow(FOLLOW_20);
            	    lv_componentDefinitions_3_0=ruleComponentDefinition();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"componentDefinitions",
            	    							lv_componentDefinitions_3_0,
            	    							"com.minres.rdl.RDL.ComponentDefinition");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // InternalRDL.g:925:4: ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) )
            	    {
            	    // InternalRDL.g:925:4: ( (lv_namedInstantiations_4_0= ruleNamedInstantiation ) )
            	    // InternalRDL.g:926:5: (lv_namedInstantiations_4_0= ruleNamedInstantiation )
            	    {
            	    // InternalRDL.g:926:5: (lv_namedInstantiations_4_0= ruleNamedInstantiation )
            	    // InternalRDL.g:927:6: lv_namedInstantiations_4_0= ruleNamedInstantiation
            	    {

            	    						newCompositeNode(grammarAccess.getComponentDefinitionAccess().getNamedInstantiationsNamedInstantiationParserRuleCall_3_1_0());
            	    					
            	    pushFollow(FOLLOW_20);
            	    lv_namedInstantiations_4_0=ruleNamedInstantiation();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"namedInstantiations",
            	    							lv_namedInstantiations_4_0,
            	    							"com.minres.rdl.RDL.NamedInstantiation");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // InternalRDL.g:945:4: ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) )
            	    {
            	    // InternalRDL.g:945:4: ( (lv_propertyAssignments_5_0= rulePropertyAssignment ) )
            	    // InternalRDL.g:946:5: (lv_propertyAssignments_5_0= rulePropertyAssignment )
            	    {
            	    // InternalRDL.g:946:5: (lv_propertyAssignments_5_0= rulePropertyAssignment )
            	    // InternalRDL.g:947:6: lv_propertyAssignments_5_0= rulePropertyAssignment
            	    {

            	    						newCompositeNode(grammarAccess.getComponentDefinitionAccess().getPropertyAssignmentsPropertyAssignmentParserRuleCall_3_2_0());
            	    					
            	    pushFollow(FOLLOW_20);
            	    lv_propertyAssignments_5_0=rulePropertyAssignment();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"propertyAssignments",
            	    							lv_propertyAssignments_5_0,
            	    							"com.minres.rdl.RDL.PropertyAssignment");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // InternalRDL.g:965:4: ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) )
            	    {
            	    // InternalRDL.g:965:4: ( (lv_enumDefinitions_6_0= ruleEnumDefinition ) )
            	    // InternalRDL.g:966:5: (lv_enumDefinitions_6_0= ruleEnumDefinition )
            	    {
            	    // InternalRDL.g:966:5: (lv_enumDefinitions_6_0= ruleEnumDefinition )
            	    // InternalRDL.g:967:6: lv_enumDefinitions_6_0= ruleEnumDefinition
            	    {

            	    						newCompositeNode(grammarAccess.getComponentDefinitionAccess().getEnumDefinitionsEnumDefinitionParserRuleCall_3_3_0());
            	    					
            	    pushFollow(FOLLOW_20);
            	    lv_enumDefinitions_6_0=ruleEnumDefinition();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
            	    						}
            	    						add(
            	    							current,
            	    							"enumDefinitions",
            	    							lv_enumDefinitions_6_0,
            	    							"com.minres.rdl.RDL.EnumDefinition");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

            otherlv_7=(Token)match(input,18,FOLLOW_21); 

            			newLeafNode(otherlv_7, grammarAccess.getComponentDefinitionAccess().getRightCurlyBracketKeyword_4());
            		
            // InternalRDL.g:989:3: ( (lv_immediateInstantiation_8_0= ruleImmediateInstantiation ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==RULE_ID||LA12_0==24) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // InternalRDL.g:990:4: (lv_immediateInstantiation_8_0= ruleImmediateInstantiation )
                    {
                    // InternalRDL.g:990:4: (lv_immediateInstantiation_8_0= ruleImmediateInstantiation )
                    // InternalRDL.g:991:5: lv_immediateInstantiation_8_0= ruleImmediateInstantiation
                    {

                    					newCompositeNode(grammarAccess.getComponentDefinitionAccess().getImmediateInstantiationImmediateInstantiationParserRuleCall_5_0());
                    				
                    pushFollow(FOLLOW_10);
                    lv_immediateInstantiation_8_0=ruleImmediateInstantiation();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getComponentDefinitionRule());
                    					}
                    					set(
                    						current,
                    						"immediateInstantiation",
                    						lv_immediateInstantiation_8_0,
                    						"com.minres.rdl.RDL.ImmediateInstantiation");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            otherlv_9=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_9, grammarAccess.getComponentDefinitionAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentDefinition"


    // $ANTLR start "entryRuleNamedInstantiation"
    // InternalRDL.g:1016:1: entryRuleNamedInstantiation returns [EObject current=null] : iv_ruleNamedInstantiation= ruleNamedInstantiation EOF ;
    public final EObject entryRuleNamedInstantiation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedInstantiation = null;


        try {
            // InternalRDL.g:1016:59: (iv_ruleNamedInstantiation= ruleNamedInstantiation EOF )
            // InternalRDL.g:1017:2: iv_ruleNamedInstantiation= ruleNamedInstantiation EOF
            {
             newCompositeNode(grammarAccess.getNamedInstantiationRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleNamedInstantiation=ruleNamedInstantiation();

            state._fsp--;

             current =iv_ruleNamedInstantiation; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedInstantiation"


    // $ANTLR start "ruleNamedInstantiation"
    // InternalRDL.g:1023:1: ruleNamedInstantiation returns [EObject current=null] : ( ( (lv_external_0_0= 'external' ) )? ( (lv_internal_1_0= 'internal' ) )? (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )? ( (otherlv_4= RULE_ID ) ) ( (lv_componentInstances_5_0= ruleComponentInstance ) ) (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )* otherlv_8= ';' ) ;
    public final EObject ruleNamedInstantiation() throws RecognitionException {
        EObject current = null;

        Token lv_external_0_0=null;
        Token lv_internal_1_0=null;
        Token otherlv_2=null;
        Token lv_alias_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_componentInstances_5_0 = null;

        EObject lv_componentInstances_7_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1029:2: ( ( ( (lv_external_0_0= 'external' ) )? ( (lv_internal_1_0= 'internal' ) )? (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )? ( (otherlv_4= RULE_ID ) ) ( (lv_componentInstances_5_0= ruleComponentInstance ) ) (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )* otherlv_8= ';' ) )
            // InternalRDL.g:1030:2: ( ( (lv_external_0_0= 'external' ) )? ( (lv_internal_1_0= 'internal' ) )? (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )? ( (otherlv_4= RULE_ID ) ) ( (lv_componentInstances_5_0= ruleComponentInstance ) ) (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )* otherlv_8= ';' )
            {
            // InternalRDL.g:1030:2: ( ( (lv_external_0_0= 'external' ) )? ( (lv_internal_1_0= 'internal' ) )? (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )? ( (otherlv_4= RULE_ID ) ) ( (lv_componentInstances_5_0= ruleComponentInstance ) ) (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )* otherlv_8= ';' )
            // InternalRDL.g:1031:3: ( (lv_external_0_0= 'external' ) )? ( (lv_internal_1_0= 'internal' ) )? (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )? ( (otherlv_4= RULE_ID ) ) ( (lv_componentInstances_5_0= ruleComponentInstance ) ) (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )* otherlv_8= ';'
            {
            // InternalRDL.g:1031:3: ( (lv_external_0_0= 'external' ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==24) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // InternalRDL.g:1032:4: (lv_external_0_0= 'external' )
                    {
                    // InternalRDL.g:1032:4: (lv_external_0_0= 'external' )
                    // InternalRDL.g:1033:5: lv_external_0_0= 'external'
                    {
                    lv_external_0_0=(Token)match(input,24,FOLLOW_22); 

                    					newLeafNode(lv_external_0_0, grammarAccess.getNamedInstantiationAccess().getExternalExternalKeyword_0_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getNamedInstantiationRule());
                    					}
                    					setWithLastConsumed(current, "external", true, "external");
                    				

                    }


                    }
                    break;

            }

            // InternalRDL.g:1045:3: ( (lv_internal_1_0= 'internal' ) )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==25) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // InternalRDL.g:1046:4: (lv_internal_1_0= 'internal' )
                    {
                    // InternalRDL.g:1046:4: (lv_internal_1_0= 'internal' )
                    // InternalRDL.g:1047:5: lv_internal_1_0= 'internal'
                    {
                    lv_internal_1_0=(Token)match(input,25,FOLLOW_23); 

                    					newLeafNode(lv_internal_1_0, grammarAccess.getNamedInstantiationAccess().getInternalInternalKeyword_1_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getNamedInstantiationRule());
                    					}
                    					setWithLastConsumed(current, "internal", true, "internal");
                    				

                    }


                    }
                    break;

            }

            // InternalRDL.g:1059:3: (otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==26) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // InternalRDL.g:1060:4: otherlv_2= 'alias' ( (lv_alias_3_0= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,26,FOLLOW_5); 

                    				newLeafNode(otherlv_2, grammarAccess.getNamedInstantiationAccess().getAliasKeyword_2_0());
                    			
                    // InternalRDL.g:1064:4: ( (lv_alias_3_0= RULE_ID ) )
                    // InternalRDL.g:1065:5: (lv_alias_3_0= RULE_ID )
                    {
                    // InternalRDL.g:1065:5: (lv_alias_3_0= RULE_ID )
                    // InternalRDL.g:1066:6: lv_alias_3_0= RULE_ID
                    {
                    lv_alias_3_0=(Token)match(input,RULE_ID,FOLLOW_5); 

                    						newLeafNode(lv_alias_3_0, grammarAccess.getNamedInstantiationAccess().getAliasIDTerminalRuleCall_2_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getNamedInstantiationRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"alias",
                    							lv_alias_3_0,
                    							"com.minres.rdl.RDL.ID");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalRDL.g:1083:3: ( (otherlv_4= RULE_ID ) )
            // InternalRDL.g:1084:4: (otherlv_4= RULE_ID )
            {
            // InternalRDL.g:1084:4: (otherlv_4= RULE_ID )
            // InternalRDL.g:1085:5: otherlv_4= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getNamedInstantiationRule());
            					}
            				
            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_24); 

            					newLeafNode(otherlv_4, grammarAccess.getNamedInstantiationAccess().getComponentComponentDefinitionCrossReference_3_0());
            				

            }


            }

            // InternalRDL.g:1096:3: ( (lv_componentInstances_5_0= ruleComponentInstance ) )
            // InternalRDL.g:1097:4: (lv_componentInstances_5_0= ruleComponentInstance )
            {
            // InternalRDL.g:1097:4: (lv_componentInstances_5_0= ruleComponentInstance )
            // InternalRDL.g:1098:5: lv_componentInstances_5_0= ruleComponentInstance
            {

            					newCompositeNode(grammarAccess.getNamedInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_4_0());
            				
            pushFollow(FOLLOW_25);
            lv_componentInstances_5_0=ruleComponentInstance();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getNamedInstantiationRule());
            					}
            					add(
            						current,
            						"componentInstances",
            						lv_componentInstances_5_0,
            						"com.minres.rdl.RDL.ComponentInstance");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:1115:3: (otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) ) )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==27) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // InternalRDL.g:1116:4: otherlv_6= ',' ( (lv_componentInstances_7_0= ruleComponentInstance ) )
            	    {
            	    otherlv_6=(Token)match(input,27,FOLLOW_24); 

            	    				newLeafNode(otherlv_6, grammarAccess.getNamedInstantiationAccess().getCommaKeyword_5_0());
            	    			
            	    // InternalRDL.g:1120:4: ( (lv_componentInstances_7_0= ruleComponentInstance ) )
            	    // InternalRDL.g:1121:5: (lv_componentInstances_7_0= ruleComponentInstance )
            	    {
            	    // InternalRDL.g:1121:5: (lv_componentInstances_7_0= ruleComponentInstance )
            	    // InternalRDL.g:1122:6: lv_componentInstances_7_0= ruleComponentInstance
            	    {

            	    						newCompositeNode(grammarAccess.getNamedInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_5_1_0());
            	    					
            	    pushFollow(FOLLOW_25);
            	    lv_componentInstances_7_0=ruleComponentInstance();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getNamedInstantiationRule());
            	    						}
            	    						add(
            	    							current,
            	    							"componentInstances",
            	    							lv_componentInstances_7_0,
            	    							"com.minres.rdl.RDL.ComponentInstance");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

            otherlv_8=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_8, grammarAccess.getNamedInstantiationAccess().getSemicolonKeyword_6());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedInstantiation"


    // $ANTLR start "entryRuleImmediateInstantiation"
    // InternalRDL.g:1148:1: entryRuleImmediateInstantiation returns [EObject current=null] : iv_ruleImmediateInstantiation= ruleImmediateInstantiation EOF ;
    public final EObject entryRuleImmediateInstantiation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImmediateInstantiation = null;


        try {
            // InternalRDL.g:1148:63: (iv_ruleImmediateInstantiation= ruleImmediateInstantiation EOF )
            // InternalRDL.g:1149:2: iv_ruleImmediateInstantiation= ruleImmediateInstantiation EOF
            {
             newCompositeNode(grammarAccess.getImmediateInstantiationRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleImmediateInstantiation=ruleImmediateInstantiation();

            state._fsp--;

             current =iv_ruleImmediateInstantiation; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImmediateInstantiation"


    // $ANTLR start "ruleImmediateInstantiation"
    // InternalRDL.g:1155:1: ruleImmediateInstantiation returns [EObject current=null] : ( ( (lv_external_0_0= 'external' ) )? ( (lv_componentInstances_1_0= ruleComponentInstance ) ) (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )* ) ;
    public final EObject ruleImmediateInstantiation() throws RecognitionException {
        EObject current = null;

        Token lv_external_0_0=null;
        Token otherlv_2=null;
        EObject lv_componentInstances_1_0 = null;

        EObject lv_componentInstances_3_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1161:2: ( ( ( (lv_external_0_0= 'external' ) )? ( (lv_componentInstances_1_0= ruleComponentInstance ) ) (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )* ) )
            // InternalRDL.g:1162:2: ( ( (lv_external_0_0= 'external' ) )? ( (lv_componentInstances_1_0= ruleComponentInstance ) ) (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )* )
            {
            // InternalRDL.g:1162:2: ( ( (lv_external_0_0= 'external' ) )? ( (lv_componentInstances_1_0= ruleComponentInstance ) ) (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )* )
            // InternalRDL.g:1163:3: ( (lv_external_0_0= 'external' ) )? ( (lv_componentInstances_1_0= ruleComponentInstance ) ) (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )*
            {
            // InternalRDL.g:1163:3: ( (lv_external_0_0= 'external' ) )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==24) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // InternalRDL.g:1164:4: (lv_external_0_0= 'external' )
                    {
                    // InternalRDL.g:1164:4: (lv_external_0_0= 'external' )
                    // InternalRDL.g:1165:5: lv_external_0_0= 'external'
                    {
                    lv_external_0_0=(Token)match(input,24,FOLLOW_24); 

                    					newLeafNode(lv_external_0_0, grammarAccess.getImmediateInstantiationAccess().getExternalExternalKeyword_0_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getImmediateInstantiationRule());
                    					}
                    					setWithLastConsumed(current, "external", true, "external");
                    				

                    }


                    }
                    break;

            }

            // InternalRDL.g:1177:3: ( (lv_componentInstances_1_0= ruleComponentInstance ) )
            // InternalRDL.g:1178:4: (lv_componentInstances_1_0= ruleComponentInstance )
            {
            // InternalRDL.g:1178:4: (lv_componentInstances_1_0= ruleComponentInstance )
            // InternalRDL.g:1179:5: lv_componentInstances_1_0= ruleComponentInstance
            {

            					newCompositeNode(grammarAccess.getImmediateInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_1_0());
            				
            pushFollow(FOLLOW_26);
            lv_componentInstances_1_0=ruleComponentInstance();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getImmediateInstantiationRule());
            					}
            					add(
            						current,
            						"componentInstances",
            						lv_componentInstances_1_0,
            						"com.minres.rdl.RDL.ComponentInstance");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:1196:3: (otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==27) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // InternalRDL.g:1197:4: otherlv_2= ',' ( (lv_componentInstances_3_0= ruleComponentInstance ) )
            	    {
            	    otherlv_2=(Token)match(input,27,FOLLOW_24); 

            	    				newLeafNode(otherlv_2, grammarAccess.getImmediateInstantiationAccess().getCommaKeyword_2_0());
            	    			
            	    // InternalRDL.g:1201:4: ( (lv_componentInstances_3_0= ruleComponentInstance ) )
            	    // InternalRDL.g:1202:5: (lv_componentInstances_3_0= ruleComponentInstance )
            	    {
            	    // InternalRDL.g:1202:5: (lv_componentInstances_3_0= ruleComponentInstance )
            	    // InternalRDL.g:1203:6: lv_componentInstances_3_0= ruleComponentInstance
            	    {

            	    						newCompositeNode(grammarAccess.getImmediateInstantiationAccess().getComponentInstancesComponentInstanceParserRuleCall_2_1_0());
            	    					
            	    pushFollow(FOLLOW_26);
            	    lv_componentInstances_3_0=ruleComponentInstance();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getImmediateInstantiationRule());
            	    						}
            	    						add(
            	    							current,
            	    							"componentInstances",
            	    							lv_componentInstances_3_0,
            	    							"com.minres.rdl.RDL.ComponentInstance");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImmediateInstantiation"


    // $ANTLR start "entryRuleComponentInstance"
    // InternalRDL.g:1225:1: entryRuleComponentInstance returns [EObject current=null] : iv_ruleComponentInstance= ruleComponentInstance EOF ;
    public final EObject entryRuleComponentInstance() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentInstance = null;


        try {
            // InternalRDL.g:1225:58: (iv_ruleComponentInstance= ruleComponentInstance EOF )
            // InternalRDL.g:1226:2: iv_ruleComponentInstance= ruleComponentInstance EOF
            {
             newCompositeNode(grammarAccess.getComponentInstanceRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleComponentInstance=ruleComponentInstance();

            state._fsp--;

             current =iv_ruleComponentInstance; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentInstance"


    // $ANTLR start "ruleComponentInstance"
    // InternalRDL.g:1232:1: ruleComponentInstance returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_range_1_0= ruleRange ) )? (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )? (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )? (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )? (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )? ) ;
    public final EObject ruleComponentInstance() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        Token lv_reset_3_0=null;
        Token otherlv_4=null;
        Token lv_address_5_0=null;
        Token otherlv_6=null;
        Token lv_addrInc_7_0=null;
        Token otherlv_8=null;
        Token lv_addrMod_9_0=null;
        EObject lv_range_1_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1238:2: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_range_1_0= ruleRange ) )? (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )? (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )? (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )? (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )? ) )
            // InternalRDL.g:1239:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_range_1_0= ruleRange ) )? (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )? (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )? (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )? (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )? )
            {
            // InternalRDL.g:1239:2: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_range_1_0= ruleRange ) )? (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )? (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )? (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )? (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )? )
            // InternalRDL.g:1240:3: ( (lv_name_0_0= RULE_ID ) ) ( (lv_range_1_0= ruleRange ) )? (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )? (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )? (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )? (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )?
            {
            // InternalRDL.g:1240:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalRDL.g:1241:4: (lv_name_0_0= RULE_ID )
            {
            // InternalRDL.g:1241:4: (lv_name_0_0= RULE_ID )
            // InternalRDL.g:1242:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_27); 

            					newLeafNode(lv_name_0_0, grammarAccess.getComponentInstanceAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getComponentInstanceRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"com.minres.rdl.RDL.ID");
            				

            }


            }

            // InternalRDL.g:1258:3: ( (lv_range_1_0= ruleRange ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==31) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // InternalRDL.g:1259:4: (lv_range_1_0= ruleRange )
                    {
                    // InternalRDL.g:1259:4: (lv_range_1_0= ruleRange )
                    // InternalRDL.g:1260:5: lv_range_1_0= ruleRange
                    {

                    					newCompositeNode(grammarAccess.getComponentInstanceAccess().getRangeRangeParserRuleCall_1_0());
                    				
                    pushFollow(FOLLOW_28);
                    lv_range_1_0=ruleRange();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getComponentInstanceRule());
                    					}
                    					set(
                    						current,
                    						"range",
                    						lv_range_1_0,
                    						"com.minres.rdl.RDL.Range");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }
                    break;

            }

            // InternalRDL.g:1277:3: (otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==16) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // InternalRDL.g:1278:4: otherlv_2= '=' ( (lv_reset_3_0= RULE_NUM ) )
                    {
                    otherlv_2=(Token)match(input,16,FOLLOW_29); 

                    				newLeafNode(otherlv_2, grammarAccess.getComponentInstanceAccess().getEqualsSignKeyword_2_0());
                    			
                    // InternalRDL.g:1282:4: ( (lv_reset_3_0= RULE_NUM ) )
                    // InternalRDL.g:1283:5: (lv_reset_3_0= RULE_NUM )
                    {
                    // InternalRDL.g:1283:5: (lv_reset_3_0= RULE_NUM )
                    // InternalRDL.g:1284:6: lv_reset_3_0= RULE_NUM
                    {
                    lv_reset_3_0=(Token)match(input,RULE_NUM,FOLLOW_30); 

                    						newLeafNode(lv_reset_3_0, grammarAccess.getComponentInstanceAccess().getResetNUMTerminalRuleCall_2_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getComponentInstanceRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"reset",
                    							lv_reset_3_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalRDL.g:1301:3: (otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==28) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // InternalRDL.g:1302:4: otherlv_4= '@' ( (lv_address_5_0= RULE_NUM ) )
                    {
                    otherlv_4=(Token)match(input,28,FOLLOW_29); 

                    				newLeafNode(otherlv_4, grammarAccess.getComponentInstanceAccess().getCommercialAtKeyword_3_0());
                    			
                    // InternalRDL.g:1306:4: ( (lv_address_5_0= RULE_NUM ) )
                    // InternalRDL.g:1307:5: (lv_address_5_0= RULE_NUM )
                    {
                    // InternalRDL.g:1307:5: (lv_address_5_0= RULE_NUM )
                    // InternalRDL.g:1308:6: lv_address_5_0= RULE_NUM
                    {
                    lv_address_5_0=(Token)match(input,RULE_NUM,FOLLOW_31); 

                    						newLeafNode(lv_address_5_0, grammarAccess.getComponentInstanceAccess().getAddressNUMTerminalRuleCall_3_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getComponentInstanceRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"address",
                    							lv_address_5_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalRDL.g:1325:3: (otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==29) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // InternalRDL.g:1326:4: otherlv_6= '+=' ( (lv_addrInc_7_0= RULE_NUM ) )
                    {
                    otherlv_6=(Token)match(input,29,FOLLOW_29); 

                    				newLeafNode(otherlv_6, grammarAccess.getComponentInstanceAccess().getPlusSignEqualsSignKeyword_4_0());
                    			
                    // InternalRDL.g:1330:4: ( (lv_addrInc_7_0= RULE_NUM ) )
                    // InternalRDL.g:1331:5: (lv_addrInc_7_0= RULE_NUM )
                    {
                    // InternalRDL.g:1331:5: (lv_addrInc_7_0= RULE_NUM )
                    // InternalRDL.g:1332:6: lv_addrInc_7_0= RULE_NUM
                    {
                    lv_addrInc_7_0=(Token)match(input,RULE_NUM,FOLLOW_32); 

                    						newLeafNode(lv_addrInc_7_0, grammarAccess.getComponentInstanceAccess().getAddrIncNUMTerminalRuleCall_4_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getComponentInstanceRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"addrInc",
                    							lv_addrInc_7_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalRDL.g:1349:3: (otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==30) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // InternalRDL.g:1350:4: otherlv_8= '%=' ( (lv_addrMod_9_0= RULE_NUM ) )
                    {
                    otherlv_8=(Token)match(input,30,FOLLOW_29); 

                    				newLeafNode(otherlv_8, grammarAccess.getComponentInstanceAccess().getPercentSignEqualsSignKeyword_5_0());
                    			
                    // InternalRDL.g:1354:4: ( (lv_addrMod_9_0= RULE_NUM ) )
                    // InternalRDL.g:1355:5: (lv_addrMod_9_0= RULE_NUM )
                    {
                    // InternalRDL.g:1355:5: (lv_addrMod_9_0= RULE_NUM )
                    // InternalRDL.g:1356:6: lv_addrMod_9_0= RULE_NUM
                    {
                    lv_addrMod_9_0=(Token)match(input,RULE_NUM,FOLLOW_2); 

                    						newLeafNode(lv_addrMod_9_0, grammarAccess.getComponentInstanceAccess().getAddrModNUMTerminalRuleCall_5_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getComponentInstanceRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"addrMod",
                    							lv_addrMod_9_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentInstance"


    // $ANTLR start "entryRuleRange"
    // InternalRDL.g:1377:1: entryRuleRange returns [EObject current=null] : iv_ruleRange= ruleRange EOF ;
    public final EObject entryRuleRange() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRange = null;


        try {
            // InternalRDL.g:1377:46: (iv_ruleRange= ruleRange EOF )
            // InternalRDL.g:1378:2: iv_ruleRange= ruleRange EOF
            {
             newCompositeNode(grammarAccess.getRangeRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleRange=ruleRange();

            state._fsp--;

             current =iv_ruleRange; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRange"


    // $ANTLR start "ruleRange"
    // InternalRDL.g:1384:1: ruleRange returns [EObject current=null] : (otherlv_0= '[' ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) ) otherlv_5= ']' ) ;
    public final EObject ruleRange() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_start_1_0=null;
        Token otherlv_2=null;
        Token lv_end_3_0=null;
        Token lv_size_4_0=null;
        Token otherlv_5=null;


        	enterRule();

        try {
            // InternalRDL.g:1390:2: ( (otherlv_0= '[' ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) ) otherlv_5= ']' ) )
            // InternalRDL.g:1391:2: (otherlv_0= '[' ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) ) otherlv_5= ']' )
            {
            // InternalRDL.g:1391:2: (otherlv_0= '[' ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) ) otherlv_5= ']' )
            // InternalRDL.g:1392:3: otherlv_0= '[' ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) ) otherlv_5= ']'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_29); 

            			newLeafNode(otherlv_0, grammarAccess.getRangeAccess().getLeftSquareBracketKeyword_0());
            		
            // InternalRDL.g:1396:3: ( ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) ) | ( (lv_size_4_0= RULE_NUM ) ) )
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==RULE_NUM) ) {
                int LA24_1 = input.LA(2);

                if ( (LA24_1==32) ) {
                    alt24=1;
                }
                else if ( (LA24_1==33) ) {
                    alt24=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 24, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }
            switch (alt24) {
                case 1 :
                    // InternalRDL.g:1397:4: ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) )
                    {
                    // InternalRDL.g:1397:4: ( ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) ) )
                    // InternalRDL.g:1398:5: ( (lv_start_1_0= RULE_NUM ) ) otherlv_2= ':' ( (lv_end_3_0= RULE_NUM ) )
                    {
                    // InternalRDL.g:1398:5: ( (lv_start_1_0= RULE_NUM ) )
                    // InternalRDL.g:1399:6: (lv_start_1_0= RULE_NUM )
                    {
                    // InternalRDL.g:1399:6: (lv_start_1_0= RULE_NUM )
                    // InternalRDL.g:1400:7: lv_start_1_0= RULE_NUM
                    {
                    lv_start_1_0=(Token)match(input,RULE_NUM,FOLLOW_33); 

                    							newLeafNode(lv_start_1_0, grammarAccess.getRangeAccess().getStartNUMTerminalRuleCall_1_0_0_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getRangeRule());
                    							}
                    							setWithLastConsumed(
                    								current,
                    								"start",
                    								lv_start_1_0,
                    								"com.minres.rdl.RDL.NUM");
                    						

                    }


                    }

                    otherlv_2=(Token)match(input,32,FOLLOW_29); 

                    					newLeafNode(otherlv_2, grammarAccess.getRangeAccess().getColonKeyword_1_0_1());
                    				
                    // InternalRDL.g:1420:5: ( (lv_end_3_0= RULE_NUM ) )
                    // InternalRDL.g:1421:6: (lv_end_3_0= RULE_NUM )
                    {
                    // InternalRDL.g:1421:6: (lv_end_3_0= RULE_NUM )
                    // InternalRDL.g:1422:7: lv_end_3_0= RULE_NUM
                    {
                    lv_end_3_0=(Token)match(input,RULE_NUM,FOLLOW_34); 

                    							newLeafNode(lv_end_3_0, grammarAccess.getRangeAccess().getEndNUMTerminalRuleCall_1_0_2_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getRangeRule());
                    							}
                    							setWithLastConsumed(
                    								current,
                    								"end",
                    								lv_end_3_0,
                    								"com.minres.rdl.RDL.NUM");
                    						

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:1440:4: ( (lv_size_4_0= RULE_NUM ) )
                    {
                    // InternalRDL.g:1440:4: ( (lv_size_4_0= RULE_NUM ) )
                    // InternalRDL.g:1441:5: (lv_size_4_0= RULE_NUM )
                    {
                    // InternalRDL.g:1441:5: (lv_size_4_0= RULE_NUM )
                    // InternalRDL.g:1442:6: lv_size_4_0= RULE_NUM
                    {
                    lv_size_4_0=(Token)match(input,RULE_NUM,FOLLOW_34); 

                    						newLeafNode(lv_size_4_0, grammarAccess.getRangeAccess().getSizeNUMTerminalRuleCall_1_1_0());
                    					

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getRangeRule());
                    						}
                    						setWithLastConsumed(
                    							current,
                    							"size",
                    							lv_size_4_0,
                    							"com.minres.rdl.RDL.NUM");
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,33,FOLLOW_2); 

            			newLeafNode(otherlv_5, grammarAccess.getRangeAccess().getRightSquareBracketKeyword_2());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRange"


    // $ANTLR start "entryRulePropertyAssignment"
    // InternalRDL.g:1467:1: entryRulePropertyAssignment returns [EObject current=null] : iv_rulePropertyAssignment= rulePropertyAssignment EOF ;
    public final EObject entryRulePropertyAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyAssignment = null;


        try {
            // InternalRDL.g:1467:59: (iv_rulePropertyAssignment= rulePropertyAssignment EOF )
            // InternalRDL.g:1468:2: iv_rulePropertyAssignment= rulePropertyAssignment EOF
            {
             newCompositeNode(grammarAccess.getPropertyAssignmentRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyAssignment=rulePropertyAssignment();

            state._fsp--;

             current =iv_rulePropertyAssignment; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyAssignment"


    // $ANTLR start "rulePropertyAssignment"
    // InternalRDL.g:1474:1: rulePropertyAssignment returns [EObject current=null] : (this_DefaultProperyAssignment_0= ruleDefaultProperyAssignment | this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment | this_PostPropertyAssignment_2= rulePostPropertyAssignment ) ;
    public final EObject rulePropertyAssignment() throws RecognitionException {
        EObject current = null;

        EObject this_DefaultProperyAssignment_0 = null;

        EObject this_ExplicitPropertyAssignment_1 = null;

        EObject this_PostPropertyAssignment_2 = null;



        	enterRule();

        try {
            // InternalRDL.g:1480:2: ( (this_DefaultProperyAssignment_0= ruleDefaultProperyAssignment | this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment | this_PostPropertyAssignment_2= rulePostPropertyAssignment ) )
            // InternalRDL.g:1481:2: (this_DefaultProperyAssignment_0= ruleDefaultProperyAssignment | this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment | this_PostPropertyAssignment_2= rulePostPropertyAssignment )
            {
            // InternalRDL.g:1481:2: (this_DefaultProperyAssignment_0= ruleDefaultProperyAssignment | this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment | this_PostPropertyAssignment_2= rulePostPropertyAssignment )
            int alt25=3;
            switch ( input.LA(1) ) {
            case 19:
                {
                alt25=1;
                }
                break;
            case 25:
            case 37:
            case 38:
            case 49:
            case 50:
            case 51:
            case 52:
            case 53:
            case 54:
            case 55:
            case 56:
            case 57:
            case 58:
            case 59:
            case 60:
            case 61:
            case 62:
            case 63:
            case 64:
            case 65:
            case 66:
            case 67:
            case 68:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
            case 88:
            case 89:
            case 90:
            case 91:
            case 92:
            case 93:
            case 94:
            case 95:
            case 96:
            case 97:
            case 98:
            case 99:
            case 100:
            case 101:
            case 102:
            case 103:
            case 104:
            case 105:
            case 106:
            case 107:
            case 108:
            case 109:
            case 110:
            case 111:
            case 112:
            case 113:
            case 114:
            case 115:
            case 116:
            case 117:
            case 118:
            case 119:
            case 120:
            case 121:
            case 130:
            case 131:
            case 132:
            case 133:
            case 134:
                {
                alt25=2;
                }
                break;
            case RULE_ID:
                {
                alt25=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }

            switch (alt25) {
                case 1 :
                    // InternalRDL.g:1482:3: this_DefaultProperyAssignment_0= ruleDefaultProperyAssignment
                    {

                    			newCompositeNode(grammarAccess.getPropertyAssignmentAccess().getDefaultProperyAssignmentParserRuleCall_0());
                    		
                    pushFollow(FOLLOW_2);
                    this_DefaultProperyAssignment_0=ruleDefaultProperyAssignment();

                    state._fsp--;


                    			current = this_DefaultProperyAssignment_0;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 2 :
                    // InternalRDL.g:1491:3: this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment
                    {

                    			newCompositeNode(grammarAccess.getPropertyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1());
                    		
                    pushFollow(FOLLOW_2);
                    this_ExplicitPropertyAssignment_1=ruleExplicitPropertyAssignment();

                    state._fsp--;


                    			current = this_ExplicitPropertyAssignment_1;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;
                case 3 :
                    // InternalRDL.g:1500:3: this_PostPropertyAssignment_2= rulePostPropertyAssignment
                    {

                    			newCompositeNode(grammarAccess.getPropertyAssignmentAccess().getPostPropertyAssignmentParserRuleCall_2());
                    		
                    pushFollow(FOLLOW_2);
                    this_PostPropertyAssignment_2=rulePostPropertyAssignment();

                    state._fsp--;


                    			current = this_PostPropertyAssignment_2;
                    			afterParserOrEnumRuleCall();
                    		

                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyAssignment"


    // $ANTLR start "entryRuleDefaultProperyAssignment"
    // InternalRDL.g:1512:1: entryRuleDefaultProperyAssignment returns [EObject current=null] : iv_ruleDefaultProperyAssignment= ruleDefaultProperyAssignment EOF ;
    public final EObject entryRuleDefaultProperyAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefaultProperyAssignment = null;


        try {
            // InternalRDL.g:1512:65: (iv_ruleDefaultProperyAssignment= ruleDefaultProperyAssignment EOF )
            // InternalRDL.g:1513:2: iv_ruleDefaultProperyAssignment= ruleDefaultProperyAssignment EOF
            {
             newCompositeNode(grammarAccess.getDefaultProperyAssignmentRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleDefaultProperyAssignment=ruleDefaultProperyAssignment();

            state._fsp--;

             current =iv_ruleDefaultProperyAssignment; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefaultProperyAssignment"


    // $ANTLR start "ruleDefaultProperyAssignment"
    // InternalRDL.g:1519:1: ruleDefaultProperyAssignment returns [EObject current=null] : (otherlv_0= 'default' this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment ) ;
    public final EObject ruleDefaultProperyAssignment() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_ExplicitPropertyAssignment_1 = null;



        	enterRule();

        try {
            // InternalRDL.g:1525:2: ( (otherlv_0= 'default' this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment ) )
            // InternalRDL.g:1526:2: (otherlv_0= 'default' this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment )
            {
            // InternalRDL.g:1526:2: (otherlv_0= 'default' this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment )
            // InternalRDL.g:1527:3: otherlv_0= 'default' this_ExplicitPropertyAssignment_1= ruleExplicitPropertyAssignment
            {
            otherlv_0=(Token)match(input,19,FOLLOW_35); 

            			newLeafNode(otherlv_0, grammarAccess.getDefaultProperyAssignmentAccess().getDefaultKeyword_0());
            		

            			newCompositeNode(grammarAccess.getDefaultProperyAssignmentAccess().getExplicitPropertyAssignmentParserRuleCall_1());
            		
            pushFollow(FOLLOW_2);
            this_ExplicitPropertyAssignment_1=ruleExplicitPropertyAssignment();

            state._fsp--;


            			current = this_ExplicitPropertyAssignment_1;
            			afterParserOrEnumRuleCall();
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefaultProperyAssignment"


    // $ANTLR start "entryRuleExplicitPropertyAssignment"
    // InternalRDL.g:1543:1: entryRuleExplicitPropertyAssignment returns [EObject current=null] : iv_ruleExplicitPropertyAssignment= ruleExplicitPropertyAssignment EOF ;
    public final EObject entryRuleExplicitPropertyAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExplicitPropertyAssignment = null;


        try {
            // InternalRDL.g:1543:67: (iv_ruleExplicitPropertyAssignment= ruleExplicitPropertyAssignment EOF )
            // InternalRDL.g:1544:2: iv_ruleExplicitPropertyAssignment= ruleExplicitPropertyAssignment EOF
            {
             newCompositeNode(grammarAccess.getExplicitPropertyAssignmentRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleExplicitPropertyAssignment=ruleExplicitPropertyAssignment();

            state._fsp--;

             current =iv_ruleExplicitPropertyAssignment; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExplicitPropertyAssignment"


    // $ANTLR start "ruleExplicitPropertyAssignment"
    // InternalRDL.g:1550:1: ruleExplicitPropertyAssignment returns [EObject current=null] : ( ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' ) | ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' ) ) ;
    public final EObject ruleExplicitPropertyAssignment() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Enumerator lv_modifier_0_0 = null;

        Enumerator lv_name_1_0 = null;

        Enumerator lv_name_3_0 = null;

        EObject lv_rhs_5_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1556:2: ( ( ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' ) | ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' ) ) )
            // InternalRDL.g:1557:2: ( ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' ) | ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' ) )
            {
            // InternalRDL.g:1557:2: ( ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' ) | ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' ) )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==121||(LA27_0>=130 && LA27_0<=134)) ) {
                alt27=1;
            }
            else if ( (LA27_0==25||(LA27_0>=37 && LA27_0<=38)||(LA27_0>=49 && LA27_0<=120)) ) {
                alt27=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // InternalRDL.g:1558:3: ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' )
                    {
                    // InternalRDL.g:1558:3: ( ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';' )
                    // InternalRDL.g:1559:4: ( (lv_modifier_0_0= rulePropertyModifier ) ) ( (lv_name_1_0= ruleProperty ) ) otherlv_2= ';'
                    {
                    // InternalRDL.g:1559:4: ( (lv_modifier_0_0= rulePropertyModifier ) )
                    // InternalRDL.g:1560:5: (lv_modifier_0_0= rulePropertyModifier )
                    {
                    // InternalRDL.g:1560:5: (lv_modifier_0_0= rulePropertyModifier )
                    // InternalRDL.g:1561:6: lv_modifier_0_0= rulePropertyModifier
                    {

                    						newCompositeNode(grammarAccess.getExplicitPropertyAssignmentAccess().getModifierPropertyModifierEnumRuleCall_0_0_0());
                    					
                    pushFollow(FOLLOW_35);
                    lv_modifier_0_0=rulePropertyModifier();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getExplicitPropertyAssignmentRule());
                    						}
                    						set(
                    							current,
                    							"modifier",
                    							lv_modifier_0_0,
                    							"com.minres.rdl.RDL.PropertyModifier");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalRDL.g:1578:4: ( (lv_name_1_0= ruleProperty ) )
                    // InternalRDL.g:1579:5: (lv_name_1_0= ruleProperty )
                    {
                    // InternalRDL.g:1579:5: (lv_name_1_0= ruleProperty )
                    // InternalRDL.g:1580:6: lv_name_1_0= ruleProperty
                    {

                    						newCompositeNode(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_0_1_0());
                    					
                    pushFollow(FOLLOW_10);
                    lv_name_1_0=ruleProperty();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getExplicitPropertyAssignmentRule());
                    						}
                    						set(
                    							current,
                    							"name",
                    							lv_name_1_0,
                    							"com.minres.rdl.RDL.Property");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    otherlv_2=(Token)match(input,17,FOLLOW_2); 

                    				newLeafNode(otherlv_2, grammarAccess.getExplicitPropertyAssignmentAccess().getSemicolonKeyword_0_2());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:1603:3: ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' )
                    {
                    // InternalRDL.g:1603:3: ( ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';' )
                    // InternalRDL.g:1604:4: ( (lv_name_3_0= ruleProperty ) ) (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )? otherlv_6= ';'
                    {
                    // InternalRDL.g:1604:4: ( (lv_name_3_0= ruleProperty ) )
                    // InternalRDL.g:1605:5: (lv_name_3_0= ruleProperty )
                    {
                    // InternalRDL.g:1605:5: (lv_name_3_0= ruleProperty )
                    // InternalRDL.g:1606:6: lv_name_3_0= ruleProperty
                    {

                    						newCompositeNode(grammarAccess.getExplicitPropertyAssignmentAccess().getNamePropertyEnumRuleCall_1_0_0());
                    					
                    pushFollow(FOLLOW_36);
                    lv_name_3_0=ruleProperty();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getExplicitPropertyAssignmentRule());
                    						}
                    						set(
                    							current,
                    							"name",
                    							lv_name_3_0,
                    							"com.minres.rdl.RDL.Property");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }

                    // InternalRDL.g:1623:4: (otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) ) )?
                    int alt26=2;
                    int LA26_0 = input.LA(1);

                    if ( (LA26_0==16) ) {
                        alt26=1;
                    }
                    switch (alt26) {
                        case 1 :
                            // InternalRDL.g:1624:5: otherlv_4= '=' ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) )
                            {
                            otherlv_4=(Token)match(input,16,FOLLOW_37); 

                            					newLeafNode(otherlv_4, grammarAccess.getExplicitPropertyAssignmentAccess().getEqualsSignKeyword_1_1_0());
                            				
                            // InternalRDL.g:1628:5: ( (lv_rhs_5_0= rulePropertyAssignmentRhs ) )
                            // InternalRDL.g:1629:6: (lv_rhs_5_0= rulePropertyAssignmentRhs )
                            {
                            // InternalRDL.g:1629:6: (lv_rhs_5_0= rulePropertyAssignmentRhs )
                            // InternalRDL.g:1630:7: lv_rhs_5_0= rulePropertyAssignmentRhs
                            {

                            							newCompositeNode(grammarAccess.getExplicitPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_1_0());
                            						
                            pushFollow(FOLLOW_10);
                            lv_rhs_5_0=rulePropertyAssignmentRhs();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getExplicitPropertyAssignmentRule());
                            							}
                            							set(
                            								current,
                            								"rhs",
                            								lv_rhs_5_0,
                            								"com.minres.rdl.RDL.PropertyAssignmentRhs");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }


                            }
                            break;

                    }

                    otherlv_6=(Token)match(input,17,FOLLOW_2); 

                    				newLeafNode(otherlv_6, grammarAccess.getExplicitPropertyAssignmentAccess().getSemicolonKeyword_1_2());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExplicitPropertyAssignment"


    // $ANTLR start "entryRulePostPropertyAssignment"
    // InternalRDL.g:1657:1: entryRulePostPropertyAssignment returns [EObject current=null] : iv_rulePostPropertyAssignment= rulePostPropertyAssignment EOF ;
    public final EObject entryRulePostPropertyAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostPropertyAssignment = null;


        try {
            // InternalRDL.g:1657:63: (iv_rulePostPropertyAssignment= rulePostPropertyAssignment EOF )
            // InternalRDL.g:1658:2: iv_rulePostPropertyAssignment= rulePostPropertyAssignment EOF
            {
             newCompositeNode(grammarAccess.getPostPropertyAssignmentRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePostPropertyAssignment=rulePostPropertyAssignment();

            state._fsp--;

             current =iv_rulePostPropertyAssignment; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePostPropertyAssignment"


    // $ANTLR start "rulePostPropertyAssignment"
    // InternalRDL.g:1664:1: rulePostPropertyAssignment returns [EObject current=null] : ( ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) ) (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )? otherlv_7= ';' ) ;
    public final EObject rulePostPropertyAssignment() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_instance_0_0 = null;

        Enumerator lv_propertyEnum_2_0 = null;

        EObject lv_rhs_6_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1670:2: ( ( ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) ) (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )? otherlv_7= ';' ) )
            // InternalRDL.g:1671:2: ( ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) ) (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )? otherlv_7= ';' )
            {
            // InternalRDL.g:1671:2: ( ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) ) (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )? otherlv_7= ';' )
            // InternalRDL.g:1672:3: ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) ) (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )? otherlv_7= ';'
            {
            // InternalRDL.g:1672:3: ( ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) ) | ( (otherlv_4= RULE_ID ) ) )
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_ID) ) {
                int LA29_1 = input.LA(2);

                if ( ((LA29_1>=16 && LA29_1<=17)) ) {
                    alt29=2;
                }
                else if ( ((LA29_1>=34 && LA29_1<=35)) ) {
                    alt29=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 29, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 29, 0, input);

                throw nvae;
            }
            switch (alt29) {
                case 1 :
                    // InternalRDL.g:1673:4: ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )
                    {
                    // InternalRDL.g:1673:4: ( ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )
                    // InternalRDL.g:1674:5: ( (lv_instance_0_0= ruleHierInstanceRef ) ) otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) )
                    {
                    // InternalRDL.g:1674:5: ( (lv_instance_0_0= ruleHierInstanceRef ) )
                    // InternalRDL.g:1675:6: (lv_instance_0_0= ruleHierInstanceRef )
                    {
                    // InternalRDL.g:1675:6: (lv_instance_0_0= ruleHierInstanceRef )
                    // InternalRDL.g:1676:7: lv_instance_0_0= ruleHierInstanceRef
                    {

                    							newCompositeNode(grammarAccess.getPostPropertyAssignmentAccess().getInstanceHierInstanceRefParserRuleCall_0_0_0_0());
                    						
                    pushFollow(FOLLOW_38);
                    lv_instance_0_0=ruleHierInstanceRef();

                    state._fsp--;


                    							if (current==null) {
                    								current = createModelElementForParent(grammarAccess.getPostPropertyAssignmentRule());
                    							}
                    							set(
                    								current,
                    								"instance",
                    								lv_instance_0_0,
                    								"com.minres.rdl.RDL.HierInstanceRef");
                    							afterParserOrEnumRuleCall();
                    						

                    }


                    }

                    otherlv_1=(Token)match(input,34,FOLLOW_39); 

                    					newLeafNode(otherlv_1, grammarAccess.getPostPropertyAssignmentAccess().getHyphenMinusGreaterThanSignKeyword_0_0_1());
                    				
                    // InternalRDL.g:1697:5: ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) )
                    int alt28=2;
                    int LA28_0 = input.LA(1);

                    if ( (LA28_0==25||(LA28_0>=37 && LA28_0<=38)||(LA28_0>=49 && LA28_0<=120)) ) {
                        alt28=1;
                    }
                    else if ( (LA28_0==RULE_ID) ) {
                        alt28=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 28, 0, input);

                        throw nvae;
                    }
                    switch (alt28) {
                        case 1 :
                            // InternalRDL.g:1698:6: ( (lv_propertyEnum_2_0= ruleProperty ) )
                            {
                            // InternalRDL.g:1698:6: ( (lv_propertyEnum_2_0= ruleProperty ) )
                            // InternalRDL.g:1699:7: (lv_propertyEnum_2_0= ruleProperty )
                            {
                            // InternalRDL.g:1699:7: (lv_propertyEnum_2_0= ruleProperty )
                            // InternalRDL.g:1700:8: lv_propertyEnum_2_0= ruleProperty
                            {

                            								newCompositeNode(grammarAccess.getPostPropertyAssignmentAccess().getPropertyEnumPropertyEnumRuleCall_0_0_2_0_0());
                            							
                            pushFollow(FOLLOW_36);
                            lv_propertyEnum_2_0=ruleProperty();

                            state._fsp--;


                            								if (current==null) {
                            									current = createModelElementForParent(grammarAccess.getPostPropertyAssignmentRule());
                            								}
                            								set(
                            									current,
                            									"propertyEnum",
                            									lv_propertyEnum_2_0,
                            									"com.minres.rdl.RDL.Property");
                            								afterParserOrEnumRuleCall();
                            							

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalRDL.g:1718:6: ( (otherlv_3= RULE_ID ) )
                            {
                            // InternalRDL.g:1718:6: ( (otherlv_3= RULE_ID ) )
                            // InternalRDL.g:1719:7: (otherlv_3= RULE_ID )
                            {
                            // InternalRDL.g:1719:7: (otherlv_3= RULE_ID )
                            // InternalRDL.g:1720:8: otherlv_3= RULE_ID
                            {

                            								if (current==null) {
                            									current = createModelElement(grammarAccess.getPostPropertyAssignmentRule());
                            								}
                            							
                            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_36); 

                            								newLeafNode(otherlv_3, grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_0_2_1_0());
                            							

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:1734:4: ( (otherlv_4= RULE_ID ) )
                    {
                    // InternalRDL.g:1734:4: ( (otherlv_4= RULE_ID ) )
                    // InternalRDL.g:1735:5: (otherlv_4= RULE_ID )
                    {
                    // InternalRDL.g:1735:5: (otherlv_4= RULE_ID )
                    // InternalRDL.g:1736:6: otherlv_4= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPostPropertyAssignmentRule());
                    						}
                    					
                    otherlv_4=(Token)match(input,RULE_ID,FOLLOW_36); 

                    						newLeafNode(otherlv_4, grammarAccess.getPostPropertyAssignmentAccess().getPropertyPropertyDefinitionCrossReference_0_1_0());
                    					

                    }


                    }


                    }
                    break;

            }

            // InternalRDL.g:1748:3: (otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) ) )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==16) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // InternalRDL.g:1749:4: otherlv_5= '=' ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) )
                    {
                    otherlv_5=(Token)match(input,16,FOLLOW_37); 

                    				newLeafNode(otherlv_5, grammarAccess.getPostPropertyAssignmentAccess().getEqualsSignKeyword_1_0());
                    			
                    // InternalRDL.g:1753:4: ( (lv_rhs_6_0= rulePropertyAssignmentRhs ) )
                    // InternalRDL.g:1754:5: (lv_rhs_6_0= rulePropertyAssignmentRhs )
                    {
                    // InternalRDL.g:1754:5: (lv_rhs_6_0= rulePropertyAssignmentRhs )
                    // InternalRDL.g:1755:6: lv_rhs_6_0= rulePropertyAssignmentRhs
                    {

                    						newCompositeNode(grammarAccess.getPostPropertyAssignmentAccess().getRhsPropertyAssignmentRhsParserRuleCall_1_1_0());
                    					
                    pushFollow(FOLLOW_10);
                    lv_rhs_6_0=rulePropertyAssignmentRhs();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getPostPropertyAssignmentRule());
                    						}
                    						set(
                    							current,
                    							"rhs",
                    							lv_rhs_6_0,
                    							"com.minres.rdl.RDL.PropertyAssignmentRhs");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_7, grammarAccess.getPostPropertyAssignmentAccess().getSemicolonKeyword_2());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePostPropertyAssignment"


    // $ANTLR start "entryRuleInstancePropertyRef"
    // InternalRDL.g:1781:1: entryRuleInstancePropertyRef returns [EObject current=null] : iv_ruleInstancePropertyRef= ruleInstancePropertyRef EOF ;
    public final EObject entryRuleInstancePropertyRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInstancePropertyRef = null;


        try {
            // InternalRDL.g:1781:60: (iv_ruleInstancePropertyRef= ruleInstancePropertyRef EOF )
            // InternalRDL.g:1782:2: iv_ruleInstancePropertyRef= ruleInstancePropertyRef EOF
            {
             newCompositeNode(grammarAccess.getInstancePropertyRefRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleInstancePropertyRef=ruleInstancePropertyRef();

            state._fsp--;

             current =iv_ruleInstancePropertyRef; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInstancePropertyRef"


    // $ANTLR start "ruleInstancePropertyRef"
    // InternalRDL.g:1788:1: ruleInstancePropertyRef returns [EObject current=null] : ( ( (lv_instance_0_0= ruleInstanceRef ) ) (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )? ) ;
    public final EObject ruleInstancePropertyRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_instance_0_0 = null;

        Enumerator lv_propertyEnum_2_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1794:2: ( ( ( (lv_instance_0_0= ruleInstanceRef ) ) (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )? ) )
            // InternalRDL.g:1795:2: ( ( (lv_instance_0_0= ruleInstanceRef ) ) (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )? )
            {
            // InternalRDL.g:1795:2: ( ( (lv_instance_0_0= ruleInstanceRef ) ) (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )? )
            // InternalRDL.g:1796:3: ( (lv_instance_0_0= ruleInstanceRef ) ) (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )?
            {
            // InternalRDL.g:1796:3: ( (lv_instance_0_0= ruleInstanceRef ) )
            // InternalRDL.g:1797:4: (lv_instance_0_0= ruleInstanceRef )
            {
            // InternalRDL.g:1797:4: (lv_instance_0_0= ruleInstanceRef )
            // InternalRDL.g:1798:5: lv_instance_0_0= ruleInstanceRef
            {

            					newCompositeNode(grammarAccess.getInstancePropertyRefAccess().getInstanceInstanceRefParserRuleCall_0_0());
            				
            pushFollow(FOLLOW_40);
            lv_instance_0_0=ruleInstanceRef();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getInstancePropertyRefRule());
            					}
            					set(
            						current,
            						"instance",
            						lv_instance_0_0,
            						"com.minres.rdl.RDL.InstanceRef");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:1815:3: (otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) ) )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==34) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // InternalRDL.g:1816:4: otherlv_1= '->' ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) )
                    {
                    otherlv_1=(Token)match(input,34,FOLLOW_39); 

                    				newLeafNode(otherlv_1, grammarAccess.getInstancePropertyRefAccess().getHyphenMinusGreaterThanSignKeyword_1_0());
                    			
                    // InternalRDL.g:1820:4: ( ( (lv_propertyEnum_2_0= ruleProperty ) ) | ( (otherlv_3= RULE_ID ) ) )
                    int alt31=2;
                    int LA31_0 = input.LA(1);

                    if ( (LA31_0==25||(LA31_0>=37 && LA31_0<=38)||(LA31_0>=49 && LA31_0<=120)) ) {
                        alt31=1;
                    }
                    else if ( (LA31_0==RULE_ID) ) {
                        alt31=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 31, 0, input);

                        throw nvae;
                    }
                    switch (alt31) {
                        case 1 :
                            // InternalRDL.g:1821:5: ( (lv_propertyEnum_2_0= ruleProperty ) )
                            {
                            // InternalRDL.g:1821:5: ( (lv_propertyEnum_2_0= ruleProperty ) )
                            // InternalRDL.g:1822:6: (lv_propertyEnum_2_0= ruleProperty )
                            {
                            // InternalRDL.g:1822:6: (lv_propertyEnum_2_0= ruleProperty )
                            // InternalRDL.g:1823:7: lv_propertyEnum_2_0= ruleProperty
                            {

                            							newCompositeNode(grammarAccess.getInstancePropertyRefAccess().getPropertyEnumPropertyEnumRuleCall_1_1_0_0());
                            						
                            pushFollow(FOLLOW_2);
                            lv_propertyEnum_2_0=ruleProperty();

                            state._fsp--;


                            							if (current==null) {
                            								current = createModelElementForParent(grammarAccess.getInstancePropertyRefRule());
                            							}
                            							set(
                            								current,
                            								"propertyEnum",
                            								lv_propertyEnum_2_0,
                            								"com.minres.rdl.RDL.Property");
                            							afterParserOrEnumRuleCall();
                            						

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalRDL.g:1841:5: ( (otherlv_3= RULE_ID ) )
                            {
                            // InternalRDL.g:1841:5: ( (otherlv_3= RULE_ID ) )
                            // InternalRDL.g:1842:6: (otherlv_3= RULE_ID )
                            {
                            // InternalRDL.g:1842:6: (otherlv_3= RULE_ID )
                            // InternalRDL.g:1843:7: otherlv_3= RULE_ID
                            {

                            							if (current==null) {
                            								current = createModelElement(grammarAccess.getInstancePropertyRefRule());
                            							}
                            						
                            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_2); 

                            							newLeafNode(otherlv_3, grammarAccess.getInstancePropertyRefAccess().getPropertyPropertyDefinitionCrossReference_1_1_1_0());
                            						

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInstancePropertyRef"


    // $ANTLR start "entryRuleInstanceRef"
    // InternalRDL.g:1860:1: entryRuleInstanceRef returns [EObject current=null] : iv_ruleInstanceRef= ruleInstanceRef EOF ;
    public final EObject entryRuleInstanceRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInstanceRef = null;


        try {
            // InternalRDL.g:1860:52: (iv_ruleInstanceRef= ruleInstanceRef EOF )
            // InternalRDL.g:1861:2: iv_ruleInstanceRef= ruleInstanceRef EOF
            {
             newCompositeNode(grammarAccess.getInstanceRefRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleInstanceRef=ruleInstanceRef();

            state._fsp--;

             current =iv_ruleInstanceRef; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInstanceRef"


    // $ANTLR start "ruleInstanceRef"
    // InternalRDL.g:1867:1: ruleInstanceRef returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? ) ;
    public final EObject ruleInstanceRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_tail_2_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1873:2: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? ) )
            // InternalRDL.g:1874:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? )
            {
            // InternalRDL.g:1874:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? )
            // InternalRDL.g:1875:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )?
            {
            // InternalRDL.g:1875:3: ( (otherlv_0= RULE_ID ) )
            // InternalRDL.g:1876:4: (otherlv_0= RULE_ID )
            {
            // InternalRDL.g:1876:4: (otherlv_0= RULE_ID )
            // InternalRDL.g:1877:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getInstanceRefRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_41); 

            					newLeafNode(otherlv_0, grammarAccess.getInstanceRefAccess().getInstanceEntityCrossReference_0_0());
            				

            }


            }

            // InternalRDL.g:1888:3: (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==35) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // InternalRDL.g:1889:4: otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) )
                    {
                    otherlv_1=(Token)match(input,35,FOLLOW_5); 

                    				newLeafNode(otherlv_1, grammarAccess.getInstanceRefAccess().getFullStopKeyword_1_0());
                    			
                    // InternalRDL.g:1893:4: ( (lv_tail_2_0= ruleHierInstanceRef ) )
                    // InternalRDL.g:1894:5: (lv_tail_2_0= ruleHierInstanceRef )
                    {
                    // InternalRDL.g:1894:5: (lv_tail_2_0= ruleHierInstanceRef )
                    // InternalRDL.g:1895:6: lv_tail_2_0= ruleHierInstanceRef
                    {

                    						newCompositeNode(grammarAccess.getInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0());
                    					
                    pushFollow(FOLLOW_2);
                    lv_tail_2_0=ruleHierInstanceRef();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getInstanceRefRule());
                    						}
                    						set(
                    							current,
                    							"tail",
                    							lv_tail_2_0,
                    							"com.minres.rdl.RDL.HierInstanceRef");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInstanceRef"


    // $ANTLR start "entryRuleHierInstanceRef"
    // InternalRDL.g:1917:1: entryRuleHierInstanceRef returns [EObject current=null] : iv_ruleHierInstanceRef= ruleHierInstanceRef EOF ;
    public final EObject entryRuleHierInstanceRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHierInstanceRef = null;


        try {
            // InternalRDL.g:1917:56: (iv_ruleHierInstanceRef= ruleHierInstanceRef EOF )
            // InternalRDL.g:1918:2: iv_ruleHierInstanceRef= ruleHierInstanceRef EOF
            {
             newCompositeNode(grammarAccess.getHierInstanceRefRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleHierInstanceRef=ruleHierInstanceRef();

            state._fsp--;

             current =iv_ruleHierInstanceRef; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHierInstanceRef"


    // $ANTLR start "ruleHierInstanceRef"
    // InternalRDL.g:1924:1: ruleHierInstanceRef returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? ) ;
    public final EObject ruleHierInstanceRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_tail_2_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1930:2: ( ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? ) )
            // InternalRDL.g:1931:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? )
            {
            // InternalRDL.g:1931:2: ( ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )? )
            // InternalRDL.g:1932:3: ( (otherlv_0= RULE_ID ) ) (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )?
            {
            // InternalRDL.g:1932:3: ( (otherlv_0= RULE_ID ) )
            // InternalRDL.g:1933:4: (otherlv_0= RULE_ID )
            {
            // InternalRDL.g:1933:4: (otherlv_0= RULE_ID )
            // InternalRDL.g:1934:5: otherlv_0= RULE_ID
            {

            					if (current==null) {
            						current = createModelElement(grammarAccess.getHierInstanceRefRule());
            					}
            				
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_41); 

            					newLeafNode(otherlv_0, grammarAccess.getHierInstanceRefAccess().getInstanceComponentInstanceCrossReference_0_0());
            				

            }


            }

            // InternalRDL.g:1945:3: (otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) ) )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==35) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // InternalRDL.g:1946:4: otherlv_1= '.' ( (lv_tail_2_0= ruleHierInstanceRef ) )
                    {
                    otherlv_1=(Token)match(input,35,FOLLOW_5); 

                    				newLeafNode(otherlv_1, grammarAccess.getHierInstanceRefAccess().getFullStopKeyword_1_0());
                    			
                    // InternalRDL.g:1950:4: ( (lv_tail_2_0= ruleHierInstanceRef ) )
                    // InternalRDL.g:1951:5: (lv_tail_2_0= ruleHierInstanceRef )
                    {
                    // InternalRDL.g:1951:5: (lv_tail_2_0= ruleHierInstanceRef )
                    // InternalRDL.g:1952:6: lv_tail_2_0= ruleHierInstanceRef
                    {

                    						newCompositeNode(grammarAccess.getHierInstanceRefAccess().getTailHierInstanceRefParserRuleCall_1_1_0());
                    					
                    pushFollow(FOLLOW_2);
                    lv_tail_2_0=ruleHierInstanceRef();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getHierInstanceRefRule());
                    						}
                    						set(
                    							current,
                    							"tail",
                    							lv_tail_2_0,
                    							"com.minres.rdl.RDL.HierInstanceRef");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }
                    break;

            }


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHierInstanceRef"


    // $ANTLR start "entryRulePropertyAssignmentRhs"
    // InternalRDL.g:1974:1: entryRulePropertyAssignmentRhs returns [EObject current=null] : iv_rulePropertyAssignmentRhs= rulePropertyAssignmentRhs EOF ;
    public final EObject entryRulePropertyAssignmentRhs() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyAssignmentRhs = null;


        try {
            // InternalRDL.g:1974:62: (iv_rulePropertyAssignmentRhs= rulePropertyAssignmentRhs EOF )
            // InternalRDL.g:1975:2: iv_rulePropertyAssignmentRhs= rulePropertyAssignmentRhs EOF
            {
             newCompositeNode(grammarAccess.getPropertyAssignmentRhsRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyAssignmentRhs=rulePropertyAssignmentRhs();

            state._fsp--;

             current =iv_rulePropertyAssignmentRhs; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyAssignmentRhs"


    // $ANTLR start "rulePropertyAssignmentRhs"
    // InternalRDL.g:1981:1: rulePropertyAssignmentRhs returns [EObject current=null] : ( ( (lv_value_0_0= rulePropertyRvalueConstant ) ) | ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) ) | ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) ) | ( (lv_elements_5_0= ruleConcat ) ) ) ;
    public final EObject rulePropertyAssignmentRhs() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_value_0_0 = null;

        EObject lv_instPropRef_1_0 = null;

        EObject lv_enums_4_0 = null;

        EObject lv_elements_5_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:1987:2: ( ( ( (lv_value_0_0= rulePropertyRvalueConstant ) ) | ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) ) | ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) ) | ( (lv_elements_5_0= ruleConcat ) ) ) )
            // InternalRDL.g:1988:2: ( ( (lv_value_0_0= rulePropertyRvalueConstant ) ) | ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) ) | ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) ) | ( (lv_elements_5_0= ruleConcat ) ) )
            {
            // InternalRDL.g:1988:2: ( ( (lv_value_0_0= rulePropertyRvalueConstant ) ) | ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) ) | ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) ) | ( (lv_elements_5_0= ruleConcat ) ) )
            int alt35=4;
            switch ( input.LA(1) ) {
            case RULE_STR:
            case RULE_NUM:
            case 20:
            case 21:
            case 106:
            case 107:
            case 121:
            case 122:
            case 123:
            case 124:
            case 125:
            case 126:
            case 127:
            case 128:
            case 129:
                {
                alt35=1;
                }
                break;
            case RULE_ID:
                {
                int LA35_2 = input.LA(2);

                if ( (LA35_2==36) ) {
                    alt35=3;
                }
                else if ( (LA35_2==EOF||LA35_2==17||(LA35_2>=34 && LA35_2<=35)) ) {
                    alt35=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 35, 2, input);

                    throw nvae;
                }
                }
                break;
            case 14:
                {
                alt35=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 35, 0, input);

                throw nvae;
            }

            switch (alt35) {
                case 1 :
                    // InternalRDL.g:1989:3: ( (lv_value_0_0= rulePropertyRvalueConstant ) )
                    {
                    // InternalRDL.g:1989:3: ( (lv_value_0_0= rulePropertyRvalueConstant ) )
                    // InternalRDL.g:1990:4: (lv_value_0_0= rulePropertyRvalueConstant )
                    {
                    // InternalRDL.g:1990:4: (lv_value_0_0= rulePropertyRvalueConstant )
                    // InternalRDL.g:1991:5: lv_value_0_0= rulePropertyRvalueConstant
                    {

                    					newCompositeNode(grammarAccess.getPropertyAssignmentRhsAccess().getValuePropertyRvalueConstantParserRuleCall_0_0());
                    				
                    pushFollow(FOLLOW_2);
                    lv_value_0_0=rulePropertyRvalueConstant();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getPropertyAssignmentRhsRule());
                    					}
                    					set(
                    						current,
                    						"value",
                    						lv_value_0_0,
                    						"com.minres.rdl.RDL.PropertyRvalueConstant");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2009:3: ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) )
                    {
                    // InternalRDL.g:2009:3: ( (lv_instPropRef_1_0= ruleInstancePropertyRef ) )
                    // InternalRDL.g:2010:4: (lv_instPropRef_1_0= ruleInstancePropertyRef )
                    {
                    // InternalRDL.g:2010:4: (lv_instPropRef_1_0= ruleInstancePropertyRef )
                    // InternalRDL.g:2011:5: lv_instPropRef_1_0= ruleInstancePropertyRef
                    {

                    					newCompositeNode(grammarAccess.getPropertyAssignmentRhsAccess().getInstPropRefInstancePropertyRefParserRuleCall_1_0());
                    				
                    pushFollow(FOLLOW_2);
                    lv_instPropRef_1_0=ruleInstancePropertyRef();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getPropertyAssignmentRhsRule());
                    					}
                    					set(
                    						current,
                    						"instPropRef",
                    						lv_instPropRef_1_0,
                    						"com.minres.rdl.RDL.InstancePropertyRef");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2029:3: ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) )
                    {
                    // InternalRDL.g:2029:3: ( ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) ) )
                    // InternalRDL.g:2030:4: ( (otherlv_2= RULE_ID ) ) otherlv_3= 'enum' ( (lv_enums_4_0= ruleEnumBody ) )
                    {
                    // InternalRDL.g:2030:4: ( (otherlv_2= RULE_ID ) )
                    // InternalRDL.g:2031:5: (otherlv_2= RULE_ID )
                    {
                    // InternalRDL.g:2031:5: (otherlv_2= RULE_ID )
                    // InternalRDL.g:2032:6: otherlv_2= RULE_ID
                    {

                    						if (current==null) {
                    							current = createModelElement(grammarAccess.getPropertyAssignmentRhsRule());
                    						}
                    					
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_42); 

                    						newLeafNode(otherlv_2, grammarAccess.getPropertyAssignmentRhsAccess().getEnumRefEnumDefinitionCrossReference_2_0_0());
                    					

                    }


                    }

                    otherlv_3=(Token)match(input,36,FOLLOW_6); 

                    				newLeafNode(otherlv_3, grammarAccess.getPropertyAssignmentRhsAccess().getEnumKeyword_2_1());
                    			
                    // InternalRDL.g:2047:4: ( (lv_enums_4_0= ruleEnumBody ) )
                    // InternalRDL.g:2048:5: (lv_enums_4_0= ruleEnumBody )
                    {
                    // InternalRDL.g:2048:5: (lv_enums_4_0= ruleEnumBody )
                    // InternalRDL.g:2049:6: lv_enums_4_0= ruleEnumBody
                    {

                    						newCompositeNode(grammarAccess.getPropertyAssignmentRhsAccess().getEnumsEnumBodyParserRuleCall_2_2_0());
                    					
                    pushFollow(FOLLOW_2);
                    lv_enums_4_0=ruleEnumBody();

                    state._fsp--;


                    						if (current==null) {
                    							current = createModelElementForParent(grammarAccess.getPropertyAssignmentRhsRule());
                    						}
                    						set(
                    							current,
                    							"enums",
                    							lv_enums_4_0,
                    							"com.minres.rdl.RDL.EnumBody");
                    						afterParserOrEnumRuleCall();
                    					

                    }


                    }


                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:2068:3: ( (lv_elements_5_0= ruleConcat ) )
                    {
                    // InternalRDL.g:2068:3: ( (lv_elements_5_0= ruleConcat ) )
                    // InternalRDL.g:2069:4: (lv_elements_5_0= ruleConcat )
                    {
                    // InternalRDL.g:2069:4: (lv_elements_5_0= ruleConcat )
                    // InternalRDL.g:2070:5: lv_elements_5_0= ruleConcat
                    {

                    					newCompositeNode(grammarAccess.getPropertyAssignmentRhsAccess().getElementsConcatParserRuleCall_3_0());
                    				
                    pushFollow(FOLLOW_2);
                    lv_elements_5_0=ruleConcat();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getPropertyAssignmentRhsRule());
                    					}
                    					set(
                    						current,
                    						"elements",
                    						lv_elements_5_0,
                    						"com.minres.rdl.RDL.Concat");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyAssignmentRhs"


    // $ANTLR start "entryRuleConcat"
    // InternalRDL.g:2091:1: entryRuleConcat returns [EObject current=null] : iv_ruleConcat= ruleConcat EOF ;
    public final EObject entryRuleConcat() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcat = null;


        try {
            // InternalRDL.g:2091:47: (iv_ruleConcat= ruleConcat EOF )
            // InternalRDL.g:2092:2: iv_ruleConcat= ruleConcat EOF
            {
             newCompositeNode(grammarAccess.getConcatRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleConcat=ruleConcat();

            state._fsp--;

             current =iv_ruleConcat; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcat"


    // $ANTLR start "ruleConcat"
    // InternalRDL.g:2098:1: ruleConcat returns [EObject current=null] : (otherlv_0= '{' ( (lv_elements_1_0= ruleConcatElem ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )* otherlv_4= '}' ) ;
    public final EObject ruleConcat() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_elements_1_0 = null;

        EObject lv_elements_3_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2104:2: ( (otherlv_0= '{' ( (lv_elements_1_0= ruleConcatElem ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )* otherlv_4= '}' ) )
            // InternalRDL.g:2105:2: (otherlv_0= '{' ( (lv_elements_1_0= ruleConcatElem ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )* otherlv_4= '}' )
            {
            // InternalRDL.g:2105:2: (otherlv_0= '{' ( (lv_elements_1_0= ruleConcatElem ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )* otherlv_4= '}' )
            // InternalRDL.g:2106:3: otherlv_0= '{' ( (lv_elements_1_0= ruleConcatElem ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,14,FOLLOW_43); 

            			newLeafNode(otherlv_0, grammarAccess.getConcatAccess().getLeftCurlyBracketKeyword_0());
            		
            // InternalRDL.g:2110:3: ( (lv_elements_1_0= ruleConcatElem ) )
            // InternalRDL.g:2111:4: (lv_elements_1_0= ruleConcatElem )
            {
            // InternalRDL.g:2111:4: (lv_elements_1_0= ruleConcatElem )
            // InternalRDL.g:2112:5: lv_elements_1_0= ruleConcatElem
            {

            					newCompositeNode(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_1_0());
            				
            pushFollow(FOLLOW_44);
            lv_elements_1_0=ruleConcatElem();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getConcatRule());
            					}
            					add(
            						current,
            						"elements",
            						lv_elements_1_0,
            						"com.minres.rdl.RDL.ConcatElem");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            // InternalRDL.g:2129:3: (otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) ) )*
            loop36:
            do {
                int alt36=2;
                int LA36_0 = input.LA(1);

                if ( (LA36_0==27) ) {
                    alt36=1;
                }


                switch (alt36) {
            	case 1 :
            	    // InternalRDL.g:2130:4: otherlv_2= ',' ( (lv_elements_3_0= ruleConcatElem ) )
            	    {
            	    otherlv_2=(Token)match(input,27,FOLLOW_43); 

            	    				newLeafNode(otherlv_2, grammarAccess.getConcatAccess().getCommaKeyword_2_0());
            	    			
            	    // InternalRDL.g:2134:4: ( (lv_elements_3_0= ruleConcatElem ) )
            	    // InternalRDL.g:2135:5: (lv_elements_3_0= ruleConcatElem )
            	    {
            	    // InternalRDL.g:2135:5: (lv_elements_3_0= ruleConcatElem )
            	    // InternalRDL.g:2136:6: lv_elements_3_0= ruleConcatElem
            	    {

            	    						newCompositeNode(grammarAccess.getConcatAccess().getElementsConcatElemParserRuleCall_2_1_0());
            	    					
            	    pushFollow(FOLLOW_44);
            	    lv_elements_3_0=ruleConcatElem();

            	    state._fsp--;


            	    						if (current==null) {
            	    							current = createModelElementForParent(grammarAccess.getConcatRule());
            	    						}
            	    						add(
            	    							current,
            	    							"elements",
            	    							lv_elements_3_0,
            	    							"com.minres.rdl.RDL.ConcatElem");
            	    						afterParserOrEnumRuleCall();
            	    					

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop36;
                }
            } while (true);

            otherlv_4=(Token)match(input,18,FOLLOW_2); 

            			newLeafNode(otherlv_4, grammarAccess.getConcatAccess().getRightCurlyBracketKeyword_3());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcat"


    // $ANTLR start "entryRuleConcatElem"
    // InternalRDL.g:2162:1: entryRuleConcatElem returns [EObject current=null] : iv_ruleConcatElem= ruleConcatElem EOF ;
    public final EObject entryRuleConcatElem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcatElem = null;


        try {
            // InternalRDL.g:2162:51: (iv_ruleConcatElem= ruleConcatElem EOF )
            // InternalRDL.g:2163:2: iv_ruleConcatElem= ruleConcatElem EOF
            {
             newCompositeNode(grammarAccess.getConcatElemRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleConcatElem=ruleConcatElem();

            state._fsp--;

             current =iv_ruleConcatElem; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcatElem"


    // $ANTLR start "ruleConcatElem"
    // InternalRDL.g:2169:1: ruleConcatElem returns [EObject current=null] : ( ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) ) | ( (lv_value_1_0= RULE_NUM ) ) ) ;
    public final EObject ruleConcatElem() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;
        EObject lv_instPropRef_0_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2175:2: ( ( ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) ) | ( (lv_value_1_0= RULE_NUM ) ) ) )
            // InternalRDL.g:2176:2: ( ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) ) | ( (lv_value_1_0= RULE_NUM ) ) )
            {
            // InternalRDL.g:2176:2: ( ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) ) | ( (lv_value_1_0= RULE_NUM ) ) )
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==RULE_ID) ) {
                alt37=1;
            }
            else if ( (LA37_0==RULE_NUM) ) {
                alt37=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 37, 0, input);

                throw nvae;
            }
            switch (alt37) {
                case 1 :
                    // InternalRDL.g:2177:3: ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) )
                    {
                    // InternalRDL.g:2177:3: ( (lv_instPropRef_0_0= ruleInstancePropertyRef ) )
                    // InternalRDL.g:2178:4: (lv_instPropRef_0_0= ruleInstancePropertyRef )
                    {
                    // InternalRDL.g:2178:4: (lv_instPropRef_0_0= ruleInstancePropertyRef )
                    // InternalRDL.g:2179:5: lv_instPropRef_0_0= ruleInstancePropertyRef
                    {

                    					newCompositeNode(grammarAccess.getConcatElemAccess().getInstPropRefInstancePropertyRefParserRuleCall_0_0());
                    				
                    pushFollow(FOLLOW_2);
                    lv_instPropRef_0_0=ruleInstancePropertyRef();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getConcatElemRule());
                    					}
                    					set(
                    						current,
                    						"instPropRef",
                    						lv_instPropRef_0_0,
                    						"com.minres.rdl.RDL.InstancePropertyRef");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2197:3: ( (lv_value_1_0= RULE_NUM ) )
                    {
                    // InternalRDL.g:2197:3: ( (lv_value_1_0= RULE_NUM ) )
                    // InternalRDL.g:2198:4: (lv_value_1_0= RULE_NUM )
                    {
                    // InternalRDL.g:2198:4: (lv_value_1_0= RULE_NUM )
                    // InternalRDL.g:2199:5: lv_value_1_0= RULE_NUM
                    {
                    lv_value_1_0=(Token)match(input,RULE_NUM,FOLLOW_2); 

                    					newLeafNode(lv_value_1_0, grammarAccess.getConcatElemAccess().getValueNUMTerminalRuleCall_1_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getConcatElemRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"value",
                    						lv_value_1_0,
                    						"com.minres.rdl.RDL.NUM");
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcatElem"


    // $ANTLR start "entryRulePropertyRvalueConstant"
    // InternalRDL.g:2219:1: entryRulePropertyRvalueConstant returns [EObject current=null] : iv_rulePropertyRvalueConstant= rulePropertyRvalueConstant EOF ;
    public final EObject entryRulePropertyRvalueConstant() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyRvalueConstant = null;


        try {
            // InternalRDL.g:2219:63: (iv_rulePropertyRvalueConstant= rulePropertyRvalueConstant EOF )
            // InternalRDL.g:2220:2: iv_rulePropertyRvalueConstant= rulePropertyRvalueConstant EOF
            {
             newCompositeNode(grammarAccess.getPropertyRvalueConstantRule()); 
            pushFollow(FOLLOW_1);
            iv_rulePropertyRvalueConstant=rulePropertyRvalueConstant();

            state._fsp--;

             current =iv_rulePropertyRvalueConstant; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyRvalueConstant"


    // $ANTLR start "rulePropertyRvalueConstant"
    // InternalRDL.g:2226:1: rulePropertyRvalueConstant returns [EObject current=null] : ( ( (lv_val_0_0= ruleRValueConstant ) ) | ( (lv_num_1_0= RULE_NUM ) ) | ( (lv_str_2_0= RULE_STR ) ) ) ;
    public final EObject rulePropertyRvalueConstant() throws RecognitionException {
        EObject current = null;

        Token lv_num_1_0=null;
        Token lv_str_2_0=null;
        Enumerator lv_val_0_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2232:2: ( ( ( (lv_val_0_0= ruleRValueConstant ) ) | ( (lv_num_1_0= RULE_NUM ) ) | ( (lv_str_2_0= RULE_STR ) ) ) )
            // InternalRDL.g:2233:2: ( ( (lv_val_0_0= ruleRValueConstant ) ) | ( (lv_num_1_0= RULE_NUM ) ) | ( (lv_str_2_0= RULE_STR ) ) )
            {
            // InternalRDL.g:2233:2: ( ( (lv_val_0_0= ruleRValueConstant ) ) | ( (lv_num_1_0= RULE_NUM ) ) | ( (lv_str_2_0= RULE_STR ) ) )
            int alt38=3;
            switch ( input.LA(1) ) {
            case 20:
            case 21:
            case 106:
            case 107:
            case 121:
            case 122:
            case 123:
            case 124:
            case 125:
            case 126:
            case 127:
            case 128:
            case 129:
                {
                alt38=1;
                }
                break;
            case RULE_NUM:
                {
                alt38=2;
                }
                break;
            case RULE_STR:
                {
                alt38=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }

            switch (alt38) {
                case 1 :
                    // InternalRDL.g:2234:3: ( (lv_val_0_0= ruleRValueConstant ) )
                    {
                    // InternalRDL.g:2234:3: ( (lv_val_0_0= ruleRValueConstant ) )
                    // InternalRDL.g:2235:4: (lv_val_0_0= ruleRValueConstant )
                    {
                    // InternalRDL.g:2235:4: (lv_val_0_0= ruleRValueConstant )
                    // InternalRDL.g:2236:5: lv_val_0_0= ruleRValueConstant
                    {

                    					newCompositeNode(grammarAccess.getPropertyRvalueConstantAccess().getValRValueConstantEnumRuleCall_0_0());
                    				
                    pushFollow(FOLLOW_2);
                    lv_val_0_0=ruleRValueConstant();

                    state._fsp--;


                    					if (current==null) {
                    						current = createModelElementForParent(grammarAccess.getPropertyRvalueConstantRule());
                    					}
                    					set(
                    						current,
                    						"val",
                    						lv_val_0_0,
                    						"com.minres.rdl.RDL.RValueConstant");
                    					afterParserOrEnumRuleCall();
                    				

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2254:3: ( (lv_num_1_0= RULE_NUM ) )
                    {
                    // InternalRDL.g:2254:3: ( (lv_num_1_0= RULE_NUM ) )
                    // InternalRDL.g:2255:4: (lv_num_1_0= RULE_NUM )
                    {
                    // InternalRDL.g:2255:4: (lv_num_1_0= RULE_NUM )
                    // InternalRDL.g:2256:5: lv_num_1_0= RULE_NUM
                    {
                    lv_num_1_0=(Token)match(input,RULE_NUM,FOLLOW_2); 

                    					newLeafNode(lv_num_1_0, grammarAccess.getPropertyRvalueConstantAccess().getNumNUMTerminalRuleCall_1_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getPropertyRvalueConstantRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"num",
                    						lv_num_1_0,
                    						"com.minres.rdl.RDL.NUM");
                    				

                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2273:3: ( (lv_str_2_0= RULE_STR ) )
                    {
                    // InternalRDL.g:2273:3: ( (lv_str_2_0= RULE_STR ) )
                    // InternalRDL.g:2274:4: (lv_str_2_0= RULE_STR )
                    {
                    // InternalRDL.g:2274:4: (lv_str_2_0= RULE_STR )
                    // InternalRDL.g:2275:5: lv_str_2_0= RULE_STR
                    {
                    lv_str_2_0=(Token)match(input,RULE_STR,FOLLOW_2); 

                    					newLeafNode(lv_str_2_0, grammarAccess.getPropertyRvalueConstantAccess().getStrSTRTerminalRuleCall_2_0());
                    				

                    					if (current==null) {
                    						current = createModelElement(grammarAccess.getPropertyRvalueConstantRule());
                    					}
                    					setWithLastConsumed(
                    						current,
                    						"str",
                    						lv_str_2_0,
                    						"com.minres.rdl.RDL.STR");
                    				

                    }


                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyRvalueConstant"


    // $ANTLR start "entryRuleEnumDefinition"
    // InternalRDL.g:2295:1: entryRuleEnumDefinition returns [EObject current=null] : iv_ruleEnumDefinition= ruleEnumDefinition EOF ;
    public final EObject entryRuleEnumDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumDefinition = null;


        try {
            // InternalRDL.g:2295:55: (iv_ruleEnumDefinition= ruleEnumDefinition EOF )
            // InternalRDL.g:2296:2: iv_ruleEnumDefinition= ruleEnumDefinition EOF
            {
             newCompositeNode(grammarAccess.getEnumDefinitionRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEnumDefinition=ruleEnumDefinition();

            state._fsp--;

             current =iv_ruleEnumDefinition; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumDefinition"


    // $ANTLR start "ruleEnumDefinition"
    // InternalRDL.g:2302:1: ruleEnumDefinition returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) ( (lv_body_2_0= ruleEnumBody ) ) otherlv_3= ';' ) ;
    public final EObject ruleEnumDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_3=null;
        EObject lv_body_2_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2308:2: ( (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) ( (lv_body_2_0= ruleEnumBody ) ) otherlv_3= ';' ) )
            // InternalRDL.g:2309:2: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) ( (lv_body_2_0= ruleEnumBody ) ) otherlv_3= ';' )
            {
            // InternalRDL.g:2309:2: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) ( (lv_body_2_0= ruleEnumBody ) ) otherlv_3= ';' )
            // InternalRDL.g:2310:3: otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) ( (lv_body_2_0= ruleEnumBody ) ) otherlv_3= ';'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_5); 

            			newLeafNode(otherlv_0, grammarAccess.getEnumDefinitionAccess().getEnumKeyword_0());
            		
            // InternalRDL.g:2314:3: ( (lv_name_1_0= RULE_ID ) )
            // InternalRDL.g:2315:4: (lv_name_1_0= RULE_ID )
            {
            // InternalRDL.g:2315:4: (lv_name_1_0= RULE_ID )
            // InternalRDL.g:2316:5: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_6); 

            					newLeafNode(lv_name_1_0, grammarAccess.getEnumDefinitionAccess().getNameIDTerminalRuleCall_1_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getEnumDefinitionRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_1_0,
            						"com.minres.rdl.RDL.ID");
            				

            }


            }

            // InternalRDL.g:2332:3: ( (lv_body_2_0= ruleEnumBody ) )
            // InternalRDL.g:2333:4: (lv_body_2_0= ruleEnumBody )
            {
            // InternalRDL.g:2333:4: (lv_body_2_0= ruleEnumBody )
            // InternalRDL.g:2334:5: lv_body_2_0= ruleEnumBody
            {

            					newCompositeNode(grammarAccess.getEnumDefinitionAccess().getBodyEnumBodyParserRuleCall_2_0());
            				
            pushFollow(FOLLOW_10);
            lv_body_2_0=ruleEnumBody();

            state._fsp--;


            					if (current==null) {
            						current = createModelElementForParent(grammarAccess.getEnumDefinitionRule());
            					}
            					set(
            						current,
            						"body",
            						lv_body_2_0,
            						"com.minres.rdl.RDL.EnumBody");
            					afterParserOrEnumRuleCall();
            				

            }


            }

            otherlv_3=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getEnumDefinitionAccess().getSemicolonKeyword_3());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumDefinition"


    // $ANTLR start "entryRuleEnumBody"
    // InternalRDL.g:2359:1: entryRuleEnumBody returns [EObject current=null] : iv_ruleEnumBody= ruleEnumBody EOF ;
    public final EObject entryRuleEnumBody() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumBody = null;


        try {
            // InternalRDL.g:2359:49: (iv_ruleEnumBody= ruleEnumBody EOF )
            // InternalRDL.g:2360:2: iv_ruleEnumBody= ruleEnumBody EOF
            {
             newCompositeNode(grammarAccess.getEnumBodyRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEnumBody=ruleEnumBody();

            state._fsp--;

             current =iv_ruleEnumBody; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumBody"


    // $ANTLR start "ruleEnumBody"
    // InternalRDL.g:2366:1: ruleEnumBody returns [EObject current=null] : (otherlv_0= '{' () ( (lv_entries_2_0= ruleEnumEntry ) )* otherlv_3= '}' ) ;
    public final EObject ruleEnumBody() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject lv_entries_2_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2372:2: ( (otherlv_0= '{' () ( (lv_entries_2_0= ruleEnumEntry ) )* otherlv_3= '}' ) )
            // InternalRDL.g:2373:2: (otherlv_0= '{' () ( (lv_entries_2_0= ruleEnumEntry ) )* otherlv_3= '}' )
            {
            // InternalRDL.g:2373:2: (otherlv_0= '{' () ( (lv_entries_2_0= ruleEnumEntry ) )* otherlv_3= '}' )
            // InternalRDL.g:2374:3: otherlv_0= '{' () ( (lv_entries_2_0= ruleEnumEntry ) )* otherlv_3= '}'
            {
            otherlv_0=(Token)match(input,14,FOLLOW_45); 

            			newLeafNode(otherlv_0, grammarAccess.getEnumBodyAccess().getLeftCurlyBracketKeyword_0());
            		
            // InternalRDL.g:2378:3: ()
            // InternalRDL.g:2379:4: 
            {

            				current = forceCreateModelElement(
            					grammarAccess.getEnumBodyAccess().getEnumBodyAction_1(),
            					current);
            			

            }

            // InternalRDL.g:2385:3: ( (lv_entries_2_0= ruleEnumEntry ) )*
            loop39:
            do {
                int alt39=2;
                int LA39_0 = input.LA(1);

                if ( (LA39_0==RULE_ID) ) {
                    alt39=1;
                }


                switch (alt39) {
            	case 1 :
            	    // InternalRDL.g:2386:4: (lv_entries_2_0= ruleEnumEntry )
            	    {
            	    // InternalRDL.g:2386:4: (lv_entries_2_0= ruleEnumEntry )
            	    // InternalRDL.g:2387:5: lv_entries_2_0= ruleEnumEntry
            	    {

            	    					newCompositeNode(grammarAccess.getEnumBodyAccess().getEntriesEnumEntryParserRuleCall_2_0());
            	    				
            	    pushFollow(FOLLOW_45);
            	    lv_entries_2_0=ruleEnumEntry();

            	    state._fsp--;


            	    					if (current==null) {
            	    						current = createModelElementForParent(grammarAccess.getEnumBodyRule());
            	    					}
            	    					add(
            	    						current,
            	    						"entries",
            	    						lv_entries_2_0,
            	    						"com.minres.rdl.RDL.EnumEntry");
            	    					afterParserOrEnumRuleCall();
            	    				

            	    }


            	    }
            	    break;

            	default :
            	    break loop39;
                }
            } while (true);

            otherlv_3=(Token)match(input,18,FOLLOW_2); 

            			newLeafNode(otherlv_3, grammarAccess.getEnumBodyAccess().getRightCurlyBracketKeyword_3());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumBody"


    // $ANTLR start "entryRuleEnumEntry"
    // InternalRDL.g:2412:1: entryRuleEnumEntry returns [EObject current=null] : iv_ruleEnumEntry= ruleEnumEntry EOF ;
    public final EObject entryRuleEnumEntry() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumEntry = null;


        try {
            // InternalRDL.g:2412:50: (iv_ruleEnumEntry= ruleEnumEntry EOF )
            // InternalRDL.g:2413:2: iv_ruleEnumEntry= ruleEnumEntry EOF
            {
             newCompositeNode(grammarAccess.getEnumEntryRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEnumEntry=ruleEnumEntry();

            state._fsp--;

             current =iv_ruleEnumEntry; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumEntry"


    // $ANTLR start "ruleEnumEntry"
    // InternalRDL.g:2419:1: ruleEnumEntry returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_index_2_0= RULE_NUM ) ) (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )? otherlv_6= ';' ) ;
    public final EObject ruleEnumEntry() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_index_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_properties_4_0 = null;



        	enterRule();

        try {
            // InternalRDL.g:2425:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_index_2_0= RULE_NUM ) ) (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )? otherlv_6= ';' ) )
            // InternalRDL.g:2426:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_index_2_0= RULE_NUM ) ) (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )? otherlv_6= ';' )
            {
            // InternalRDL.g:2426:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_index_2_0= RULE_NUM ) ) (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )? otherlv_6= ';' )
            // InternalRDL.g:2427:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '=' ( (lv_index_2_0= RULE_NUM ) ) (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )? otherlv_6= ';'
            {
            // InternalRDL.g:2427:3: ( (lv_name_0_0= RULE_ID ) )
            // InternalRDL.g:2428:4: (lv_name_0_0= RULE_ID )
            {
            // InternalRDL.g:2428:4: (lv_name_0_0= RULE_ID )
            // InternalRDL.g:2429:5: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_8); 

            					newLeafNode(lv_name_0_0, grammarAccess.getEnumEntryAccess().getNameIDTerminalRuleCall_0_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getEnumEntryRule());
            					}
            					setWithLastConsumed(
            						current,
            						"name",
            						lv_name_0_0,
            						"com.minres.rdl.RDL.ID");
            				

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_29); 

            			newLeafNode(otherlv_1, grammarAccess.getEnumEntryAccess().getEqualsSignKeyword_1());
            		
            // InternalRDL.g:2449:3: ( (lv_index_2_0= RULE_NUM ) )
            // InternalRDL.g:2450:4: (lv_index_2_0= RULE_NUM )
            {
            // InternalRDL.g:2450:4: (lv_index_2_0= RULE_NUM )
            // InternalRDL.g:2451:5: lv_index_2_0= RULE_NUM
            {
            lv_index_2_0=(Token)match(input,RULE_NUM,FOLLOW_46); 

            					newLeafNode(lv_index_2_0, grammarAccess.getEnumEntryAccess().getIndexNUMTerminalRuleCall_2_0());
            				

            					if (current==null) {
            						current = createModelElement(grammarAccess.getEnumEntryRule());
            					}
            					setWithLastConsumed(
            						current,
            						"index",
            						lv_index_2_0,
            						"com.minres.rdl.RDL.NUM");
            				

            }


            }

            // InternalRDL.g:2467:3: (otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}' )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==14) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // InternalRDL.g:2468:4: otherlv_3= '{' ( (lv_properties_4_0= ruleEnumProperty ) )* otherlv_5= '}'
                    {
                    otherlv_3=(Token)match(input,14,FOLLOW_47); 

                    				newLeafNode(otherlv_3, grammarAccess.getEnumEntryAccess().getLeftCurlyBracketKeyword_3_0());
                    			
                    // InternalRDL.g:2472:4: ( (lv_properties_4_0= ruleEnumProperty ) )*
                    loop40:
                    do {
                        int alt40=2;
                        int LA40_0 = input.LA(1);

                        if ( ((LA40_0>=37 && LA40_0<=38)) ) {
                            alt40=1;
                        }


                        switch (alt40) {
                    	case 1 :
                    	    // InternalRDL.g:2473:5: (lv_properties_4_0= ruleEnumProperty )
                    	    {
                    	    // InternalRDL.g:2473:5: (lv_properties_4_0= ruleEnumProperty )
                    	    // InternalRDL.g:2474:6: lv_properties_4_0= ruleEnumProperty
                    	    {

                    	    						newCompositeNode(grammarAccess.getEnumEntryAccess().getPropertiesEnumPropertyParserRuleCall_3_1_0());
                    	    					
                    	    pushFollow(FOLLOW_47);
                    	    lv_properties_4_0=ruleEnumProperty();

                    	    state._fsp--;


                    	    						if (current==null) {
                    	    							current = createModelElementForParent(grammarAccess.getEnumEntryRule());
                    	    						}
                    	    						add(
                    	    							current,
                    	    							"properties",
                    	    							lv_properties_4_0,
                    	    							"com.minres.rdl.RDL.EnumProperty");
                    	    						afterParserOrEnumRuleCall();
                    	    					

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop40;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,18,FOLLOW_10); 

                    				newLeafNode(otherlv_5, grammarAccess.getEnumEntryAccess().getRightCurlyBracketKeyword_3_2());
                    			

                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getEnumEntryAccess().getSemicolonKeyword_4());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumEntry"


    // $ANTLR start "entryRuleEnumProperty"
    // InternalRDL.g:2504:1: entryRuleEnumProperty returns [EObject current=null] : iv_ruleEnumProperty= ruleEnumProperty EOF ;
    public final EObject entryRuleEnumProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumProperty = null;


        try {
            // InternalRDL.g:2504:53: (iv_ruleEnumProperty= ruleEnumProperty EOF )
            // InternalRDL.g:2505:2: iv_ruleEnumProperty= ruleEnumProperty EOF
            {
             newCompositeNode(grammarAccess.getEnumPropertyRule()); 
            pushFollow(FOLLOW_1);
            iv_ruleEnumProperty=ruleEnumProperty();

            state._fsp--;

             current =iv_ruleEnumProperty; 
            match(input,EOF,FOLLOW_2); 

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumProperty"


    // $ANTLR start "ruleEnumProperty"
    // InternalRDL.g:2511:1: ruleEnumProperty returns [EObject current=null] : ( ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) ) otherlv_6= ';' ) ;
    public final EObject ruleEnumProperty() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_value_2_0=null;
        Token lv_name_3_0=null;
        Token otherlv_4=null;
        Token lv_value_5_0=null;
        Token otherlv_6=null;


        	enterRule();

        try {
            // InternalRDL.g:2517:2: ( ( ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) ) otherlv_6= ';' ) )
            // InternalRDL.g:2518:2: ( ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) ) otherlv_6= ';' )
            {
            // InternalRDL.g:2518:2: ( ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) ) otherlv_6= ';' )
            // InternalRDL.g:2519:3: ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) ) otherlv_6= ';'
            {
            // InternalRDL.g:2519:3: ( ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) ) | ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) ) )
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==37) ) {
                alt42=1;
            }
            else if ( (LA42_0==38) ) {
                alt42=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 42, 0, input);

                throw nvae;
            }
            switch (alt42) {
                case 1 :
                    // InternalRDL.g:2520:4: ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) )
                    {
                    // InternalRDL.g:2520:4: ( ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) ) )
                    // InternalRDL.g:2521:5: ( (lv_name_0_0= 'name' ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STR ) )
                    {
                    // InternalRDL.g:2521:5: ( (lv_name_0_0= 'name' ) )
                    // InternalRDL.g:2522:6: (lv_name_0_0= 'name' )
                    {
                    // InternalRDL.g:2522:6: (lv_name_0_0= 'name' )
                    // InternalRDL.g:2523:7: lv_name_0_0= 'name'
                    {
                    lv_name_0_0=(Token)match(input,37,FOLLOW_8); 

                    							newLeafNode(lv_name_0_0, grammarAccess.getEnumPropertyAccess().getNameNameKeyword_0_0_0_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getEnumPropertyRule());
                    							}
                    							setWithLastConsumed(current, "name", lv_name_0_0, "name");
                    						

                    }


                    }

                    otherlv_1=(Token)match(input,16,FOLLOW_4); 

                    					newLeafNode(otherlv_1, grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_0_1());
                    				
                    // InternalRDL.g:2539:5: ( (lv_value_2_0= RULE_STR ) )
                    // InternalRDL.g:2540:6: (lv_value_2_0= RULE_STR )
                    {
                    // InternalRDL.g:2540:6: (lv_value_2_0= RULE_STR )
                    // InternalRDL.g:2541:7: lv_value_2_0= RULE_STR
                    {
                    lv_value_2_0=(Token)match(input,RULE_STR,FOLLOW_10); 

                    							newLeafNode(lv_value_2_0, grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_0_2_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getEnumPropertyRule());
                    							}
                    							setWithLastConsumed(
                    								current,
                    								"value",
                    								lv_value_2_0,
                    								"com.minres.rdl.RDL.STR");
                    						

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2559:4: ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) )
                    {
                    // InternalRDL.g:2559:4: ( ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) ) )
                    // InternalRDL.g:2560:5: ( (lv_name_3_0= 'desc' ) ) otherlv_4= '=' ( (lv_value_5_0= RULE_STR ) )
                    {
                    // InternalRDL.g:2560:5: ( (lv_name_3_0= 'desc' ) )
                    // InternalRDL.g:2561:6: (lv_name_3_0= 'desc' )
                    {
                    // InternalRDL.g:2561:6: (lv_name_3_0= 'desc' )
                    // InternalRDL.g:2562:7: lv_name_3_0= 'desc'
                    {
                    lv_name_3_0=(Token)match(input,38,FOLLOW_8); 

                    							newLeafNode(lv_name_3_0, grammarAccess.getEnumPropertyAccess().getNameDescKeyword_0_1_0_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getEnumPropertyRule());
                    							}
                    							setWithLastConsumed(current, "name", lv_name_3_0, "desc");
                    						

                    }


                    }

                    otherlv_4=(Token)match(input,16,FOLLOW_4); 

                    					newLeafNode(otherlv_4, grammarAccess.getEnumPropertyAccess().getEqualsSignKeyword_0_1_1());
                    				
                    // InternalRDL.g:2578:5: ( (lv_value_5_0= RULE_STR ) )
                    // InternalRDL.g:2579:6: (lv_value_5_0= RULE_STR )
                    {
                    // InternalRDL.g:2579:6: (lv_value_5_0= RULE_STR )
                    // InternalRDL.g:2580:7: lv_value_5_0= RULE_STR
                    {
                    lv_value_5_0=(Token)match(input,RULE_STR,FOLLOW_10); 

                    							newLeafNode(lv_value_5_0, grammarAccess.getEnumPropertyAccess().getValueSTRTerminalRuleCall_0_1_2_0());
                    						

                    							if (current==null) {
                    								current = createModelElement(grammarAccess.getEnumPropertyRule());
                    							}
                    							setWithLastConsumed(
                    								current,
                    								"value",
                    								lv_value_5_0,
                    								"com.minres.rdl.RDL.STR");
                    						

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_2); 

            			newLeafNode(otherlv_6, grammarAccess.getEnumPropertyAccess().getSemicolonKeyword_1());
            		

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumProperty"


    // $ANTLR start "rulePropertyTypeName"
    // InternalRDL.g:2606:1: rulePropertyTypeName returns [Enumerator current=null] : ( (enumLiteral_0= 'string' ) | (enumLiteral_1= 'number' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'addrmap' ) | (enumLiteral_4= 'reg' ) | (enumLiteral_5= 'regfile' ) | (enumLiteral_6= 'field' ) | (enumLiteral_7= 'ref' ) ) ;
    public final Enumerator rulePropertyTypeName() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;


        	enterRule();

        try {
            // InternalRDL.g:2612:2: ( ( (enumLiteral_0= 'string' ) | (enumLiteral_1= 'number' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'addrmap' ) | (enumLiteral_4= 'reg' ) | (enumLiteral_5= 'regfile' ) | (enumLiteral_6= 'field' ) | (enumLiteral_7= 'ref' ) ) )
            // InternalRDL.g:2613:2: ( (enumLiteral_0= 'string' ) | (enumLiteral_1= 'number' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'addrmap' ) | (enumLiteral_4= 'reg' ) | (enumLiteral_5= 'regfile' ) | (enumLiteral_6= 'field' ) | (enumLiteral_7= 'ref' ) )
            {
            // InternalRDL.g:2613:2: ( (enumLiteral_0= 'string' ) | (enumLiteral_1= 'number' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'addrmap' ) | (enumLiteral_4= 'reg' ) | (enumLiteral_5= 'regfile' ) | (enumLiteral_6= 'field' ) | (enumLiteral_7= 'ref' ) )
            int alt43=8;
            switch ( input.LA(1) ) {
            case 39:
                {
                alt43=1;
                }
                break;
            case 40:
                {
                alt43=2;
                }
                break;
            case 41:
                {
                alt43=3;
                }
                break;
            case 42:
                {
                alt43=4;
                }
                break;
            case 43:
                {
                alt43=5;
                }
                break;
            case 44:
                {
                alt43=6;
                }
                break;
            case 45:
                {
                alt43=7;
                }
                break;
            case 46:
                {
                alt43=8;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }

            switch (alt43) {
                case 1 :
                    // InternalRDL.g:2614:3: (enumLiteral_0= 'string' )
                    {
                    // InternalRDL.g:2614:3: (enumLiteral_0= 'string' )
                    // InternalRDL.g:2615:4: enumLiteral_0= 'string'
                    {
                    enumLiteral_0=(Token)match(input,39,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getSTRINGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getPropertyTypeNameAccess().getSTRINGEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2622:3: (enumLiteral_1= 'number' )
                    {
                    // InternalRDL.g:2622:3: (enumLiteral_1= 'number' )
                    // InternalRDL.g:2623:4: enumLiteral_1= 'number'
                    {
                    enumLiteral_1=(Token)match(input,40,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getNUMBEREnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getPropertyTypeNameAccess().getNUMBEREnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2630:3: (enumLiteral_2= 'boolean' )
                    {
                    // InternalRDL.g:2630:3: (enumLiteral_2= 'boolean' )
                    // InternalRDL.g:2631:4: enumLiteral_2= 'boolean'
                    {
                    enumLiteral_2=(Token)match(input,41,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getBOOLEANEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getPropertyTypeNameAccess().getBOOLEANEnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:2638:3: (enumLiteral_3= 'addrmap' )
                    {
                    // InternalRDL.g:2638:3: (enumLiteral_3= 'addrmap' )
                    // InternalRDL.g:2639:4: enumLiteral_3= 'addrmap'
                    {
                    enumLiteral_3=(Token)match(input,42,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getADDRMAPEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getPropertyTypeNameAccess().getADDRMAPEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:2646:3: (enumLiteral_4= 'reg' )
                    {
                    // InternalRDL.g:2646:3: (enumLiteral_4= 'reg' )
                    // InternalRDL.g:2647:4: enumLiteral_4= 'reg'
                    {
                    enumLiteral_4=(Token)match(input,43,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getREGEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getPropertyTypeNameAccess().getREGEnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;
                case 6 :
                    // InternalRDL.g:2654:3: (enumLiteral_5= 'regfile' )
                    {
                    // InternalRDL.g:2654:3: (enumLiteral_5= 'regfile' )
                    // InternalRDL.g:2655:4: enumLiteral_5= 'regfile'
                    {
                    enumLiteral_5=(Token)match(input,44,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getREGFILEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_5, grammarAccess.getPropertyTypeNameAccess().getREGFILEEnumLiteralDeclaration_5());
                    			

                    }


                    }
                    break;
                case 7 :
                    // InternalRDL.g:2662:3: (enumLiteral_6= 'field' )
                    {
                    // InternalRDL.g:2662:3: (enumLiteral_6= 'field' )
                    // InternalRDL.g:2663:4: enumLiteral_6= 'field'
                    {
                    enumLiteral_6=(Token)match(input,45,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getFIELDEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_6, grammarAccess.getPropertyTypeNameAccess().getFIELDEnumLiteralDeclaration_6());
                    			

                    }


                    }
                    break;
                case 8 :
                    // InternalRDL.g:2670:3: (enumLiteral_7= 'ref' )
                    {
                    // InternalRDL.g:2670:3: (enumLiteral_7= 'ref' )
                    // InternalRDL.g:2671:4: enumLiteral_7= 'ref'
                    {
                    enumLiteral_7=(Token)match(input,46,FOLLOW_2); 

                    				current = grammarAccess.getPropertyTypeNameAccess().getREFEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_7, grammarAccess.getPropertyTypeNameAccess().getREFEnumLiteralDeclaration_7());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyTypeName"


    // $ANTLR start "rulePropertyComponent"
    // InternalRDL.g:2681:1: rulePropertyComponent returns [Enumerator current=null] : ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'reg' ) | (enumLiteral_3= 'regfile' ) | (enumLiteral_4= 'field' ) | (enumLiteral_5= 'all' ) ) ;
    public final Enumerator rulePropertyComponent() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;


        	enterRule();

        try {
            // InternalRDL.g:2687:2: ( ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'reg' ) | (enumLiteral_3= 'regfile' ) | (enumLiteral_4= 'field' ) | (enumLiteral_5= 'all' ) ) )
            // InternalRDL.g:2688:2: ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'reg' ) | (enumLiteral_3= 'regfile' ) | (enumLiteral_4= 'field' ) | (enumLiteral_5= 'all' ) )
            {
            // InternalRDL.g:2688:2: ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'reg' ) | (enumLiteral_3= 'regfile' ) | (enumLiteral_4= 'field' ) | (enumLiteral_5= 'all' ) )
            int alt44=6;
            switch ( input.LA(1) ) {
            case 47:
                {
                alt44=1;
                }
                break;
            case 42:
                {
                alt44=2;
                }
                break;
            case 43:
                {
                alt44=3;
                }
                break;
            case 44:
                {
                alt44=4;
                }
                break;
            case 45:
                {
                alt44=5;
                }
                break;
            case 48:
                {
                alt44=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }

            switch (alt44) {
                case 1 :
                    // InternalRDL.g:2689:3: (enumLiteral_0= 'signal' )
                    {
                    // InternalRDL.g:2689:3: (enumLiteral_0= 'signal' )
                    // InternalRDL.g:2690:4: enumLiteral_0= 'signal'
                    {
                    enumLiteral_0=(Token)match(input,47,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getSIGNALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getPropertyComponentAccess().getSIGNALEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2697:3: (enumLiteral_1= 'addrmap' )
                    {
                    // InternalRDL.g:2697:3: (enumLiteral_1= 'addrmap' )
                    // InternalRDL.g:2698:4: enumLiteral_1= 'addrmap'
                    {
                    enumLiteral_1=(Token)match(input,42,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getADDRMAPEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getPropertyComponentAccess().getADDRMAPEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2705:3: (enumLiteral_2= 'reg' )
                    {
                    // InternalRDL.g:2705:3: (enumLiteral_2= 'reg' )
                    // InternalRDL.g:2706:4: enumLiteral_2= 'reg'
                    {
                    enumLiteral_2=(Token)match(input,43,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getREGEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getPropertyComponentAccess().getREGEnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:2713:3: (enumLiteral_3= 'regfile' )
                    {
                    // InternalRDL.g:2713:3: (enumLiteral_3= 'regfile' )
                    // InternalRDL.g:2714:4: enumLiteral_3= 'regfile'
                    {
                    enumLiteral_3=(Token)match(input,44,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getREGFILEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getPropertyComponentAccess().getREGFILEEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:2721:3: (enumLiteral_4= 'field' )
                    {
                    // InternalRDL.g:2721:3: (enumLiteral_4= 'field' )
                    // InternalRDL.g:2722:4: enumLiteral_4= 'field'
                    {
                    enumLiteral_4=(Token)match(input,45,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getFIELDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getPropertyComponentAccess().getFIELDEnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;
                case 6 :
                    // InternalRDL.g:2729:3: (enumLiteral_5= 'all' )
                    {
                    // InternalRDL.g:2729:3: (enumLiteral_5= 'all' )
                    // InternalRDL.g:2730:4: enumLiteral_5= 'all'
                    {
                    enumLiteral_5=(Token)match(input,48,FOLLOW_2); 

                    				current = grammarAccess.getPropertyComponentAccess().getALLEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_5, grammarAccess.getPropertyComponentAccess().getALLEnumLiteralDeclaration_5());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyComponent"


    // $ANTLR start "ruleComponentDefinitionType"
    // InternalRDL.g:2740:1: ruleComponentDefinitionType returns [Enumerator current=null] : ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'regfile' ) | (enumLiteral_3= 'reg' ) | (enumLiteral_4= 'field' ) ) ;
    public final Enumerator ruleComponentDefinitionType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;


        	enterRule();

        try {
            // InternalRDL.g:2746:2: ( ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'regfile' ) | (enumLiteral_3= 'reg' ) | (enumLiteral_4= 'field' ) ) )
            // InternalRDL.g:2747:2: ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'regfile' ) | (enumLiteral_3= 'reg' ) | (enumLiteral_4= 'field' ) )
            {
            // InternalRDL.g:2747:2: ( (enumLiteral_0= 'signal' ) | (enumLiteral_1= 'addrmap' ) | (enumLiteral_2= 'regfile' ) | (enumLiteral_3= 'reg' ) | (enumLiteral_4= 'field' ) )
            int alt45=5;
            switch ( input.LA(1) ) {
            case 47:
                {
                alt45=1;
                }
                break;
            case 42:
                {
                alt45=2;
                }
                break;
            case 44:
                {
                alt45=3;
                }
                break;
            case 43:
                {
                alt45=4;
                }
                break;
            case 45:
                {
                alt45=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }

            switch (alt45) {
                case 1 :
                    // InternalRDL.g:2748:3: (enumLiteral_0= 'signal' )
                    {
                    // InternalRDL.g:2748:3: (enumLiteral_0= 'signal' )
                    // InternalRDL.g:2749:4: enumLiteral_0= 'signal'
                    {
                    enumLiteral_0=(Token)match(input,47,FOLLOW_2); 

                    				current = grammarAccess.getComponentDefinitionTypeAccess().getSIGNALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getComponentDefinitionTypeAccess().getSIGNALEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2756:3: (enumLiteral_1= 'addrmap' )
                    {
                    // InternalRDL.g:2756:3: (enumLiteral_1= 'addrmap' )
                    // InternalRDL.g:2757:4: enumLiteral_1= 'addrmap'
                    {
                    enumLiteral_1=(Token)match(input,42,FOLLOW_2); 

                    				current = grammarAccess.getComponentDefinitionTypeAccess().getADDRMAPEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getComponentDefinitionTypeAccess().getADDRMAPEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2764:3: (enumLiteral_2= 'regfile' )
                    {
                    // InternalRDL.g:2764:3: (enumLiteral_2= 'regfile' )
                    // InternalRDL.g:2765:4: enumLiteral_2= 'regfile'
                    {
                    enumLiteral_2=(Token)match(input,44,FOLLOW_2); 

                    				current = grammarAccess.getComponentDefinitionTypeAccess().getREGFILEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getComponentDefinitionTypeAccess().getREGFILEEnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:2772:3: (enumLiteral_3= 'reg' )
                    {
                    // InternalRDL.g:2772:3: (enumLiteral_3= 'reg' )
                    // InternalRDL.g:2773:4: enumLiteral_3= 'reg'
                    {
                    enumLiteral_3=(Token)match(input,43,FOLLOW_2); 

                    				current = grammarAccess.getComponentDefinitionTypeAccess().getREGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getComponentDefinitionTypeAccess().getREGEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:2780:3: (enumLiteral_4= 'field' )
                    {
                    // InternalRDL.g:2780:3: (enumLiteral_4= 'field' )
                    // InternalRDL.g:2781:4: enumLiteral_4= 'field'
                    {
                    enumLiteral_4=(Token)match(input,45,FOLLOW_2); 

                    				current = grammarAccess.getComponentDefinitionTypeAccess().getFIELDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getComponentDefinitionTypeAccess().getFIELDEnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentDefinitionType"


    // $ANTLR start "ruleProperty"
    // InternalRDL.g:2791:1: ruleProperty returns [Enumerator current=null] : ( (enumLiteral_0= 'name' ) | (enumLiteral_1= 'desc' ) | (enumLiteral_2= 'arbiter' ) | (enumLiteral_3= 'rset' ) | (enumLiteral_4= 'rclr' ) | (enumLiteral_5= 'woclr' ) | (enumLiteral_6= 'woset' ) | (enumLiteral_7= 'we' ) | (enumLiteral_8= 'wel' ) | (enumLiteral_9= 'swwe' ) | (enumLiteral_10= 'swwel' ) | (enumLiteral_11= 'hwset' ) | (enumLiteral_12= 'hwclr' ) | (enumLiteral_13= 'swmod' ) | (enumLiteral_14= 'swacc' ) | (enumLiteral_15= 'sticky' ) | (enumLiteral_16= 'stickybit' ) | (enumLiteral_17= 'intr' ) | (enumLiteral_18= 'anded' ) | (enumLiteral_19= 'ored' ) | (enumLiteral_20= 'xored' ) | (enumLiteral_21= 'counter' ) | (enumLiteral_22= 'overflow' ) | (enumLiteral_23= 'sharedextbus' ) | (enumLiteral_24= 'errextbus' ) | (enumLiteral_25= 'reset' ) | (enumLiteral_26= 'littleendian' ) | (enumLiteral_27= 'bigendian' ) | (enumLiteral_28= 'rsvdset' ) | (enumLiteral_29= 'rsvdsetX' ) | (enumLiteral_30= 'bridge' ) | (enumLiteral_31= 'shared' ) | (enumLiteral_32= 'msb0' ) | (enumLiteral_33= 'lsb0' ) | (enumLiteral_34= 'sync' ) | (enumLiteral_35= 'async' ) | (enumLiteral_36= 'cpuif_reset' ) | (enumLiteral_37= 'field_reset' ) | (enumLiteral_38= 'activehigh' ) | (enumLiteral_39= 'activelow' ) | (enumLiteral_40= 'singlepulse' ) | (enumLiteral_41= 'underflow' ) | (enumLiteral_42= 'incr' ) | (enumLiteral_43= 'decr' ) | (enumLiteral_44= 'incrwidth' ) | (enumLiteral_45= 'decrwidth' ) | (enumLiteral_46= 'incrvalue' ) | (enumLiteral_47= 'decrvalue' ) | (enumLiteral_48= 'saturate' ) | (enumLiteral_49= 'decrsaturate' ) | (enumLiteral_50= 'threshold' ) | (enumLiteral_51= 'decrthreshold' ) | (enumLiteral_52= 'dontcompare' ) | (enumLiteral_53= 'donttest' ) | (enumLiteral_54= 'internal' ) | (enumLiteral_55= 'alignment' ) | (enumLiteral_56= 'regwidth' ) | (enumLiteral_57= 'fieldwidth' ) | (enumLiteral_58= 'signalwidth' ) | (enumLiteral_59= 'accesswidth' ) | (enumLiteral_60= 'sw' ) | (enumLiteral_61= 'hw' ) | (enumLiteral_62= 'addressing' ) | (enumLiteral_63= 'precedence' ) | (enumLiteral_64= 'encode' ) | (enumLiteral_65= 'resetsignal' ) | (enumLiteral_66= 'clock' ) | (enumLiteral_67= 'mask' ) | (enumLiteral_68= 'enable' ) | (enumLiteral_69= 'hwenable' ) | (enumLiteral_70= 'hwmask' ) | (enumLiteral_71= 'haltmask' ) | (enumLiteral_72= 'haltenable' ) | (enumLiteral_73= 'halt' ) | (enumLiteral_74= 'next' ) ) ;
    public final Enumerator ruleProperty() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;
        Token enumLiteral_9=null;
        Token enumLiteral_10=null;
        Token enumLiteral_11=null;
        Token enumLiteral_12=null;
        Token enumLiteral_13=null;
        Token enumLiteral_14=null;
        Token enumLiteral_15=null;
        Token enumLiteral_16=null;
        Token enumLiteral_17=null;
        Token enumLiteral_18=null;
        Token enumLiteral_19=null;
        Token enumLiteral_20=null;
        Token enumLiteral_21=null;
        Token enumLiteral_22=null;
        Token enumLiteral_23=null;
        Token enumLiteral_24=null;
        Token enumLiteral_25=null;
        Token enumLiteral_26=null;
        Token enumLiteral_27=null;
        Token enumLiteral_28=null;
        Token enumLiteral_29=null;
        Token enumLiteral_30=null;
        Token enumLiteral_31=null;
        Token enumLiteral_32=null;
        Token enumLiteral_33=null;
        Token enumLiteral_34=null;
        Token enumLiteral_35=null;
        Token enumLiteral_36=null;
        Token enumLiteral_37=null;
        Token enumLiteral_38=null;
        Token enumLiteral_39=null;
        Token enumLiteral_40=null;
        Token enumLiteral_41=null;
        Token enumLiteral_42=null;
        Token enumLiteral_43=null;
        Token enumLiteral_44=null;
        Token enumLiteral_45=null;
        Token enumLiteral_46=null;
        Token enumLiteral_47=null;
        Token enumLiteral_48=null;
        Token enumLiteral_49=null;
        Token enumLiteral_50=null;
        Token enumLiteral_51=null;
        Token enumLiteral_52=null;
        Token enumLiteral_53=null;
        Token enumLiteral_54=null;
        Token enumLiteral_55=null;
        Token enumLiteral_56=null;
        Token enumLiteral_57=null;
        Token enumLiteral_58=null;
        Token enumLiteral_59=null;
        Token enumLiteral_60=null;
        Token enumLiteral_61=null;
        Token enumLiteral_62=null;
        Token enumLiteral_63=null;
        Token enumLiteral_64=null;
        Token enumLiteral_65=null;
        Token enumLiteral_66=null;
        Token enumLiteral_67=null;
        Token enumLiteral_68=null;
        Token enumLiteral_69=null;
        Token enumLiteral_70=null;
        Token enumLiteral_71=null;
        Token enumLiteral_72=null;
        Token enumLiteral_73=null;
        Token enumLiteral_74=null;


        	enterRule();

        try {
            // InternalRDL.g:2797:2: ( ( (enumLiteral_0= 'name' ) | (enumLiteral_1= 'desc' ) | (enumLiteral_2= 'arbiter' ) | (enumLiteral_3= 'rset' ) | (enumLiteral_4= 'rclr' ) | (enumLiteral_5= 'woclr' ) | (enumLiteral_6= 'woset' ) | (enumLiteral_7= 'we' ) | (enumLiteral_8= 'wel' ) | (enumLiteral_9= 'swwe' ) | (enumLiteral_10= 'swwel' ) | (enumLiteral_11= 'hwset' ) | (enumLiteral_12= 'hwclr' ) | (enumLiteral_13= 'swmod' ) | (enumLiteral_14= 'swacc' ) | (enumLiteral_15= 'sticky' ) | (enumLiteral_16= 'stickybit' ) | (enumLiteral_17= 'intr' ) | (enumLiteral_18= 'anded' ) | (enumLiteral_19= 'ored' ) | (enumLiteral_20= 'xored' ) | (enumLiteral_21= 'counter' ) | (enumLiteral_22= 'overflow' ) | (enumLiteral_23= 'sharedextbus' ) | (enumLiteral_24= 'errextbus' ) | (enumLiteral_25= 'reset' ) | (enumLiteral_26= 'littleendian' ) | (enumLiteral_27= 'bigendian' ) | (enumLiteral_28= 'rsvdset' ) | (enumLiteral_29= 'rsvdsetX' ) | (enumLiteral_30= 'bridge' ) | (enumLiteral_31= 'shared' ) | (enumLiteral_32= 'msb0' ) | (enumLiteral_33= 'lsb0' ) | (enumLiteral_34= 'sync' ) | (enumLiteral_35= 'async' ) | (enumLiteral_36= 'cpuif_reset' ) | (enumLiteral_37= 'field_reset' ) | (enumLiteral_38= 'activehigh' ) | (enumLiteral_39= 'activelow' ) | (enumLiteral_40= 'singlepulse' ) | (enumLiteral_41= 'underflow' ) | (enumLiteral_42= 'incr' ) | (enumLiteral_43= 'decr' ) | (enumLiteral_44= 'incrwidth' ) | (enumLiteral_45= 'decrwidth' ) | (enumLiteral_46= 'incrvalue' ) | (enumLiteral_47= 'decrvalue' ) | (enumLiteral_48= 'saturate' ) | (enumLiteral_49= 'decrsaturate' ) | (enumLiteral_50= 'threshold' ) | (enumLiteral_51= 'decrthreshold' ) | (enumLiteral_52= 'dontcompare' ) | (enumLiteral_53= 'donttest' ) | (enumLiteral_54= 'internal' ) | (enumLiteral_55= 'alignment' ) | (enumLiteral_56= 'regwidth' ) | (enumLiteral_57= 'fieldwidth' ) | (enumLiteral_58= 'signalwidth' ) | (enumLiteral_59= 'accesswidth' ) | (enumLiteral_60= 'sw' ) | (enumLiteral_61= 'hw' ) | (enumLiteral_62= 'addressing' ) | (enumLiteral_63= 'precedence' ) | (enumLiteral_64= 'encode' ) | (enumLiteral_65= 'resetsignal' ) | (enumLiteral_66= 'clock' ) | (enumLiteral_67= 'mask' ) | (enumLiteral_68= 'enable' ) | (enumLiteral_69= 'hwenable' ) | (enumLiteral_70= 'hwmask' ) | (enumLiteral_71= 'haltmask' ) | (enumLiteral_72= 'haltenable' ) | (enumLiteral_73= 'halt' ) | (enumLiteral_74= 'next' ) ) )
            // InternalRDL.g:2798:2: ( (enumLiteral_0= 'name' ) | (enumLiteral_1= 'desc' ) | (enumLiteral_2= 'arbiter' ) | (enumLiteral_3= 'rset' ) | (enumLiteral_4= 'rclr' ) | (enumLiteral_5= 'woclr' ) | (enumLiteral_6= 'woset' ) | (enumLiteral_7= 'we' ) | (enumLiteral_8= 'wel' ) | (enumLiteral_9= 'swwe' ) | (enumLiteral_10= 'swwel' ) | (enumLiteral_11= 'hwset' ) | (enumLiteral_12= 'hwclr' ) | (enumLiteral_13= 'swmod' ) | (enumLiteral_14= 'swacc' ) | (enumLiteral_15= 'sticky' ) | (enumLiteral_16= 'stickybit' ) | (enumLiteral_17= 'intr' ) | (enumLiteral_18= 'anded' ) | (enumLiteral_19= 'ored' ) | (enumLiteral_20= 'xored' ) | (enumLiteral_21= 'counter' ) | (enumLiteral_22= 'overflow' ) | (enumLiteral_23= 'sharedextbus' ) | (enumLiteral_24= 'errextbus' ) | (enumLiteral_25= 'reset' ) | (enumLiteral_26= 'littleendian' ) | (enumLiteral_27= 'bigendian' ) | (enumLiteral_28= 'rsvdset' ) | (enumLiteral_29= 'rsvdsetX' ) | (enumLiteral_30= 'bridge' ) | (enumLiteral_31= 'shared' ) | (enumLiteral_32= 'msb0' ) | (enumLiteral_33= 'lsb0' ) | (enumLiteral_34= 'sync' ) | (enumLiteral_35= 'async' ) | (enumLiteral_36= 'cpuif_reset' ) | (enumLiteral_37= 'field_reset' ) | (enumLiteral_38= 'activehigh' ) | (enumLiteral_39= 'activelow' ) | (enumLiteral_40= 'singlepulse' ) | (enumLiteral_41= 'underflow' ) | (enumLiteral_42= 'incr' ) | (enumLiteral_43= 'decr' ) | (enumLiteral_44= 'incrwidth' ) | (enumLiteral_45= 'decrwidth' ) | (enumLiteral_46= 'incrvalue' ) | (enumLiteral_47= 'decrvalue' ) | (enumLiteral_48= 'saturate' ) | (enumLiteral_49= 'decrsaturate' ) | (enumLiteral_50= 'threshold' ) | (enumLiteral_51= 'decrthreshold' ) | (enumLiteral_52= 'dontcompare' ) | (enumLiteral_53= 'donttest' ) | (enumLiteral_54= 'internal' ) | (enumLiteral_55= 'alignment' ) | (enumLiteral_56= 'regwidth' ) | (enumLiteral_57= 'fieldwidth' ) | (enumLiteral_58= 'signalwidth' ) | (enumLiteral_59= 'accesswidth' ) | (enumLiteral_60= 'sw' ) | (enumLiteral_61= 'hw' ) | (enumLiteral_62= 'addressing' ) | (enumLiteral_63= 'precedence' ) | (enumLiteral_64= 'encode' ) | (enumLiteral_65= 'resetsignal' ) | (enumLiteral_66= 'clock' ) | (enumLiteral_67= 'mask' ) | (enumLiteral_68= 'enable' ) | (enumLiteral_69= 'hwenable' ) | (enumLiteral_70= 'hwmask' ) | (enumLiteral_71= 'haltmask' ) | (enumLiteral_72= 'haltenable' ) | (enumLiteral_73= 'halt' ) | (enumLiteral_74= 'next' ) )
            {
            // InternalRDL.g:2798:2: ( (enumLiteral_0= 'name' ) | (enumLiteral_1= 'desc' ) | (enumLiteral_2= 'arbiter' ) | (enumLiteral_3= 'rset' ) | (enumLiteral_4= 'rclr' ) | (enumLiteral_5= 'woclr' ) | (enumLiteral_6= 'woset' ) | (enumLiteral_7= 'we' ) | (enumLiteral_8= 'wel' ) | (enumLiteral_9= 'swwe' ) | (enumLiteral_10= 'swwel' ) | (enumLiteral_11= 'hwset' ) | (enumLiteral_12= 'hwclr' ) | (enumLiteral_13= 'swmod' ) | (enumLiteral_14= 'swacc' ) | (enumLiteral_15= 'sticky' ) | (enumLiteral_16= 'stickybit' ) | (enumLiteral_17= 'intr' ) | (enumLiteral_18= 'anded' ) | (enumLiteral_19= 'ored' ) | (enumLiteral_20= 'xored' ) | (enumLiteral_21= 'counter' ) | (enumLiteral_22= 'overflow' ) | (enumLiteral_23= 'sharedextbus' ) | (enumLiteral_24= 'errextbus' ) | (enumLiteral_25= 'reset' ) | (enumLiteral_26= 'littleendian' ) | (enumLiteral_27= 'bigendian' ) | (enumLiteral_28= 'rsvdset' ) | (enumLiteral_29= 'rsvdsetX' ) | (enumLiteral_30= 'bridge' ) | (enumLiteral_31= 'shared' ) | (enumLiteral_32= 'msb0' ) | (enumLiteral_33= 'lsb0' ) | (enumLiteral_34= 'sync' ) | (enumLiteral_35= 'async' ) | (enumLiteral_36= 'cpuif_reset' ) | (enumLiteral_37= 'field_reset' ) | (enumLiteral_38= 'activehigh' ) | (enumLiteral_39= 'activelow' ) | (enumLiteral_40= 'singlepulse' ) | (enumLiteral_41= 'underflow' ) | (enumLiteral_42= 'incr' ) | (enumLiteral_43= 'decr' ) | (enumLiteral_44= 'incrwidth' ) | (enumLiteral_45= 'decrwidth' ) | (enumLiteral_46= 'incrvalue' ) | (enumLiteral_47= 'decrvalue' ) | (enumLiteral_48= 'saturate' ) | (enumLiteral_49= 'decrsaturate' ) | (enumLiteral_50= 'threshold' ) | (enumLiteral_51= 'decrthreshold' ) | (enumLiteral_52= 'dontcompare' ) | (enumLiteral_53= 'donttest' ) | (enumLiteral_54= 'internal' ) | (enumLiteral_55= 'alignment' ) | (enumLiteral_56= 'regwidth' ) | (enumLiteral_57= 'fieldwidth' ) | (enumLiteral_58= 'signalwidth' ) | (enumLiteral_59= 'accesswidth' ) | (enumLiteral_60= 'sw' ) | (enumLiteral_61= 'hw' ) | (enumLiteral_62= 'addressing' ) | (enumLiteral_63= 'precedence' ) | (enumLiteral_64= 'encode' ) | (enumLiteral_65= 'resetsignal' ) | (enumLiteral_66= 'clock' ) | (enumLiteral_67= 'mask' ) | (enumLiteral_68= 'enable' ) | (enumLiteral_69= 'hwenable' ) | (enumLiteral_70= 'hwmask' ) | (enumLiteral_71= 'haltmask' ) | (enumLiteral_72= 'haltenable' ) | (enumLiteral_73= 'halt' ) | (enumLiteral_74= 'next' ) )
            int alt46=75;
            switch ( input.LA(1) ) {
            case 37:
                {
                alt46=1;
                }
                break;
            case 38:
                {
                alt46=2;
                }
                break;
            case 49:
                {
                alt46=3;
                }
                break;
            case 50:
                {
                alt46=4;
                }
                break;
            case 51:
                {
                alt46=5;
                }
                break;
            case 52:
                {
                alt46=6;
                }
                break;
            case 53:
                {
                alt46=7;
                }
                break;
            case 54:
                {
                alt46=8;
                }
                break;
            case 55:
                {
                alt46=9;
                }
                break;
            case 56:
                {
                alt46=10;
                }
                break;
            case 57:
                {
                alt46=11;
                }
                break;
            case 58:
                {
                alt46=12;
                }
                break;
            case 59:
                {
                alt46=13;
                }
                break;
            case 60:
                {
                alt46=14;
                }
                break;
            case 61:
                {
                alt46=15;
                }
                break;
            case 62:
                {
                alt46=16;
                }
                break;
            case 63:
                {
                alt46=17;
                }
                break;
            case 64:
                {
                alt46=18;
                }
                break;
            case 65:
                {
                alt46=19;
                }
                break;
            case 66:
                {
                alt46=20;
                }
                break;
            case 67:
                {
                alt46=21;
                }
                break;
            case 68:
                {
                alt46=22;
                }
                break;
            case 69:
                {
                alt46=23;
                }
                break;
            case 70:
                {
                alt46=24;
                }
                break;
            case 71:
                {
                alt46=25;
                }
                break;
            case 72:
                {
                alt46=26;
                }
                break;
            case 73:
                {
                alt46=27;
                }
                break;
            case 74:
                {
                alt46=28;
                }
                break;
            case 75:
                {
                alt46=29;
                }
                break;
            case 76:
                {
                alt46=30;
                }
                break;
            case 77:
                {
                alt46=31;
                }
                break;
            case 78:
                {
                alt46=32;
                }
                break;
            case 79:
                {
                alt46=33;
                }
                break;
            case 80:
                {
                alt46=34;
                }
                break;
            case 81:
                {
                alt46=35;
                }
                break;
            case 82:
                {
                alt46=36;
                }
                break;
            case 83:
                {
                alt46=37;
                }
                break;
            case 84:
                {
                alt46=38;
                }
                break;
            case 85:
                {
                alt46=39;
                }
                break;
            case 86:
                {
                alt46=40;
                }
                break;
            case 87:
                {
                alt46=41;
                }
                break;
            case 88:
                {
                alt46=42;
                }
                break;
            case 89:
                {
                alt46=43;
                }
                break;
            case 90:
                {
                alt46=44;
                }
                break;
            case 91:
                {
                alt46=45;
                }
                break;
            case 92:
                {
                alt46=46;
                }
                break;
            case 93:
                {
                alt46=47;
                }
                break;
            case 94:
                {
                alt46=48;
                }
                break;
            case 95:
                {
                alt46=49;
                }
                break;
            case 96:
                {
                alt46=50;
                }
                break;
            case 97:
                {
                alt46=51;
                }
                break;
            case 98:
                {
                alt46=52;
                }
                break;
            case 99:
                {
                alt46=53;
                }
                break;
            case 100:
                {
                alt46=54;
                }
                break;
            case 25:
                {
                alt46=55;
                }
                break;
            case 101:
                {
                alt46=56;
                }
                break;
            case 102:
                {
                alt46=57;
                }
                break;
            case 103:
                {
                alt46=58;
                }
                break;
            case 104:
                {
                alt46=59;
                }
                break;
            case 105:
                {
                alt46=60;
                }
                break;
            case 106:
                {
                alt46=61;
                }
                break;
            case 107:
                {
                alt46=62;
                }
                break;
            case 108:
                {
                alt46=63;
                }
                break;
            case 109:
                {
                alt46=64;
                }
                break;
            case 110:
                {
                alt46=65;
                }
                break;
            case 111:
                {
                alt46=66;
                }
                break;
            case 112:
                {
                alt46=67;
                }
                break;
            case 113:
                {
                alt46=68;
                }
                break;
            case 114:
                {
                alt46=69;
                }
                break;
            case 115:
                {
                alt46=70;
                }
                break;
            case 116:
                {
                alt46=71;
                }
                break;
            case 117:
                {
                alt46=72;
                }
                break;
            case 118:
                {
                alt46=73;
                }
                break;
            case 119:
                {
                alt46=74;
                }
                break;
            case 120:
                {
                alt46=75;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }

            switch (alt46) {
                case 1 :
                    // InternalRDL.g:2799:3: (enumLiteral_0= 'name' )
                    {
                    // InternalRDL.g:2799:3: (enumLiteral_0= 'name' )
                    // InternalRDL.g:2800:4: enumLiteral_0= 'name'
                    {
                    enumLiteral_0=(Token)match(input,37,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getNAMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getPropertyAccess().getNAMEEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:2807:3: (enumLiteral_1= 'desc' )
                    {
                    // InternalRDL.g:2807:3: (enumLiteral_1= 'desc' )
                    // InternalRDL.g:2808:4: enumLiteral_1= 'desc'
                    {
                    enumLiteral_1=(Token)match(input,38,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDESCEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getPropertyAccess().getDESCEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:2815:3: (enumLiteral_2= 'arbiter' )
                    {
                    // InternalRDL.g:2815:3: (enumLiteral_2= 'arbiter' )
                    // InternalRDL.g:2816:4: enumLiteral_2= 'arbiter'
                    {
                    enumLiteral_2=(Token)match(input,49,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getARBITEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getPropertyAccess().getARBITEREnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:2823:3: (enumLiteral_3= 'rset' )
                    {
                    // InternalRDL.g:2823:3: (enumLiteral_3= 'rset' )
                    // InternalRDL.g:2824:4: enumLiteral_3= 'rset'
                    {
                    enumLiteral_3=(Token)match(input,50,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRSETEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getPropertyAccess().getRSETEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:2831:3: (enumLiteral_4= 'rclr' )
                    {
                    // InternalRDL.g:2831:3: (enumLiteral_4= 'rclr' )
                    // InternalRDL.g:2832:4: enumLiteral_4= 'rclr'
                    {
                    enumLiteral_4=(Token)match(input,51,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRCLREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getPropertyAccess().getRCLREnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;
                case 6 :
                    // InternalRDL.g:2839:3: (enumLiteral_5= 'woclr' )
                    {
                    // InternalRDL.g:2839:3: (enumLiteral_5= 'woclr' )
                    // InternalRDL.g:2840:4: enumLiteral_5= 'woclr'
                    {
                    enumLiteral_5=(Token)match(input,52,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getWOCLREnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_5, grammarAccess.getPropertyAccess().getWOCLREnumLiteralDeclaration_5());
                    			

                    }


                    }
                    break;
                case 7 :
                    // InternalRDL.g:2847:3: (enumLiteral_6= 'woset' )
                    {
                    // InternalRDL.g:2847:3: (enumLiteral_6= 'woset' )
                    // InternalRDL.g:2848:4: enumLiteral_6= 'woset'
                    {
                    enumLiteral_6=(Token)match(input,53,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getWOSETEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_6, grammarAccess.getPropertyAccess().getWOSETEnumLiteralDeclaration_6());
                    			

                    }


                    }
                    break;
                case 8 :
                    // InternalRDL.g:2855:3: (enumLiteral_7= 'we' )
                    {
                    // InternalRDL.g:2855:3: (enumLiteral_7= 'we' )
                    // InternalRDL.g:2856:4: enumLiteral_7= 'we'
                    {
                    enumLiteral_7=(Token)match(input,54,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getWEEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_7, grammarAccess.getPropertyAccess().getWEEnumLiteralDeclaration_7());
                    			

                    }


                    }
                    break;
                case 9 :
                    // InternalRDL.g:2863:3: (enumLiteral_8= 'wel' )
                    {
                    // InternalRDL.g:2863:3: (enumLiteral_8= 'wel' )
                    // InternalRDL.g:2864:4: enumLiteral_8= 'wel'
                    {
                    enumLiteral_8=(Token)match(input,55,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getWELEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_8, grammarAccess.getPropertyAccess().getWELEnumLiteralDeclaration_8());
                    			

                    }


                    }
                    break;
                case 10 :
                    // InternalRDL.g:2871:3: (enumLiteral_9= 'swwe' )
                    {
                    // InternalRDL.g:2871:3: (enumLiteral_9= 'swwe' )
                    // InternalRDL.g:2872:4: enumLiteral_9= 'swwe'
                    {
                    enumLiteral_9=(Token)match(input,56,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSWWEEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_9, grammarAccess.getPropertyAccess().getSWWEEnumLiteralDeclaration_9());
                    			

                    }


                    }
                    break;
                case 11 :
                    // InternalRDL.g:2879:3: (enumLiteral_10= 'swwel' )
                    {
                    // InternalRDL.g:2879:3: (enumLiteral_10= 'swwel' )
                    // InternalRDL.g:2880:4: enumLiteral_10= 'swwel'
                    {
                    enumLiteral_10=(Token)match(input,57,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSWWELEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_10, grammarAccess.getPropertyAccess().getSWWELEnumLiteralDeclaration_10());
                    			

                    }


                    }
                    break;
                case 12 :
                    // InternalRDL.g:2887:3: (enumLiteral_11= 'hwset' )
                    {
                    // InternalRDL.g:2887:3: (enumLiteral_11= 'hwset' )
                    // InternalRDL.g:2888:4: enumLiteral_11= 'hwset'
                    {
                    enumLiteral_11=(Token)match(input,58,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHWSETEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_11, grammarAccess.getPropertyAccess().getHWSETEnumLiteralDeclaration_11());
                    			

                    }


                    }
                    break;
                case 13 :
                    // InternalRDL.g:2895:3: (enumLiteral_12= 'hwclr' )
                    {
                    // InternalRDL.g:2895:3: (enumLiteral_12= 'hwclr' )
                    // InternalRDL.g:2896:4: enumLiteral_12= 'hwclr'
                    {
                    enumLiteral_12=(Token)match(input,59,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHWCLREnumLiteralDeclaration_12().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_12, grammarAccess.getPropertyAccess().getHWCLREnumLiteralDeclaration_12());
                    			

                    }


                    }
                    break;
                case 14 :
                    // InternalRDL.g:2903:3: (enumLiteral_13= 'swmod' )
                    {
                    // InternalRDL.g:2903:3: (enumLiteral_13= 'swmod' )
                    // InternalRDL.g:2904:4: enumLiteral_13= 'swmod'
                    {
                    enumLiteral_13=(Token)match(input,60,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSWMODEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_13, grammarAccess.getPropertyAccess().getSWMODEnumLiteralDeclaration_13());
                    			

                    }


                    }
                    break;
                case 15 :
                    // InternalRDL.g:2911:3: (enumLiteral_14= 'swacc' )
                    {
                    // InternalRDL.g:2911:3: (enumLiteral_14= 'swacc' )
                    // InternalRDL.g:2912:4: enumLiteral_14= 'swacc'
                    {
                    enumLiteral_14=(Token)match(input,61,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSWACCEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_14, grammarAccess.getPropertyAccess().getSWACCEnumLiteralDeclaration_14());
                    			

                    }


                    }
                    break;
                case 16 :
                    // InternalRDL.g:2919:3: (enumLiteral_15= 'sticky' )
                    {
                    // InternalRDL.g:2919:3: (enumLiteral_15= 'sticky' )
                    // InternalRDL.g:2920:4: enumLiteral_15= 'sticky'
                    {
                    enumLiteral_15=(Token)match(input,62,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSTICKYEnumLiteralDeclaration_15().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_15, grammarAccess.getPropertyAccess().getSTICKYEnumLiteralDeclaration_15());
                    			

                    }


                    }
                    break;
                case 17 :
                    // InternalRDL.g:2927:3: (enumLiteral_16= 'stickybit' )
                    {
                    // InternalRDL.g:2927:3: (enumLiteral_16= 'stickybit' )
                    // InternalRDL.g:2928:4: enumLiteral_16= 'stickybit'
                    {
                    enumLiteral_16=(Token)match(input,63,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSTICKYBITEnumLiteralDeclaration_16().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_16, grammarAccess.getPropertyAccess().getSTICKYBITEnumLiteralDeclaration_16());
                    			

                    }


                    }
                    break;
                case 18 :
                    // InternalRDL.g:2935:3: (enumLiteral_17= 'intr' )
                    {
                    // InternalRDL.g:2935:3: (enumLiteral_17= 'intr' )
                    // InternalRDL.g:2936:4: enumLiteral_17= 'intr'
                    {
                    enumLiteral_17=(Token)match(input,64,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getINTREnumLiteralDeclaration_17().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_17, grammarAccess.getPropertyAccess().getINTREnumLiteralDeclaration_17());
                    			

                    }


                    }
                    break;
                case 19 :
                    // InternalRDL.g:2943:3: (enumLiteral_18= 'anded' )
                    {
                    // InternalRDL.g:2943:3: (enumLiteral_18= 'anded' )
                    // InternalRDL.g:2944:4: enumLiteral_18= 'anded'
                    {
                    enumLiteral_18=(Token)match(input,65,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getANDEDEnumLiteralDeclaration_18().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_18, grammarAccess.getPropertyAccess().getANDEDEnumLiteralDeclaration_18());
                    			

                    }


                    }
                    break;
                case 20 :
                    // InternalRDL.g:2951:3: (enumLiteral_19= 'ored' )
                    {
                    // InternalRDL.g:2951:3: (enumLiteral_19= 'ored' )
                    // InternalRDL.g:2952:4: enumLiteral_19= 'ored'
                    {
                    enumLiteral_19=(Token)match(input,66,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getOREDEnumLiteralDeclaration_19().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_19, grammarAccess.getPropertyAccess().getOREDEnumLiteralDeclaration_19());
                    			

                    }


                    }
                    break;
                case 21 :
                    // InternalRDL.g:2959:3: (enumLiteral_20= 'xored' )
                    {
                    // InternalRDL.g:2959:3: (enumLiteral_20= 'xored' )
                    // InternalRDL.g:2960:4: enumLiteral_20= 'xored'
                    {
                    enumLiteral_20=(Token)match(input,67,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getXOREDEnumLiteralDeclaration_20().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_20, grammarAccess.getPropertyAccess().getXOREDEnumLiteralDeclaration_20());
                    			

                    }


                    }
                    break;
                case 22 :
                    // InternalRDL.g:2967:3: (enumLiteral_21= 'counter' )
                    {
                    // InternalRDL.g:2967:3: (enumLiteral_21= 'counter' )
                    // InternalRDL.g:2968:4: enumLiteral_21= 'counter'
                    {
                    enumLiteral_21=(Token)match(input,68,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getCOUNTEREnumLiteralDeclaration_21().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_21, grammarAccess.getPropertyAccess().getCOUNTEREnumLiteralDeclaration_21());
                    			

                    }


                    }
                    break;
                case 23 :
                    // InternalRDL.g:2975:3: (enumLiteral_22= 'overflow' )
                    {
                    // InternalRDL.g:2975:3: (enumLiteral_22= 'overflow' )
                    // InternalRDL.g:2976:4: enumLiteral_22= 'overflow'
                    {
                    enumLiteral_22=(Token)match(input,69,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getOVERFLOWEnumLiteralDeclaration_22().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_22, grammarAccess.getPropertyAccess().getOVERFLOWEnumLiteralDeclaration_22());
                    			

                    }


                    }
                    break;
                case 24 :
                    // InternalRDL.g:2983:3: (enumLiteral_23= 'sharedextbus' )
                    {
                    // InternalRDL.g:2983:3: (enumLiteral_23= 'sharedextbus' )
                    // InternalRDL.g:2984:4: enumLiteral_23= 'sharedextbus'
                    {
                    enumLiteral_23=(Token)match(input,70,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSHAREDEXTBUSEnumLiteralDeclaration_23().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_23, grammarAccess.getPropertyAccess().getSHAREDEXTBUSEnumLiteralDeclaration_23());
                    			

                    }


                    }
                    break;
                case 25 :
                    // InternalRDL.g:2991:3: (enumLiteral_24= 'errextbus' )
                    {
                    // InternalRDL.g:2991:3: (enumLiteral_24= 'errextbus' )
                    // InternalRDL.g:2992:4: enumLiteral_24= 'errextbus'
                    {
                    enumLiteral_24=(Token)match(input,71,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getERREXTBUSEnumLiteralDeclaration_24().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_24, grammarAccess.getPropertyAccess().getERREXTBUSEnumLiteralDeclaration_24());
                    			

                    }


                    }
                    break;
                case 26 :
                    // InternalRDL.g:2999:3: (enumLiteral_25= 'reset' )
                    {
                    // InternalRDL.g:2999:3: (enumLiteral_25= 'reset' )
                    // InternalRDL.g:3000:4: enumLiteral_25= 'reset'
                    {
                    enumLiteral_25=(Token)match(input,72,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRESETEnumLiteralDeclaration_25().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_25, grammarAccess.getPropertyAccess().getRESETEnumLiteralDeclaration_25());
                    			

                    }


                    }
                    break;
                case 27 :
                    // InternalRDL.g:3007:3: (enumLiteral_26= 'littleendian' )
                    {
                    // InternalRDL.g:3007:3: (enumLiteral_26= 'littleendian' )
                    // InternalRDL.g:3008:4: enumLiteral_26= 'littleendian'
                    {
                    enumLiteral_26=(Token)match(input,73,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getLITTLEENDIANEnumLiteralDeclaration_26().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_26, grammarAccess.getPropertyAccess().getLITTLEENDIANEnumLiteralDeclaration_26());
                    			

                    }


                    }
                    break;
                case 28 :
                    // InternalRDL.g:3015:3: (enumLiteral_27= 'bigendian' )
                    {
                    // InternalRDL.g:3015:3: (enumLiteral_27= 'bigendian' )
                    // InternalRDL.g:3016:4: enumLiteral_27= 'bigendian'
                    {
                    enumLiteral_27=(Token)match(input,74,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getBIGENDIANEnumLiteralDeclaration_27().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_27, grammarAccess.getPropertyAccess().getBIGENDIANEnumLiteralDeclaration_27());
                    			

                    }


                    }
                    break;
                case 29 :
                    // InternalRDL.g:3023:3: (enumLiteral_28= 'rsvdset' )
                    {
                    // InternalRDL.g:3023:3: (enumLiteral_28= 'rsvdset' )
                    // InternalRDL.g:3024:4: enumLiteral_28= 'rsvdset'
                    {
                    enumLiteral_28=(Token)match(input,75,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRSVDSETEnumLiteralDeclaration_28().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_28, grammarAccess.getPropertyAccess().getRSVDSETEnumLiteralDeclaration_28());
                    			

                    }


                    }
                    break;
                case 30 :
                    // InternalRDL.g:3031:3: (enumLiteral_29= 'rsvdsetX' )
                    {
                    // InternalRDL.g:3031:3: (enumLiteral_29= 'rsvdsetX' )
                    // InternalRDL.g:3032:4: enumLiteral_29= 'rsvdsetX'
                    {
                    enumLiteral_29=(Token)match(input,76,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRSVDSETXEnumLiteralDeclaration_29().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_29, grammarAccess.getPropertyAccess().getRSVDSETXEnumLiteralDeclaration_29());
                    			

                    }


                    }
                    break;
                case 31 :
                    // InternalRDL.g:3039:3: (enumLiteral_30= 'bridge' )
                    {
                    // InternalRDL.g:3039:3: (enumLiteral_30= 'bridge' )
                    // InternalRDL.g:3040:4: enumLiteral_30= 'bridge'
                    {
                    enumLiteral_30=(Token)match(input,77,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getBRIDGEEnumLiteralDeclaration_30().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_30, grammarAccess.getPropertyAccess().getBRIDGEEnumLiteralDeclaration_30());
                    			

                    }


                    }
                    break;
                case 32 :
                    // InternalRDL.g:3047:3: (enumLiteral_31= 'shared' )
                    {
                    // InternalRDL.g:3047:3: (enumLiteral_31= 'shared' )
                    // InternalRDL.g:3048:4: enumLiteral_31= 'shared'
                    {
                    enumLiteral_31=(Token)match(input,78,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSHAREDEnumLiteralDeclaration_31().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_31, grammarAccess.getPropertyAccess().getSHAREDEnumLiteralDeclaration_31());
                    			

                    }


                    }
                    break;
                case 33 :
                    // InternalRDL.g:3055:3: (enumLiteral_32= 'msb0' )
                    {
                    // InternalRDL.g:3055:3: (enumLiteral_32= 'msb0' )
                    // InternalRDL.g:3056:4: enumLiteral_32= 'msb0'
                    {
                    enumLiteral_32=(Token)match(input,79,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getMSB0EnumLiteralDeclaration_32().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_32, grammarAccess.getPropertyAccess().getMSB0EnumLiteralDeclaration_32());
                    			

                    }


                    }
                    break;
                case 34 :
                    // InternalRDL.g:3063:3: (enumLiteral_33= 'lsb0' )
                    {
                    // InternalRDL.g:3063:3: (enumLiteral_33= 'lsb0' )
                    // InternalRDL.g:3064:4: enumLiteral_33= 'lsb0'
                    {
                    enumLiteral_33=(Token)match(input,80,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getLSB0EnumLiteralDeclaration_33().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_33, grammarAccess.getPropertyAccess().getLSB0EnumLiteralDeclaration_33());
                    			

                    }


                    }
                    break;
                case 35 :
                    // InternalRDL.g:3071:3: (enumLiteral_34= 'sync' )
                    {
                    // InternalRDL.g:3071:3: (enumLiteral_34= 'sync' )
                    // InternalRDL.g:3072:4: enumLiteral_34= 'sync'
                    {
                    enumLiteral_34=(Token)match(input,81,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSYNCEnumLiteralDeclaration_34().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_34, grammarAccess.getPropertyAccess().getSYNCEnumLiteralDeclaration_34());
                    			

                    }


                    }
                    break;
                case 36 :
                    // InternalRDL.g:3079:3: (enumLiteral_35= 'async' )
                    {
                    // InternalRDL.g:3079:3: (enumLiteral_35= 'async' )
                    // InternalRDL.g:3080:4: enumLiteral_35= 'async'
                    {
                    enumLiteral_35=(Token)match(input,82,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getASYNCEnumLiteralDeclaration_35().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_35, grammarAccess.getPropertyAccess().getASYNCEnumLiteralDeclaration_35());
                    			

                    }


                    }
                    break;
                case 37 :
                    // InternalRDL.g:3087:3: (enumLiteral_36= 'cpuif_reset' )
                    {
                    // InternalRDL.g:3087:3: (enumLiteral_36= 'cpuif_reset' )
                    // InternalRDL.g:3088:4: enumLiteral_36= 'cpuif_reset'
                    {
                    enumLiteral_36=(Token)match(input,83,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getCPUIF_RESETEnumLiteralDeclaration_36().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_36, grammarAccess.getPropertyAccess().getCPUIF_RESETEnumLiteralDeclaration_36());
                    			

                    }


                    }
                    break;
                case 38 :
                    // InternalRDL.g:3095:3: (enumLiteral_37= 'field_reset' )
                    {
                    // InternalRDL.g:3095:3: (enumLiteral_37= 'field_reset' )
                    // InternalRDL.g:3096:4: enumLiteral_37= 'field_reset'
                    {
                    enumLiteral_37=(Token)match(input,84,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getFIELD_RESETEnumLiteralDeclaration_37().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_37, grammarAccess.getPropertyAccess().getFIELD_RESETEnumLiteralDeclaration_37());
                    			

                    }


                    }
                    break;
                case 39 :
                    // InternalRDL.g:3103:3: (enumLiteral_38= 'activehigh' )
                    {
                    // InternalRDL.g:3103:3: (enumLiteral_38= 'activehigh' )
                    // InternalRDL.g:3104:4: enumLiteral_38= 'activehigh'
                    {
                    enumLiteral_38=(Token)match(input,85,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getACTIVEHIGHEnumLiteralDeclaration_38().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_38, grammarAccess.getPropertyAccess().getACTIVEHIGHEnumLiteralDeclaration_38());
                    			

                    }


                    }
                    break;
                case 40 :
                    // InternalRDL.g:3111:3: (enumLiteral_39= 'activelow' )
                    {
                    // InternalRDL.g:3111:3: (enumLiteral_39= 'activelow' )
                    // InternalRDL.g:3112:4: enumLiteral_39= 'activelow'
                    {
                    enumLiteral_39=(Token)match(input,86,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getACTIVELOWEnumLiteralDeclaration_39().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_39, grammarAccess.getPropertyAccess().getACTIVELOWEnumLiteralDeclaration_39());
                    			

                    }


                    }
                    break;
                case 41 :
                    // InternalRDL.g:3119:3: (enumLiteral_40= 'singlepulse' )
                    {
                    // InternalRDL.g:3119:3: (enumLiteral_40= 'singlepulse' )
                    // InternalRDL.g:3120:4: enumLiteral_40= 'singlepulse'
                    {
                    enumLiteral_40=(Token)match(input,87,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSINGLEPULSEEnumLiteralDeclaration_40().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_40, grammarAccess.getPropertyAccess().getSINGLEPULSEEnumLiteralDeclaration_40());
                    			

                    }


                    }
                    break;
                case 42 :
                    // InternalRDL.g:3127:3: (enumLiteral_41= 'underflow' )
                    {
                    // InternalRDL.g:3127:3: (enumLiteral_41= 'underflow' )
                    // InternalRDL.g:3128:4: enumLiteral_41= 'underflow'
                    {
                    enumLiteral_41=(Token)match(input,88,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getUNDERFLOWEnumLiteralDeclaration_41().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_41, grammarAccess.getPropertyAccess().getUNDERFLOWEnumLiteralDeclaration_41());
                    			

                    }


                    }
                    break;
                case 43 :
                    // InternalRDL.g:3135:3: (enumLiteral_42= 'incr' )
                    {
                    // InternalRDL.g:3135:3: (enumLiteral_42= 'incr' )
                    // InternalRDL.g:3136:4: enumLiteral_42= 'incr'
                    {
                    enumLiteral_42=(Token)match(input,89,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getINCREnumLiteralDeclaration_42().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_42, grammarAccess.getPropertyAccess().getINCREnumLiteralDeclaration_42());
                    			

                    }


                    }
                    break;
                case 44 :
                    // InternalRDL.g:3143:3: (enumLiteral_43= 'decr' )
                    {
                    // InternalRDL.g:3143:3: (enumLiteral_43= 'decr' )
                    // InternalRDL.g:3144:4: enumLiteral_43= 'decr'
                    {
                    enumLiteral_43=(Token)match(input,90,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDECREnumLiteralDeclaration_43().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_43, grammarAccess.getPropertyAccess().getDECREnumLiteralDeclaration_43());
                    			

                    }


                    }
                    break;
                case 45 :
                    // InternalRDL.g:3151:3: (enumLiteral_44= 'incrwidth' )
                    {
                    // InternalRDL.g:3151:3: (enumLiteral_44= 'incrwidth' )
                    // InternalRDL.g:3152:4: enumLiteral_44= 'incrwidth'
                    {
                    enumLiteral_44=(Token)match(input,91,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getINCRWIDTHEnumLiteralDeclaration_44().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_44, grammarAccess.getPropertyAccess().getINCRWIDTHEnumLiteralDeclaration_44());
                    			

                    }


                    }
                    break;
                case 46 :
                    // InternalRDL.g:3159:3: (enumLiteral_45= 'decrwidth' )
                    {
                    // InternalRDL.g:3159:3: (enumLiteral_45= 'decrwidth' )
                    // InternalRDL.g:3160:4: enumLiteral_45= 'decrwidth'
                    {
                    enumLiteral_45=(Token)match(input,92,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDECRWIDTHEnumLiteralDeclaration_45().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_45, grammarAccess.getPropertyAccess().getDECRWIDTHEnumLiteralDeclaration_45());
                    			

                    }


                    }
                    break;
                case 47 :
                    // InternalRDL.g:3167:3: (enumLiteral_46= 'incrvalue' )
                    {
                    // InternalRDL.g:3167:3: (enumLiteral_46= 'incrvalue' )
                    // InternalRDL.g:3168:4: enumLiteral_46= 'incrvalue'
                    {
                    enumLiteral_46=(Token)match(input,93,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getINCRVALUEEnumLiteralDeclaration_46().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_46, grammarAccess.getPropertyAccess().getINCRVALUEEnumLiteralDeclaration_46());
                    			

                    }


                    }
                    break;
                case 48 :
                    // InternalRDL.g:3175:3: (enumLiteral_47= 'decrvalue' )
                    {
                    // InternalRDL.g:3175:3: (enumLiteral_47= 'decrvalue' )
                    // InternalRDL.g:3176:4: enumLiteral_47= 'decrvalue'
                    {
                    enumLiteral_47=(Token)match(input,94,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDECRVALUEEnumLiteralDeclaration_47().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_47, grammarAccess.getPropertyAccess().getDECRVALUEEnumLiteralDeclaration_47());
                    			

                    }


                    }
                    break;
                case 49 :
                    // InternalRDL.g:3183:3: (enumLiteral_48= 'saturate' )
                    {
                    // InternalRDL.g:3183:3: (enumLiteral_48= 'saturate' )
                    // InternalRDL.g:3184:4: enumLiteral_48= 'saturate'
                    {
                    enumLiteral_48=(Token)match(input,95,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSATURATEEnumLiteralDeclaration_48().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_48, grammarAccess.getPropertyAccess().getSATURATEEnumLiteralDeclaration_48());
                    			

                    }


                    }
                    break;
                case 50 :
                    // InternalRDL.g:3191:3: (enumLiteral_49= 'decrsaturate' )
                    {
                    // InternalRDL.g:3191:3: (enumLiteral_49= 'decrsaturate' )
                    // InternalRDL.g:3192:4: enumLiteral_49= 'decrsaturate'
                    {
                    enumLiteral_49=(Token)match(input,96,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDECRSATURATEEnumLiteralDeclaration_49().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_49, grammarAccess.getPropertyAccess().getDECRSATURATEEnumLiteralDeclaration_49());
                    			

                    }


                    }
                    break;
                case 51 :
                    // InternalRDL.g:3199:3: (enumLiteral_50= 'threshold' )
                    {
                    // InternalRDL.g:3199:3: (enumLiteral_50= 'threshold' )
                    // InternalRDL.g:3200:4: enumLiteral_50= 'threshold'
                    {
                    enumLiteral_50=(Token)match(input,97,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getTHRESHOLDEnumLiteralDeclaration_50().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_50, grammarAccess.getPropertyAccess().getTHRESHOLDEnumLiteralDeclaration_50());
                    			

                    }


                    }
                    break;
                case 52 :
                    // InternalRDL.g:3207:3: (enumLiteral_51= 'decrthreshold' )
                    {
                    // InternalRDL.g:3207:3: (enumLiteral_51= 'decrthreshold' )
                    // InternalRDL.g:3208:4: enumLiteral_51= 'decrthreshold'
                    {
                    enumLiteral_51=(Token)match(input,98,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDECRTHRESHOLDEnumLiteralDeclaration_51().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_51, grammarAccess.getPropertyAccess().getDECRTHRESHOLDEnumLiteralDeclaration_51());
                    			

                    }


                    }
                    break;
                case 53 :
                    // InternalRDL.g:3215:3: (enumLiteral_52= 'dontcompare' )
                    {
                    // InternalRDL.g:3215:3: (enumLiteral_52= 'dontcompare' )
                    // InternalRDL.g:3216:4: enumLiteral_52= 'dontcompare'
                    {
                    enumLiteral_52=(Token)match(input,99,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDONTCOMPAREEnumLiteralDeclaration_52().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_52, grammarAccess.getPropertyAccess().getDONTCOMPAREEnumLiteralDeclaration_52());
                    			

                    }


                    }
                    break;
                case 54 :
                    // InternalRDL.g:3223:3: (enumLiteral_53= 'donttest' )
                    {
                    // InternalRDL.g:3223:3: (enumLiteral_53= 'donttest' )
                    // InternalRDL.g:3224:4: enumLiteral_53= 'donttest'
                    {
                    enumLiteral_53=(Token)match(input,100,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getDONTTESTEnumLiteralDeclaration_53().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_53, grammarAccess.getPropertyAccess().getDONTTESTEnumLiteralDeclaration_53());
                    			

                    }


                    }
                    break;
                case 55 :
                    // InternalRDL.g:3231:3: (enumLiteral_54= 'internal' )
                    {
                    // InternalRDL.g:3231:3: (enumLiteral_54= 'internal' )
                    // InternalRDL.g:3232:4: enumLiteral_54= 'internal'
                    {
                    enumLiteral_54=(Token)match(input,25,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getINTERNALEnumLiteralDeclaration_54().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_54, grammarAccess.getPropertyAccess().getINTERNALEnumLiteralDeclaration_54());
                    			

                    }


                    }
                    break;
                case 56 :
                    // InternalRDL.g:3239:3: (enumLiteral_55= 'alignment' )
                    {
                    // InternalRDL.g:3239:3: (enumLiteral_55= 'alignment' )
                    // InternalRDL.g:3240:4: enumLiteral_55= 'alignment'
                    {
                    enumLiteral_55=(Token)match(input,101,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getALIGNMENTEnumLiteralDeclaration_55().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_55, grammarAccess.getPropertyAccess().getALIGNMENTEnumLiteralDeclaration_55());
                    			

                    }


                    }
                    break;
                case 57 :
                    // InternalRDL.g:3247:3: (enumLiteral_56= 'regwidth' )
                    {
                    // InternalRDL.g:3247:3: (enumLiteral_56= 'regwidth' )
                    // InternalRDL.g:3248:4: enumLiteral_56= 'regwidth'
                    {
                    enumLiteral_56=(Token)match(input,102,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getREGWIDTHEnumLiteralDeclaration_56().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_56, grammarAccess.getPropertyAccess().getREGWIDTHEnumLiteralDeclaration_56());
                    			

                    }


                    }
                    break;
                case 58 :
                    // InternalRDL.g:3255:3: (enumLiteral_57= 'fieldwidth' )
                    {
                    // InternalRDL.g:3255:3: (enumLiteral_57= 'fieldwidth' )
                    // InternalRDL.g:3256:4: enumLiteral_57= 'fieldwidth'
                    {
                    enumLiteral_57=(Token)match(input,103,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getFIELDWIDTHEnumLiteralDeclaration_57().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_57, grammarAccess.getPropertyAccess().getFIELDWIDTHEnumLiteralDeclaration_57());
                    			

                    }


                    }
                    break;
                case 59 :
                    // InternalRDL.g:3263:3: (enumLiteral_58= 'signalwidth' )
                    {
                    // InternalRDL.g:3263:3: (enumLiteral_58= 'signalwidth' )
                    // InternalRDL.g:3264:4: enumLiteral_58= 'signalwidth'
                    {
                    enumLiteral_58=(Token)match(input,104,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSIGNALWIDTHEnumLiteralDeclaration_58().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_58, grammarAccess.getPropertyAccess().getSIGNALWIDTHEnumLiteralDeclaration_58());
                    			

                    }


                    }
                    break;
                case 60 :
                    // InternalRDL.g:3271:3: (enumLiteral_59= 'accesswidth' )
                    {
                    // InternalRDL.g:3271:3: (enumLiteral_59= 'accesswidth' )
                    // InternalRDL.g:3272:4: enumLiteral_59= 'accesswidth'
                    {
                    enumLiteral_59=(Token)match(input,105,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getACCESSWIDTHEnumLiteralDeclaration_59().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_59, grammarAccess.getPropertyAccess().getACCESSWIDTHEnumLiteralDeclaration_59());
                    			

                    }


                    }
                    break;
                case 61 :
                    // InternalRDL.g:3279:3: (enumLiteral_60= 'sw' )
                    {
                    // InternalRDL.g:3279:3: (enumLiteral_60= 'sw' )
                    // InternalRDL.g:3280:4: enumLiteral_60= 'sw'
                    {
                    enumLiteral_60=(Token)match(input,106,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getSWEnumLiteralDeclaration_60().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_60, grammarAccess.getPropertyAccess().getSWEnumLiteralDeclaration_60());
                    			

                    }


                    }
                    break;
                case 62 :
                    // InternalRDL.g:3287:3: (enumLiteral_61= 'hw' )
                    {
                    // InternalRDL.g:3287:3: (enumLiteral_61= 'hw' )
                    // InternalRDL.g:3288:4: enumLiteral_61= 'hw'
                    {
                    enumLiteral_61=(Token)match(input,107,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHWEnumLiteralDeclaration_61().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_61, grammarAccess.getPropertyAccess().getHWEnumLiteralDeclaration_61());
                    			

                    }


                    }
                    break;
                case 63 :
                    // InternalRDL.g:3295:3: (enumLiteral_62= 'addressing' )
                    {
                    // InternalRDL.g:3295:3: (enumLiteral_62= 'addressing' )
                    // InternalRDL.g:3296:4: enumLiteral_62= 'addressing'
                    {
                    enumLiteral_62=(Token)match(input,108,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getADDRESSINGEnumLiteralDeclaration_62().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_62, grammarAccess.getPropertyAccess().getADDRESSINGEnumLiteralDeclaration_62());
                    			

                    }


                    }
                    break;
                case 64 :
                    // InternalRDL.g:3303:3: (enumLiteral_63= 'precedence' )
                    {
                    // InternalRDL.g:3303:3: (enumLiteral_63= 'precedence' )
                    // InternalRDL.g:3304:4: enumLiteral_63= 'precedence'
                    {
                    enumLiteral_63=(Token)match(input,109,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getPRECEDENCEEnumLiteralDeclaration_63().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_63, grammarAccess.getPropertyAccess().getPRECEDENCEEnumLiteralDeclaration_63());
                    			

                    }


                    }
                    break;
                case 65 :
                    // InternalRDL.g:3311:3: (enumLiteral_64= 'encode' )
                    {
                    // InternalRDL.g:3311:3: (enumLiteral_64= 'encode' )
                    // InternalRDL.g:3312:4: enumLiteral_64= 'encode'
                    {
                    enumLiteral_64=(Token)match(input,110,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getENCODEEnumLiteralDeclaration_64().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_64, grammarAccess.getPropertyAccess().getENCODEEnumLiteralDeclaration_64());
                    			

                    }


                    }
                    break;
                case 66 :
                    // InternalRDL.g:3319:3: (enumLiteral_65= 'resetsignal' )
                    {
                    // InternalRDL.g:3319:3: (enumLiteral_65= 'resetsignal' )
                    // InternalRDL.g:3320:4: enumLiteral_65= 'resetsignal'
                    {
                    enumLiteral_65=(Token)match(input,111,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getRESETSIGNALEnumLiteralDeclaration_65().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_65, grammarAccess.getPropertyAccess().getRESETSIGNALEnumLiteralDeclaration_65());
                    			

                    }


                    }
                    break;
                case 67 :
                    // InternalRDL.g:3327:3: (enumLiteral_66= 'clock' )
                    {
                    // InternalRDL.g:3327:3: (enumLiteral_66= 'clock' )
                    // InternalRDL.g:3328:4: enumLiteral_66= 'clock'
                    {
                    enumLiteral_66=(Token)match(input,112,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getCLOCKEnumLiteralDeclaration_66().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_66, grammarAccess.getPropertyAccess().getCLOCKEnumLiteralDeclaration_66());
                    			

                    }


                    }
                    break;
                case 68 :
                    // InternalRDL.g:3335:3: (enumLiteral_67= 'mask' )
                    {
                    // InternalRDL.g:3335:3: (enumLiteral_67= 'mask' )
                    // InternalRDL.g:3336:4: enumLiteral_67= 'mask'
                    {
                    enumLiteral_67=(Token)match(input,113,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getMASKEnumLiteralDeclaration_67().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_67, grammarAccess.getPropertyAccess().getMASKEnumLiteralDeclaration_67());
                    			

                    }


                    }
                    break;
                case 69 :
                    // InternalRDL.g:3343:3: (enumLiteral_68= 'enable' )
                    {
                    // InternalRDL.g:3343:3: (enumLiteral_68= 'enable' )
                    // InternalRDL.g:3344:4: enumLiteral_68= 'enable'
                    {
                    enumLiteral_68=(Token)match(input,114,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getENABLEEnumLiteralDeclaration_68().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_68, grammarAccess.getPropertyAccess().getENABLEEnumLiteralDeclaration_68());
                    			

                    }


                    }
                    break;
                case 70 :
                    // InternalRDL.g:3351:3: (enumLiteral_69= 'hwenable' )
                    {
                    // InternalRDL.g:3351:3: (enumLiteral_69= 'hwenable' )
                    // InternalRDL.g:3352:4: enumLiteral_69= 'hwenable'
                    {
                    enumLiteral_69=(Token)match(input,115,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHWENABLEEnumLiteralDeclaration_69().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_69, grammarAccess.getPropertyAccess().getHWENABLEEnumLiteralDeclaration_69());
                    			

                    }


                    }
                    break;
                case 71 :
                    // InternalRDL.g:3359:3: (enumLiteral_70= 'hwmask' )
                    {
                    // InternalRDL.g:3359:3: (enumLiteral_70= 'hwmask' )
                    // InternalRDL.g:3360:4: enumLiteral_70= 'hwmask'
                    {
                    enumLiteral_70=(Token)match(input,116,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHWMASKEnumLiteralDeclaration_70().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_70, grammarAccess.getPropertyAccess().getHWMASKEnumLiteralDeclaration_70());
                    			

                    }


                    }
                    break;
                case 72 :
                    // InternalRDL.g:3367:3: (enumLiteral_71= 'haltmask' )
                    {
                    // InternalRDL.g:3367:3: (enumLiteral_71= 'haltmask' )
                    // InternalRDL.g:3368:4: enumLiteral_71= 'haltmask'
                    {
                    enumLiteral_71=(Token)match(input,117,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHALTMASKEnumLiteralDeclaration_71().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_71, grammarAccess.getPropertyAccess().getHALTMASKEnumLiteralDeclaration_71());
                    			

                    }


                    }
                    break;
                case 73 :
                    // InternalRDL.g:3375:3: (enumLiteral_72= 'haltenable' )
                    {
                    // InternalRDL.g:3375:3: (enumLiteral_72= 'haltenable' )
                    // InternalRDL.g:3376:4: enumLiteral_72= 'haltenable'
                    {
                    enumLiteral_72=(Token)match(input,118,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHALTENABLEEnumLiteralDeclaration_72().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_72, grammarAccess.getPropertyAccess().getHALTENABLEEnumLiteralDeclaration_72());
                    			

                    }


                    }
                    break;
                case 74 :
                    // InternalRDL.g:3383:3: (enumLiteral_73= 'halt' )
                    {
                    // InternalRDL.g:3383:3: (enumLiteral_73= 'halt' )
                    // InternalRDL.g:3384:4: enumLiteral_73= 'halt'
                    {
                    enumLiteral_73=(Token)match(input,119,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getHALTEnumLiteralDeclaration_73().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_73, grammarAccess.getPropertyAccess().getHALTEnumLiteralDeclaration_73());
                    			

                    }


                    }
                    break;
                case 75 :
                    // InternalRDL.g:3391:3: (enumLiteral_74= 'next' )
                    {
                    // InternalRDL.g:3391:3: (enumLiteral_74= 'next' )
                    // InternalRDL.g:3392:4: enumLiteral_74= 'next'
                    {
                    enumLiteral_74=(Token)match(input,120,FOLLOW_2); 

                    				current = grammarAccess.getPropertyAccess().getNEXTEnumLiteralDeclaration_74().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_74, grammarAccess.getPropertyAccess().getNEXTEnumLiteralDeclaration_74());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProperty"


    // $ANTLR start "ruleRValueConstant"
    // InternalRDL.g:3402:1: ruleRValueConstant returns [Enumerator current=null] : ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'true' ) | (enumLiteral_2= 'false' ) | (enumLiteral_3= 'rw' ) | (enumLiteral_4= 'wr' ) | (enumLiteral_5= 'r' ) | (enumLiteral_6= 'w' ) | (enumLiteral_7= 'na' ) | (enumLiteral_8= 'compact' ) | (enumLiteral_9= 'regalign' ) | (enumLiteral_10= 'fullalign' ) | (enumLiteral_11= 'hw' ) | (enumLiteral_12= 'sw' ) ) ;
    public final Enumerator ruleRValueConstant() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;
        Token enumLiteral_9=null;
        Token enumLiteral_10=null;
        Token enumLiteral_11=null;
        Token enumLiteral_12=null;


        	enterRule();

        try {
            // InternalRDL.g:3408:2: ( ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'true' ) | (enumLiteral_2= 'false' ) | (enumLiteral_3= 'rw' ) | (enumLiteral_4= 'wr' ) | (enumLiteral_5= 'r' ) | (enumLiteral_6= 'w' ) | (enumLiteral_7= 'na' ) | (enumLiteral_8= 'compact' ) | (enumLiteral_9= 'regalign' ) | (enumLiteral_10= 'fullalign' ) | (enumLiteral_11= 'hw' ) | (enumLiteral_12= 'sw' ) ) )
            // InternalRDL.g:3409:2: ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'true' ) | (enumLiteral_2= 'false' ) | (enumLiteral_3= 'rw' ) | (enumLiteral_4= 'wr' ) | (enumLiteral_5= 'r' ) | (enumLiteral_6= 'w' ) | (enumLiteral_7= 'na' ) | (enumLiteral_8= 'compact' ) | (enumLiteral_9= 'regalign' ) | (enumLiteral_10= 'fullalign' ) | (enumLiteral_11= 'hw' ) | (enumLiteral_12= 'sw' ) )
            {
            // InternalRDL.g:3409:2: ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'true' ) | (enumLiteral_2= 'false' ) | (enumLiteral_3= 'rw' ) | (enumLiteral_4= 'wr' ) | (enumLiteral_5= 'r' ) | (enumLiteral_6= 'w' ) | (enumLiteral_7= 'na' ) | (enumLiteral_8= 'compact' ) | (enumLiteral_9= 'regalign' ) | (enumLiteral_10= 'fullalign' ) | (enumLiteral_11= 'hw' ) | (enumLiteral_12= 'sw' ) )
            int alt47=13;
            switch ( input.LA(1) ) {
            case 121:
                {
                alt47=1;
                }
                break;
            case 20:
                {
                alt47=2;
                }
                break;
            case 21:
                {
                alt47=3;
                }
                break;
            case 122:
                {
                alt47=4;
                }
                break;
            case 123:
                {
                alt47=5;
                }
                break;
            case 124:
                {
                alt47=6;
                }
                break;
            case 125:
                {
                alt47=7;
                }
                break;
            case 126:
                {
                alt47=8;
                }
                break;
            case 127:
                {
                alt47=9;
                }
                break;
            case 128:
                {
                alt47=10;
                }
                break;
            case 129:
                {
                alt47=11;
                }
                break;
            case 107:
                {
                alt47=12;
                }
                break;
            case 106:
                {
                alt47=13;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 47, 0, input);

                throw nvae;
            }

            switch (alt47) {
                case 1 :
                    // InternalRDL.g:3410:3: (enumLiteral_0= 'UNDEFINED' )
                    {
                    // InternalRDL.g:3410:3: (enumLiteral_0= 'UNDEFINED' )
                    // InternalRDL.g:3411:4: enumLiteral_0= 'UNDEFINED'
                    {
                    enumLiteral_0=(Token)match(input,121,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getUNDEFINEDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getRValueConstantAccess().getUNDEFINEDEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:3418:3: (enumLiteral_1= 'true' )
                    {
                    // InternalRDL.g:3418:3: (enumLiteral_1= 'true' )
                    // InternalRDL.g:3419:4: enumLiteral_1= 'true'
                    {
                    enumLiteral_1=(Token)match(input,20,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getTRUEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getRValueConstantAccess().getTRUEEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:3426:3: (enumLiteral_2= 'false' )
                    {
                    // InternalRDL.g:3426:3: (enumLiteral_2= 'false' )
                    // InternalRDL.g:3427:4: enumLiteral_2= 'false'
                    {
                    enumLiteral_2=(Token)match(input,21,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getFALSEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getRValueConstantAccess().getFALSEEnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:3434:3: (enumLiteral_3= 'rw' )
                    {
                    // InternalRDL.g:3434:3: (enumLiteral_3= 'rw' )
                    // InternalRDL.g:3435:4: enumLiteral_3= 'rw'
                    {
                    enumLiteral_3=(Token)match(input,122,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getRWEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getRValueConstantAccess().getRWEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:3442:3: (enumLiteral_4= 'wr' )
                    {
                    // InternalRDL.g:3442:3: (enumLiteral_4= 'wr' )
                    // InternalRDL.g:3443:4: enumLiteral_4= 'wr'
                    {
                    enumLiteral_4=(Token)match(input,123,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getWREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getRValueConstantAccess().getWREnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;
                case 6 :
                    // InternalRDL.g:3450:3: (enumLiteral_5= 'r' )
                    {
                    // InternalRDL.g:3450:3: (enumLiteral_5= 'r' )
                    // InternalRDL.g:3451:4: enumLiteral_5= 'r'
                    {
                    enumLiteral_5=(Token)match(input,124,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getREnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_5, grammarAccess.getRValueConstantAccess().getREnumLiteralDeclaration_5());
                    			

                    }


                    }
                    break;
                case 7 :
                    // InternalRDL.g:3458:3: (enumLiteral_6= 'w' )
                    {
                    // InternalRDL.g:3458:3: (enumLiteral_6= 'w' )
                    // InternalRDL.g:3459:4: enumLiteral_6= 'w'
                    {
                    enumLiteral_6=(Token)match(input,125,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getWEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_6, grammarAccess.getRValueConstantAccess().getWEnumLiteralDeclaration_6());
                    			

                    }


                    }
                    break;
                case 8 :
                    // InternalRDL.g:3466:3: (enumLiteral_7= 'na' )
                    {
                    // InternalRDL.g:3466:3: (enumLiteral_7= 'na' )
                    // InternalRDL.g:3467:4: enumLiteral_7= 'na'
                    {
                    enumLiteral_7=(Token)match(input,126,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getNAEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_7, grammarAccess.getRValueConstantAccess().getNAEnumLiteralDeclaration_7());
                    			

                    }


                    }
                    break;
                case 9 :
                    // InternalRDL.g:3474:3: (enumLiteral_8= 'compact' )
                    {
                    // InternalRDL.g:3474:3: (enumLiteral_8= 'compact' )
                    // InternalRDL.g:3475:4: enumLiteral_8= 'compact'
                    {
                    enumLiteral_8=(Token)match(input,127,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getCOMPACTEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_8, grammarAccess.getRValueConstantAccess().getCOMPACTEnumLiteralDeclaration_8());
                    			

                    }


                    }
                    break;
                case 10 :
                    // InternalRDL.g:3482:3: (enumLiteral_9= 'regalign' )
                    {
                    // InternalRDL.g:3482:3: (enumLiteral_9= 'regalign' )
                    // InternalRDL.g:3483:4: enumLiteral_9= 'regalign'
                    {
                    enumLiteral_9=(Token)match(input,128,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getREGALIGNEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_9, grammarAccess.getRValueConstantAccess().getREGALIGNEnumLiteralDeclaration_9());
                    			

                    }


                    }
                    break;
                case 11 :
                    // InternalRDL.g:3490:3: (enumLiteral_10= 'fullalign' )
                    {
                    // InternalRDL.g:3490:3: (enumLiteral_10= 'fullalign' )
                    // InternalRDL.g:3491:4: enumLiteral_10= 'fullalign'
                    {
                    enumLiteral_10=(Token)match(input,129,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getFULLALIGNEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_10, grammarAccess.getRValueConstantAccess().getFULLALIGNEnumLiteralDeclaration_10());
                    			

                    }


                    }
                    break;
                case 12 :
                    // InternalRDL.g:3498:3: (enumLiteral_11= 'hw' )
                    {
                    // InternalRDL.g:3498:3: (enumLiteral_11= 'hw' )
                    // InternalRDL.g:3499:4: enumLiteral_11= 'hw'
                    {
                    enumLiteral_11=(Token)match(input,107,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getHWEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_11, grammarAccess.getRValueConstantAccess().getHWEnumLiteralDeclaration_11());
                    			

                    }


                    }
                    break;
                case 13 :
                    // InternalRDL.g:3506:3: (enumLiteral_12= 'sw' )
                    {
                    // InternalRDL.g:3506:3: (enumLiteral_12= 'sw' )
                    // InternalRDL.g:3507:4: enumLiteral_12= 'sw'
                    {
                    enumLiteral_12=(Token)match(input,106,FOLLOW_2); 

                    				current = grammarAccess.getRValueConstantAccess().getSWEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_12, grammarAccess.getRValueConstantAccess().getSWEnumLiteralDeclaration_12());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRValueConstant"


    // $ANTLR start "rulePropertyModifier"
    // InternalRDL.g:3517:1: rulePropertyModifier returns [Enumerator current=null] : ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'posedge' ) | (enumLiteral_2= 'negedge' ) | (enumLiteral_3= 'bothedge' ) | (enumLiteral_4= 'level' ) | (enumLiteral_5= 'nonsticky' ) ) ;
    public final Enumerator rulePropertyModifier() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;


        	enterRule();

        try {
            // InternalRDL.g:3523:2: ( ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'posedge' ) | (enumLiteral_2= 'negedge' ) | (enumLiteral_3= 'bothedge' ) | (enumLiteral_4= 'level' ) | (enumLiteral_5= 'nonsticky' ) ) )
            // InternalRDL.g:3524:2: ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'posedge' ) | (enumLiteral_2= 'negedge' ) | (enumLiteral_3= 'bothedge' ) | (enumLiteral_4= 'level' ) | (enumLiteral_5= 'nonsticky' ) )
            {
            // InternalRDL.g:3524:2: ( (enumLiteral_0= 'UNDEFINED' ) | (enumLiteral_1= 'posedge' ) | (enumLiteral_2= 'negedge' ) | (enumLiteral_3= 'bothedge' ) | (enumLiteral_4= 'level' ) | (enumLiteral_5= 'nonsticky' ) )
            int alt48=6;
            switch ( input.LA(1) ) {
            case 121:
                {
                alt48=1;
                }
                break;
            case 130:
                {
                alt48=2;
                }
                break;
            case 131:
                {
                alt48=3;
                }
                break;
            case 132:
                {
                alt48=4;
                }
                break;
            case 133:
                {
                alt48=5;
                }
                break;
            case 134:
                {
                alt48=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }

            switch (alt48) {
                case 1 :
                    // InternalRDL.g:3525:3: (enumLiteral_0= 'UNDEFINED' )
                    {
                    // InternalRDL.g:3525:3: (enumLiteral_0= 'UNDEFINED' )
                    // InternalRDL.g:3526:4: enumLiteral_0= 'UNDEFINED'
                    {
                    enumLiteral_0=(Token)match(input,121,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getUNDEFINEDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_0, grammarAccess.getPropertyModifierAccess().getUNDEFINEDEnumLiteralDeclaration_0());
                    			

                    }


                    }
                    break;
                case 2 :
                    // InternalRDL.g:3533:3: (enumLiteral_1= 'posedge' )
                    {
                    // InternalRDL.g:3533:3: (enumLiteral_1= 'posedge' )
                    // InternalRDL.g:3534:4: enumLiteral_1= 'posedge'
                    {
                    enumLiteral_1=(Token)match(input,130,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getPOSEDGEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_1, grammarAccess.getPropertyModifierAccess().getPOSEDGEEnumLiteralDeclaration_1());
                    			

                    }


                    }
                    break;
                case 3 :
                    // InternalRDL.g:3541:3: (enumLiteral_2= 'negedge' )
                    {
                    // InternalRDL.g:3541:3: (enumLiteral_2= 'negedge' )
                    // InternalRDL.g:3542:4: enumLiteral_2= 'negedge'
                    {
                    enumLiteral_2=(Token)match(input,131,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getNEGEDGEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_2, grammarAccess.getPropertyModifierAccess().getNEGEDGEEnumLiteralDeclaration_2());
                    			

                    }


                    }
                    break;
                case 4 :
                    // InternalRDL.g:3549:3: (enumLiteral_3= 'bothedge' )
                    {
                    // InternalRDL.g:3549:3: (enumLiteral_3= 'bothedge' )
                    // InternalRDL.g:3550:4: enumLiteral_3= 'bothedge'
                    {
                    enumLiteral_3=(Token)match(input,132,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getBOTHEDGEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_3, grammarAccess.getPropertyModifierAccess().getBOTHEDGEEnumLiteralDeclaration_3());
                    			

                    }


                    }
                    break;
                case 5 :
                    // InternalRDL.g:3557:3: (enumLiteral_4= 'level' )
                    {
                    // InternalRDL.g:3557:3: (enumLiteral_4= 'level' )
                    // InternalRDL.g:3558:4: enumLiteral_4= 'level'
                    {
                    enumLiteral_4=(Token)match(input,133,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getLEVELEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_4, grammarAccess.getPropertyModifierAccess().getLEVELEnumLiteralDeclaration_4());
                    			

                    }


                    }
                    break;
                case 6 :
                    // InternalRDL.g:3565:3: (enumLiteral_5= 'nonsticky' )
                    {
                    // InternalRDL.g:3565:3: (enumLiteral_5= 'nonsticky' )
                    // InternalRDL.g:3566:4: enumLiteral_5= 'nonsticky'
                    {
                    enumLiteral_5=(Token)match(input,134,FOLLOW_2); 

                    				current = grammarAccess.getPropertyModifierAccess().getNONSTICKYEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                    				newLeafNode(enumLiteral_5, grammarAccess.getPropertyModifierAccess().getNONSTICKYEnumLiteralDeclaration_5());
                    			

                    }


                    }
                    break;

            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyModifier"

    // Delegated rules


    protected DFA1 dfa1 = new DFA1(this);
    static final String dfa_1s = "\12\uffff";
    static final String dfa_2s = "\1\1\11\uffff";
    static final String dfa_3s = "\1\5\5\uffff\2\5\2\uffff";
    static final String dfa_4s = "\1\u0086\5\uffff\1\32\1\43\2\uffff";
    static final String dfa_5s = "\1\uffff\1\7\1\1\1\2\1\3\1\4\2\uffff\1\5\1\6";
    static final String dfa_6s = "\12\uffff}>";
    static final String[] dfa_7s = {
            "\1\7\6\uffff\1\2\1\11\5\uffff\1\10\4\uffff\1\5\1\6\1\5\11\uffff\1\4\2\10\3\uffff\4\3\1\uffff\1\3\1\uffff\111\10\10\uffff\5\10",
            "",
            "",
            "",
            "",
            "",
            "\1\5\12\uffff\2\10\10\uffff\1\5",
            "\1\5\12\uffff\2\10\20\uffff\2\10",
            "",
            ""
    };

    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);

    class DFA1 extends DFA {

        public DFA1(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 1;
            this.eot = dfa_1;
            this.eof = dfa_2;
            this.min = dfa_3;
            this.max = dfa_4;
            this.accept = dfa_5;
            this.special = dfa_6;
            this.transition = dfa_7;
        }
        public String getDescription() {
            return "()* loopback of 79:2: ( ( (lv_includes_0_0= ruleInclude ) ) | ( (lv_componentDefinitions_1_0= ruleComponentDefinition ) ) | ( (lv_enumDefinitions_2_0= ruleEnumDefinition ) ) | ( (lv_namedInstantiations_3_0= ruleNamedInstantiation ) ) | ( (lv_propertyAssignments_4_0= rulePropertyAssignment ) ) | ( (lv_propertyDefinitions_5_0= rulePropertyDefinition ) ) )*";
        }
    }
 

    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0xFFFEBC7007083022L,0x03FFFFFFFFFFFFFFL,0x000000000000007CL});
    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000488000L});
    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x00007F8000000000L});
    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x00000000004C8000L});
    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000408000L});
    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000300050L});
    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0001BC0000000000L});
    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000820000L});
    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0xFFFEBC70070C0020L,0x03FFFFFFFFFFFFFFL,0x000000000000007CL});
    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000001020020L});
    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000006000020L});
    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000004000020L});
    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000001000020L});
    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000008020000L});
    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x00000000F0010002L});
    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000070010002L});
    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000070000002L});
    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000060000002L});
    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0xFFFE006002000000L,0x03FFFFFFFFFFFFFFL,0x000000000000007CL});
    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000030000L});
    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000304070L,0xFE000C0000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0xFFFE006002000020L,0x03FFFFFFFFFFFFFFL,0x000000000000007CL});
    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000008040000L});
    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000024000L});
    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000006000040000L});

}