ES3Parser.switchStatement C# (CSharp) Method

switchStatement() public method

public switchStatement ( ) : ES3Parser.switchStatement_return
return ES3Parser.switchStatement_return
    public ES3Parser.switchStatement_return switchStatement() // throws RecognitionException [1]
    {   
        ES3Parser.switchStatement_return retval = new ES3Parser.switchStatement_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken SWITCH151 = null;
        IToken LPAREN152 = null;
        IToken RPAREN154 = null;
        IToken LBRACE155 = null;
        IToken RBRACE158 = null;
        ES3Parser.expression_return expression153 = default(ES3Parser.expression_return);

        ES3Parser.defaultClause_return defaultClause156 = default(ES3Parser.defaultClause_return);

        ES3Parser.caseClause_return caseClause157 = default(ES3Parser.caseClause_return);


        object SWITCH151_tree=null;
        object LPAREN152_tree=null;
        object RPAREN154_tree=null;
        object LBRACE155_tree=null;
        object RBRACE158_tree=null;


        	SwitchStatement switchStatement = new SwitchStatement();
        	retval.value =  switchStatement;
        	int defaultClauseCount = 0;

        try 
    	{
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1716:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE )
            // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1716:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
            {
            	root_0 = (object)adaptor.GetNilNode();

            	SWITCH151=(IToken)Match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6260); 
            		SWITCH151_tree = (object)adaptor.Create(SWITCH151);
            		adaptor.AddChild(root_0, SWITCH151_tree);

            	LPAREN152=(IToken)Match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6262); 
            		LPAREN152_tree = (object)adaptor.Create(LPAREN152);
            		adaptor.AddChild(root_0, LPAREN152_tree);

            	PushFollow(FOLLOW_expression_in_switchStatement6264);
            	expression153 = expression();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, expression153.Tree);
            	 switchStatement.Expression = ((expression153 != null) ? expression153.value : default(Expression)); 
            	RPAREN154=(IToken)Match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6268); 
            		RPAREN154_tree = (object)adaptor.Create(RPAREN154);
            		adaptor.AddChild(root_0, RPAREN154_tree);

            	LBRACE155=(IToken)Match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6273); 
            		LBRACE155_tree = (object)adaptor.Create(LBRACE155);
            		adaptor.AddChild(root_0, LBRACE155_tree);

            	// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1717:10: ({...}? => defaultClause | caseClause )*
            	do 
            	{
            	    int alt78 = 3;
            	    int LA78_0 = input.LA(1);

            	    if ( (LA78_0 == DEFAULT) && (( defaultClauseCount == 0 )) )
            	    {
            	        alt78 = 1;
            	    }
            	    else if ( (LA78_0 == CASE) )
            	    {
            	        alt78 = 2;
            	    }


            	    switch (alt78) 
            		{
            			case 1 :
            			    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1717:12: {...}? => defaultClause
            			    {
            			    	if ( !(( defaultClauseCount == 0 )) ) 
            			    	{
            			    	    throw new FailedPredicateException(input, "switchStatement", " defaultClauseCount == 0 ");
            			    	}
            			    	PushFollow(FOLLOW_defaultClause_in_switchStatement6280);
            			    	defaultClause156 = defaultClause();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, defaultClause156.Tree);
            			    	 defaultClauseCount++; switchStatement.DefaultStatements=((defaultClause156 != null) ? defaultClause156.value : default(BlockStatement)); 

            			    }
            			    break;
            			case 2 :
            			    // C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1717:141: caseClause
            			    {
            			    	PushFollow(FOLLOW_caseClause_in_switchStatement6286);
            			    	caseClause157 = caseClause();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, caseClause157.Tree);
            			    	 switchStatement.CaseClauses.Add(((caseClause157 != null) ? caseClause157.value : default(CaseClause))); 

            			    }
            			    break;

            			default:
            			    goto loop78;
            	    }
            	} while (true);

            	loop78:
            		;	// Stops C# compiler whining that label 'loop78' has no statements

            	RBRACE158=(IToken)Match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6293); 
            		RBRACE158_tree = (object)adaptor.Create(RBRACE158);
            		adaptor.AddChild(root_0, RBRACE158_tree);


            }

            retval.Stop = input.LT(-1);

            	retval.Tree = (object)adaptor.RulePostProcessing(root_0);
            	adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);
        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
    	// Conversion of the second argument necessary, but harmless
    	retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
        }
        return retval;
    }
    // $ANTLR end "switchStatement"
ES3Parser