package org.xtext.example.mydsl.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.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 org.xtext.example.mydsl.services.MyDslGrammarAccess;



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

@SuppressWarnings("all")
public class InternalMyDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'ContentModel'", "'{'", "'displayName'", "'='", "'description'", "'}'", "'Web'", "'guID'", "'sitePermission'", "'Webs'", "'.'"
    };
    public static final int RULE_ID=5;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


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

    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g"; }



     	private MyDslGrammarAccess grammarAccess;
     	
        public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "ContentModel";	
       	}
       	
       	@Override
       	protected MyDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleContentModel"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:67:1: entryRuleContentModel returns [EObject current=null] : iv_ruleContentModel= ruleContentModel EOF ;
    public final EObject entryRuleContentModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContentModel = null;


        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:68:2: (iv_ruleContentModel= ruleContentModel EOF )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:69:2: iv_ruleContentModel= ruleContentModel EOF
            {
             newCompositeNode(grammarAccess.getContentModelRule()); 
            pushFollow(FOLLOW_ruleContentModel_in_entryRuleContentModel75);
            iv_ruleContentModel=ruleContentModel();

            state._fsp--;

             current =iv_ruleContentModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContentModel85); 

            }

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


    // $ANTLR start "ruleContentModel"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:76:1: ruleContentModel returns [EObject current=null] : (otherlv_0= 'ContentModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'displayName' otherlv_4= '=' ( (lv_displayName_5_0= RULE_STRING ) ) (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )? ( (lv_ownedWeb_9_0= ruleWeb ) ) otherlv_10= '}' ) ;
    public final EObject ruleContentModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_displayName_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token lv_description_8_0=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedWeb_9_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:79:28: ( (otherlv_0= 'ContentModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'displayName' otherlv_4= '=' ( (lv_displayName_5_0= RULE_STRING ) ) (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )? ( (lv_ownedWeb_9_0= ruleWeb ) ) otherlv_10= '}' ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:80:1: (otherlv_0= 'ContentModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'displayName' otherlv_4= '=' ( (lv_displayName_5_0= RULE_STRING ) ) (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )? ( (lv_ownedWeb_9_0= ruleWeb ) ) otherlv_10= '}' )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:80:1: (otherlv_0= 'ContentModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'displayName' otherlv_4= '=' ( (lv_displayName_5_0= RULE_STRING ) ) (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )? ( (lv_ownedWeb_9_0= ruleWeb ) ) otherlv_10= '}' )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:80:3: otherlv_0= 'ContentModel' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'displayName' otherlv_4= '=' ( (lv_displayName_5_0= RULE_STRING ) ) (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )? ( (lv_ownedWeb_9_0= ruleWeb ) ) otherlv_10= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleContentModel122); 

                	newLeafNode(otherlv_0, grammarAccess.getContentModelAccess().getContentModelKeyword_0());
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:84:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:85:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:85:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:86:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getContentModelAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleContentModel143);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getContentModelRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleContentModel155); 

                	newLeafNode(otherlv_2, grammarAccess.getContentModelAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleContentModel167); 

                	newLeafNode(otherlv_3, grammarAccess.getContentModelAccess().getDisplayNameKeyword_3());
                
            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleContentModel179); 

                	newLeafNode(otherlv_4, grammarAccess.getContentModelAccess().getEqualsSignKeyword_4());
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:114:1: ( (lv_displayName_5_0= RULE_STRING ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:115:1: (lv_displayName_5_0= RULE_STRING )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:115:1: (lv_displayName_5_0= RULE_STRING )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:116:3: lv_displayName_5_0= RULE_STRING
            {
            lv_displayName_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleContentModel196); 

            			newLeafNode(lv_displayName_5_0, grammarAccess.getContentModelAccess().getDisplayNameSTRINGTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getContentModelRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"displayName",
                    		lv_displayName_5_0, 
                    		"STRING");
            	    

            }


            }

            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:2: (otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==15) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:132:4: otherlv_6= 'description' otherlv_7= '=' ( (lv_description_8_0= RULE_STRING ) )
                    {
                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleContentModel214); 

                        	newLeafNode(otherlv_6, grammarAccess.getContentModelAccess().getDescriptionKeyword_6_0());
                        
                    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleContentModel226); 

                        	newLeafNode(otherlv_7, grammarAccess.getContentModelAccess().getEqualsSignKeyword_6_1());
                        
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:140:1: ( (lv_description_8_0= RULE_STRING ) )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:141:1: (lv_description_8_0= RULE_STRING )
                    {
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:141:1: (lv_description_8_0= RULE_STRING )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:142:3: lv_description_8_0= RULE_STRING
                    {
                    lv_description_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleContentModel243); 

                    			newLeafNode(lv_description_8_0, grammarAccess.getContentModelAccess().getDescriptionSTRINGTerminalRuleCall_6_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getContentModelRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_8_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:158:4: ( (lv_ownedWeb_9_0= ruleWeb ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:159:1: (lv_ownedWeb_9_0= ruleWeb )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:159:1: (lv_ownedWeb_9_0= ruleWeb )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:160:3: lv_ownedWeb_9_0= ruleWeb
            {
             
            	        newCompositeNode(grammarAccess.getContentModelAccess().getOwnedWebWebParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleWeb_in_ruleContentModel271);
            lv_ownedWeb_9_0=ruleWeb();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getContentModelRule());
            	        }
                   		set(
                   			current, 
                   			"ownedWeb",
                    		lv_ownedWeb_9_0, 
                    		"Web");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_10=(Token)match(input,16,FOLLOW_16_in_ruleContentModel283); 

                	newLeafNode(otherlv_10, grammarAccess.getContentModelAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

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


    // $ANTLR start "entryRuleWeb"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:190:1: entryRuleWeb returns [EObject current=null] : iv_ruleWeb= ruleWeb EOF ;
    public final EObject entryRuleWeb() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWeb = null;


        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:191:2: (iv_ruleWeb= ruleWeb EOF )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:192:2: iv_ruleWeb= ruleWeb EOF
            {
             newCompositeNode(grammarAccess.getWebRule()); 
            pushFollow(FOLLOW_ruleWeb_in_entryRuleWeb321);
            iv_ruleWeb=ruleWeb();

            state._fsp--;

             current =iv_ruleWeb; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleWeb331); 

            }

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


    // $ANTLR start "ruleWeb"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:199:1: ruleWeb returns [EObject current=null] : (otherlv_0= 'Web' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'guID' otherlv_4= '=' ( (lv_guID_5_0= RULE_STRING ) ) otherlv_6= 'displayName' otherlv_7= '=' ( (lv_displayName_8_0= RULE_STRING ) ) (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )? (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )? (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )? otherlv_20= '}' ) ;
    public final EObject ruleWeb() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_guID_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token lv_displayName_8_0=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_description_11_0=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedWeb_17_0 = null;

        EObject lv_ownedWeb_18_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:202:28: ( (otherlv_0= 'Web' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'guID' otherlv_4= '=' ( (lv_guID_5_0= RULE_STRING ) ) otherlv_6= 'displayName' otherlv_7= '=' ( (lv_displayName_8_0= RULE_STRING ) ) (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )? (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )? (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )? otherlv_20= '}' ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:203:1: (otherlv_0= 'Web' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'guID' otherlv_4= '=' ( (lv_guID_5_0= RULE_STRING ) ) otherlv_6= 'displayName' otherlv_7= '=' ( (lv_displayName_8_0= RULE_STRING ) ) (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )? (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )? (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )? otherlv_20= '}' )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:203:1: (otherlv_0= 'Web' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'guID' otherlv_4= '=' ( (lv_guID_5_0= RULE_STRING ) ) otherlv_6= 'displayName' otherlv_7= '=' ( (lv_displayName_8_0= RULE_STRING ) ) (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )? (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )? (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )? otherlv_20= '}' )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:203:3: otherlv_0= 'Web' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' otherlv_3= 'guID' otherlv_4= '=' ( (lv_guID_5_0= RULE_STRING ) ) otherlv_6= 'displayName' otherlv_7= '=' ( (lv_displayName_8_0= RULE_STRING ) ) (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )? (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )? (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )? otherlv_20= '}'
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleWeb368); 

                	newLeafNode(otherlv_0, grammarAccess.getWebAccess().getWebKeyword_0());
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:207:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:208:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:208:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:209:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getWebAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleWeb389);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWebRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleWeb401); 

                	newLeafNode(otherlv_2, grammarAccess.getWebAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleWeb413); 

                	newLeafNode(otherlv_3, grammarAccess.getWebAccess().getGuIDKeyword_3());
                
            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleWeb425); 

                	newLeafNode(otherlv_4, grammarAccess.getWebAccess().getEqualsSignKeyword_4());
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:237:1: ( (lv_guID_5_0= RULE_STRING ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:238:1: (lv_guID_5_0= RULE_STRING )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:238:1: (lv_guID_5_0= RULE_STRING )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:239:3: lv_guID_5_0= RULE_STRING
            {
            lv_guID_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleWeb442); 

            			newLeafNode(lv_guID_5_0, grammarAccess.getWebAccess().getGuIDSTRINGTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getWebRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"guID",
                    		lv_guID_5_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_6=(Token)match(input,13,FOLLOW_13_in_ruleWeb459); 

                	newLeafNode(otherlv_6, grammarAccess.getWebAccess().getDisplayNameKeyword_6());
                
            otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleWeb471); 

                	newLeafNode(otherlv_7, grammarAccess.getWebAccess().getEqualsSignKeyword_7());
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:263:1: ( (lv_displayName_8_0= RULE_STRING ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:264:1: (lv_displayName_8_0= RULE_STRING )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:264:1: (lv_displayName_8_0= RULE_STRING )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:265:3: lv_displayName_8_0= RULE_STRING
            {
            lv_displayName_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleWeb488); 

            			newLeafNode(lv_displayName_8_0, grammarAccess.getWebAccess().getDisplayNameSTRINGTerminalRuleCall_8_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getWebRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"displayName",
                    		lv_displayName_8_0, 
                    		"STRING");
            	    

            }


            }

            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:281:2: (otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) ) )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==15) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:281:4: otherlv_9= 'description' otherlv_10= '=' ( (lv_description_11_0= RULE_STRING ) )
                    {
                    otherlv_9=(Token)match(input,15,FOLLOW_15_in_ruleWeb506); 

                        	newLeafNode(otherlv_9, grammarAccess.getWebAccess().getDescriptionKeyword_9_0());
                        
                    otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleWeb518); 

                        	newLeafNode(otherlv_10, grammarAccess.getWebAccess().getEqualsSignKeyword_9_1());
                        
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:289:1: ( (lv_description_11_0= RULE_STRING ) )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:290:1: (lv_description_11_0= RULE_STRING )
                    {
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:290:1: (lv_description_11_0= RULE_STRING )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:291:3: lv_description_11_0= RULE_STRING
                    {
                    lv_description_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleWeb535); 

                    			newLeafNode(lv_description_11_0, grammarAccess.getWebAccess().getDescriptionSTRINGTerminalRuleCall_9_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWebRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_11_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:307:4: (otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==19) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:307:6: otherlv_12= 'sitePermission' otherlv_13= '=' ( ( ruleQualifiedName ) )
                    {
                    otherlv_12=(Token)match(input,19,FOLLOW_19_in_ruleWeb555); 

                        	newLeafNode(otherlv_12, grammarAccess.getWebAccess().getSitePermissionKeyword_10_0());
                        
                    otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleWeb567); 

                        	newLeafNode(otherlv_13, grammarAccess.getWebAccess().getEqualsSignKeyword_10_1());
                        
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:315:1: ( ( ruleQualifiedName ) )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:316:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:316:1: ( ruleQualifiedName )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:317:3: ruleQualifiedName
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getWebRule());
                    	        }
                            
                     
                    	        newCompositeNode(grammarAccess.getWebAccess().getSitePermissionSitePermissionCrossReference_10_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleWeb590);
                    ruleQualifiedName();

                    state._fsp--;

                     
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:330:4: (otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}' )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==20) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:330:6: otherlv_15= 'Webs' otherlv_16= '{' ( (lv_ownedWeb_17_0= ruleWeb ) ) ( (lv_ownedWeb_18_0= ruleWeb ) )* otherlv_19= '}'
                    {
                    otherlv_15=(Token)match(input,20,FOLLOW_20_in_ruleWeb605); 

                        	newLeafNode(otherlv_15, grammarAccess.getWebAccess().getWebsKeyword_11_0());
                        
                    otherlv_16=(Token)match(input,12,FOLLOW_12_in_ruleWeb617); 

                        	newLeafNode(otherlv_16, grammarAccess.getWebAccess().getLeftCurlyBracketKeyword_11_1());
                        
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:338:1: ( (lv_ownedWeb_17_0= ruleWeb ) )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:339:1: (lv_ownedWeb_17_0= ruleWeb )
                    {
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:339:1: (lv_ownedWeb_17_0= ruleWeb )
                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:340:3: lv_ownedWeb_17_0= ruleWeb
                    {
                     
                    	        newCompositeNode(grammarAccess.getWebAccess().getOwnedWebWebParserRuleCall_11_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleWeb_in_ruleWeb638);
                    lv_ownedWeb_17_0=ruleWeb();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getWebRule());
                    	        }
                           		add(
                           			current, 
                           			"ownedWeb",
                            		lv_ownedWeb_17_0, 
                            		"Web");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:356:2: ( (lv_ownedWeb_18_0= ruleWeb ) )*
                    loop4:
                    do {
                        int alt4=2;
                        int LA4_0 = input.LA(1);

                        if ( (LA4_0==17) ) {
                            alt4=1;
                        }


                        switch (alt4) {
                    	case 1 :
                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:357:1: (lv_ownedWeb_18_0= ruleWeb )
                    	    {
                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:357:1: (lv_ownedWeb_18_0= ruleWeb )
                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:358:3: lv_ownedWeb_18_0= ruleWeb
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getWebAccess().getOwnedWebWebParserRuleCall_11_3_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleWeb_in_ruleWeb659);
                    	    lv_ownedWeb_18_0=ruleWeb();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getWebRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"ownedWeb",
                    	            		lv_ownedWeb_18_0, 
                    	            		"Web");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

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

                    otherlv_19=(Token)match(input,16,FOLLOW_16_in_ruleWeb672); 

                        	newLeafNode(otherlv_19, grammarAccess.getWebAccess().getRightCurlyBracketKeyword_11_4());
                        

                    }
                    break;

            }

            otherlv_20=(Token)match(input,16,FOLLOW_16_in_ruleWeb686); 

                	newLeafNode(otherlv_20, grammarAccess.getWebAccess().getRightCurlyBracketKeyword_12());
                

            }


            }

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


    // $ANTLR start "entryRuleQualifiedName"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:390:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:391:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:392:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName723);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName734); 

            }

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


    // $ANTLR start "ruleQualifiedName"
    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:402:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:403:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:403:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:403:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName774); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:410:1: (kw= '.' this_ID_2= RULE_ID )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==21) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:411:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,21,FOLLOW_21_in_ruleQualifiedName793); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName808); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

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


            }


            }

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

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleContentModel_in_entryRuleContentModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContentModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleContentModel122 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleContentModel143 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleContentModel155 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleContentModel167 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleContentModel179 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleContentModel196 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_15_in_ruleContentModel214 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleContentModel226 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleContentModel243 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_ruleWeb_in_ruleContentModel271 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleContentModel283 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWeb_in_entryRuleWeb321 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleWeb331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleWeb368 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleWeb389 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleWeb401 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleWeb413 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWeb425 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleWeb442 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleWeb459 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWeb471 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleWeb488 = new BitSet(new long[]{0x0000000000198000L});
    public static final BitSet FOLLOW_15_in_ruleWeb506 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWeb518 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleWeb535 = new BitSet(new long[]{0x0000000000190000L});
    public static final BitSet FOLLOW_19_in_ruleWeb555 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWeb567 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleWeb590 = new BitSet(new long[]{0x0000000000110000L});
    public static final BitSet FOLLOW_20_in_ruleWeb605 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleWeb617 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_ruleWeb_in_ruleWeb638 = new BitSet(new long[]{0x0000000000038000L});
    public static final BitSet FOLLOW_ruleWeb_in_ruleWeb659 = new BitSet(new long[]{0x0000000000038000L});
    public static final BitSet FOLLOW_16_in_ruleWeb672 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleWeb686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName723 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName774 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_ruleQualifiedName793 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName808 = new BitSet(new long[]{0x0000000000200002L});

}