Наследование: Antlr.Runtime.ParserRuleReturnScope
Пример #1
0
    // $ANTLR start "setExpr"
    // C:\\Development\\TT.Net\\TT\\Template.g:91:1: setExpr : ( ( 'SET' )? ID ASSIGN LITERAL -> ^( SET ID LITERAL ) | ( 'SET' )? ID ASSIGN NUMBER -> ^( SET ID NUMBER ) | ( 'SET' )? ID ASSIGN DECIMAL -> ^( SET ID DECIMAL ) );
    public TemplateParser.setExpr_return setExpr() // throws RecognitionException [1]
    {   
        TemplateParser.setExpr_return retval = new TemplateParser.setExpr_return();
        retval.Start = input.LT(1);

        CommonTree root_0 = null;

        IToken string_literal13 = null;
        IToken ID14 = null;
        IToken ASSIGN15 = null;
        IToken LITERAL16 = null;
        IToken string_literal17 = null;
        IToken ID18 = null;
        IToken ASSIGN19 = null;
        IToken NUMBER20 = null;
        IToken string_literal21 = null;
        IToken ID22 = null;
        IToken ASSIGN23 = null;
        IToken DECIMAL24 = null;

        CommonTree string_literal13_tree=null;
        CommonTree ID14_tree=null;
        CommonTree ASSIGN15_tree=null;
        CommonTree LITERAL16_tree=null;
        CommonTree string_literal17_tree=null;
        CommonTree ID18_tree=null;
        CommonTree ASSIGN19_tree=null;
        CommonTree NUMBER20_tree=null;
        CommonTree string_literal21_tree=null;
        CommonTree ID22_tree=null;
        CommonTree ASSIGN23_tree=null;
        CommonTree DECIMAL24_tree=null;
        RewriteRuleTokenStream stream_LITERAL = new RewriteRuleTokenStream(adaptor,"token LITERAL");
        RewriteRuleTokenStream stream_56 = new RewriteRuleTokenStream(adaptor,"token 56");
        RewriteRuleTokenStream stream_DECIMAL = new RewriteRuleTokenStream(adaptor,"token DECIMAL");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_NUMBER = new RewriteRuleTokenStream(adaptor,"token NUMBER");
        RewriteRuleTokenStream stream_ASSIGN = new RewriteRuleTokenStream(adaptor,"token ASSIGN");

        try {
        	dbg.EnterRule(GrammarFileName, "setExpr");
        	if ( RuleLevel==0 ) {dbg.Commence();}
        	IncRuleLevel();
        	dbg.Location(91, 1);

        try 
    	{
            // C:\\Development\\TT.Net\\TT\\Template.g:92:2: ( ( 'SET' )? ID ASSIGN LITERAL -> ^( SET ID LITERAL ) | ( 'SET' )? ID ASSIGN NUMBER -> ^( SET ID NUMBER ) | ( 'SET' )? ID ASSIGN DECIMAL -> ^( SET ID DECIMAL ) )
            int alt10 = 3;
            try { dbg.EnterDecision(10);

            int LA10_0 = input.LA(1);

            if ( (LA10_0 == 56) )
            {
                int LA10_1 = input.LA(2);

                if ( (LA10_1 == ID) )
                {
                    int LA10_2 = input.LA(3);

                    if ( (LA10_2 == ASSIGN) )
                    {
                        switch ( input.LA(4) ) 
                        {
                        case LITERAL:
                        	{
                            alt10 = 1;
                            }
                            break;
                        case NUMBER:
                        	{
                            alt10 = 2;
                            }
                            break;
                        case DECIMAL:
                        	{
                            alt10 = 3;
                            }
                            break;
                        	default:
                        	    NoViableAltException nvae_d10s3 =
                        	        new NoViableAltException("", 10, 3, input);

                        	    dbg.RecognitionException(nvae_d10s3);
                        	    throw nvae_d10s3;
                        }

                    }
                    else 
                    {
                        NoViableAltException nvae_d10s2 =
                            new NoViableAltException("", 10, 2, input);

                        dbg.RecognitionException(nvae_d10s2);
                        throw nvae_d10s2;
                    }
                }
                else 
                {
                    NoViableAltException nvae_d10s1 =
                        new NoViableAltException("", 10, 1, input);

                    dbg.RecognitionException(nvae_d10s1);
                    throw nvae_d10s1;
                }
            }
            else if ( (LA10_0 == ID) )
            {
                int LA10_2 = input.LA(2);

                if ( (LA10_2 == ASSIGN) )
                {
                    switch ( input.LA(3) ) 
                    {
                    case LITERAL:
                    	{
                        alt10 = 1;
                        }
                        break;
                    case NUMBER:
                    	{
                        alt10 = 2;
                        }
                        break;
                    case DECIMAL:
                    	{
                        alt10 = 3;
                        }
                        break;
                    	default:
                    	    NoViableAltException nvae_d10s3 =
                    	        new NoViableAltException("", 10, 3, input);

                    	    dbg.RecognitionException(nvae_d10s3);
                    	    throw nvae_d10s3;
                    }

                }
                else 
                {
                    NoViableAltException nvae_d10s2 =
                        new NoViableAltException("", 10, 2, input);

                    dbg.RecognitionException(nvae_d10s2);
                    throw nvae_d10s2;
                }
            }
            else 
            {
                NoViableAltException nvae_d10s0 =
                    new NoViableAltException("", 10, 0, input);

                dbg.RecognitionException(nvae_d10s0);
                throw nvae_d10s0;
            }
            } finally { dbg.ExitDecision(10); }

            switch (alt10) 
            {
                case 1 :
                    dbg.EnterAlt(1);

                    // C:\\Development\\TT.Net\\TT\\Template.g:92:4: ( 'SET' )? ID ASSIGN LITERAL
                    {
                    	dbg.Location(92,4);
                    	// C:\\Development\\TT.Net\\TT\\Template.g:92:4: ( 'SET' )?
                    	int alt7 = 2;
                    	try { dbg.EnterSubRule(7);
                    	try { dbg.EnterDecision(7);

                    	int LA7_0 = input.LA(1);

                    	if ( (LA7_0 == 56) )
                    	{
                    	    alt7 = 1;
                    	}
                    	} finally { dbg.ExitDecision(7); }

                    	switch (alt7) 
                    	{
                    	    case 1 :
                    	        dbg.EnterAlt(1);

                    	        // C:\\Development\\TT.Net\\TT\\Template.g:92:4: 'SET'
                    	        {
                    	        	dbg.Location(92,4);
                    	        	string_literal13=(IToken)Match(input,56,FOLLOW_56_in_setExpr583);  
                    	        	stream_56.Add(string_literal13);


                    	        }
                    	        break;

                    	}
                    	} finally { dbg.ExitSubRule(7); }

                    	dbg.Location(92,11);
                    	ID14=(IToken)Match(input,ID,FOLLOW_ID_in_setExpr586);  
                    	stream_ID.Add(ID14);

                    	dbg.Location(92,14);
                    	ASSIGN15=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_setExpr588);  
                    	stream_ASSIGN.Add(ASSIGN15);

                    	dbg.Location(92,21);
                    	LITERAL16=(IToken)Match(input,LITERAL,FOLLOW_LITERAL_in_setExpr590);  
                    	stream_LITERAL.Add(LITERAL16);



                    	// AST REWRITE
                    	// elements:          ID, LITERAL
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (CommonTree)adaptor.GetNilNode();
                    	// 92:29: -> ^( SET ID LITERAL )
                    	{
                    	    dbg.Location(92,32);
                    	    // C:\\Development\\TT.Net\\TT\\Template.g:92:32: ^( SET ID LITERAL )
                    	    {
                    	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    	    dbg.Location(92,34);
                    	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(SET, "SET"), root_1);

                    	    dbg.Location(92,38);
                    	    adaptor.AddChild(root_1, stream_ID.NextNode());
                    	    dbg.Location(92,41);
                    	    adaptor.AddChild(root_1, stream_LITERAL.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;
                case 2 :
                    dbg.EnterAlt(2);

                    // C:\\Development\\TT.Net\\TT\\Template.g:93:4: ( 'SET' )? ID ASSIGN NUMBER
                    {
                    	dbg.Location(93,4);
                    	// C:\\Development\\TT.Net\\TT\\Template.g:93:4: ( 'SET' )?
                    	int alt8 = 2;
                    	try { dbg.EnterSubRule(8);
                    	try { dbg.EnterDecision(8);

                    	int LA8_0 = input.LA(1);

                    	if ( (LA8_0 == 56) )
                    	{
                    	    alt8 = 1;
                    	}
                    	} finally { dbg.ExitDecision(8); }

                    	switch (alt8) 
                    	{
                    	    case 1 :
                    	        dbg.EnterAlt(1);

                    	        // C:\\Development\\TT.Net\\TT\\Template.g:93:4: 'SET'
                    	        {
                    	        	dbg.Location(93,4);
                    	        	string_literal17=(IToken)Match(input,56,FOLLOW_56_in_setExpr605);  
                    	        	stream_56.Add(string_literal17);


                    	        }
                    	        break;

                    	}
                    	} finally { dbg.ExitSubRule(8); }

                    	dbg.Location(93,11);
                    	ID18=(IToken)Match(input,ID,FOLLOW_ID_in_setExpr608);  
                    	stream_ID.Add(ID18);

                    	dbg.Location(93,14);
                    	ASSIGN19=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_setExpr610);  
                    	stream_ASSIGN.Add(ASSIGN19);

                    	dbg.Location(93,21);
                    	NUMBER20=(IToken)Match(input,NUMBER,FOLLOW_NUMBER_in_setExpr612);  
                    	stream_NUMBER.Add(NUMBER20);



                    	// AST REWRITE
                    	// elements:          NUMBER, ID
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (CommonTree)adaptor.GetNilNode();
                    	// 93:29: -> ^( SET ID NUMBER )
                    	{
                    	    dbg.Location(93,32);
                    	    // C:\\Development\\TT.Net\\TT\\Template.g:93:32: ^( SET ID NUMBER )
                    	    {
                    	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    	    dbg.Location(93,34);
                    	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(SET, "SET"), root_1);

                    	    dbg.Location(93,38);
                    	    adaptor.AddChild(root_1, stream_ID.NextNode());
                    	    dbg.Location(93,41);
                    	    adaptor.AddChild(root_1, stream_NUMBER.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;
                case 3 :
                    dbg.EnterAlt(3);

                    // C:\\Development\\TT.Net\\TT\\Template.g:94:4: ( 'SET' )? ID ASSIGN DECIMAL
                    {
                    	dbg.Location(94,4);
                    	// C:\\Development\\TT.Net\\TT\\Template.g:94:4: ( 'SET' )?
                    	int alt9 = 2;
                    	try { dbg.EnterSubRule(9);
                    	try { dbg.EnterDecision(9);

                    	int LA9_0 = input.LA(1);

                    	if ( (LA9_0 == 56) )
                    	{
                    	    alt9 = 1;
                    	}
                    	} finally { dbg.ExitDecision(9); }

                    	switch (alt9) 
                    	{
                    	    case 1 :
                    	        dbg.EnterAlt(1);

                    	        // C:\\Development\\TT.Net\\TT\\Template.g:94:4: 'SET'
                    	        {
                    	        	dbg.Location(94,4);
                    	        	string_literal21=(IToken)Match(input,56,FOLLOW_56_in_setExpr628);  
                    	        	stream_56.Add(string_literal21);


                    	        }
                    	        break;

                    	}
                    	} finally { dbg.ExitSubRule(9); }

                    	dbg.Location(94,11);
                    	ID22=(IToken)Match(input,ID,FOLLOW_ID_in_setExpr631);  
                    	stream_ID.Add(ID22);

                    	dbg.Location(94,14);
                    	ASSIGN23=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_setExpr633);  
                    	stream_ASSIGN.Add(ASSIGN23);

                    	dbg.Location(94,21);
                    	DECIMAL24=(IToken)Match(input,DECIMAL,FOLLOW_DECIMAL_in_setExpr635);  
                    	stream_DECIMAL.Add(DECIMAL24);



                    	// AST REWRITE
                    	// elements:          DECIMAL, ID
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (CommonTree)adaptor.GetNilNode();
                    	// 94:29: -> ^( SET ID DECIMAL )
                    	{
                    	    dbg.Location(94,32);
                    	    // C:\\Development\\TT.Net\\TT\\Template.g:94:32: ^( SET ID DECIMAL )
                    	    {
                    	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    	    dbg.Location(94,34);
                    	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(SET, "SET"), root_1);

                    	    dbg.Location(94,38);
                    	    adaptor.AddChild(root_1, stream_ID.NextNode());
                    	    dbg.Location(94,41);
                    	    adaptor.AddChild(root_1, stream_DECIMAL.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;

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

            	retval.Tree = (CommonTree)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 = (CommonTree)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
        }
        dbg.Location(95, 2);

        }
        finally {
            dbg.ExitRule(GrammarFileName, "setExpr");
            DecRuleLevel();
            if ( RuleLevel==0 ) {dbg.Terminate();}
        }

        return retval;
    }
Пример #2
0
    // $ANTLR start "setExpr"
    // TT\\Template.g:104:1: setExpr : ( 'SET' )? ( assignment )+ -> ( ^( SET assignment ) )+ ;
    public TemplateParser.setExpr_return setExpr() // throws RecognitionException [1]
    {   
        TemplateParser.setExpr_return retval = new TemplateParser.setExpr_return();
        retval.Start = input.LT(1);

        CommonTree root_0 = null;

        IToken string_literal34 = null;
        TemplateParser.assignment_return assignment35 = default(TemplateParser.assignment_return);


        CommonTree string_literal34_tree=null;
        RewriteRuleTokenStream stream_58 = new RewriteRuleTokenStream(adaptor,"token 58");
        RewriteRuleSubtreeStream stream_assignment = new RewriteRuleSubtreeStream(adaptor,"rule assignment");
        try 
    	{
            // TT\\Template.g:105:2: ( ( 'SET' )? ( assignment )+ -> ( ^( SET assignment ) )+ )
            // TT\\Template.g:105:4: ( 'SET' )? ( assignment )+
            {
            	// TT\\Template.g:105:4: ( 'SET' )?
            	int alt15 = 2;
            	int LA15_0 = input.LA(1);

            	if ( (LA15_0 == 58) )
            	{
            	    alt15 = 1;
            	}
            	switch (alt15) 
            	{
            	    case 1 :
            	        // TT\\Template.g:105:4: 'SET'
            	        {
            	        	string_literal34=(IToken)Match(input,58,FOLLOW_58_in_setExpr700);  
            	        	stream_58.Add(string_literal34);


            	        }
            	        break;

            	}

            	// TT\\Template.g:105:11: ( assignment )+
            	int cnt16 = 0;
            	do 
            	{
            	    int alt16 = 2;
            	    int LA16_0 = input.LA(1);

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


            	    switch (alt16) 
            		{
            			case 1 :
            			    // TT\\Template.g:105:12: assignment
            			    {
            			    	PushFollow(FOLLOW_assignment_in_setExpr704);
            			    	assignment35 = assignment();
            			    	state.followingStackPointer--;

            			    	stream_assignment.Add(assignment35.Tree);

            			    }
            			    break;

            			default:
            			    if ( cnt16 >= 1 ) goto loop16;
            		            EarlyExitException eee16 =
            		                new EarlyExitException(16, input);
            		            throw eee16;
            	    }
            	    cnt16++;
            	} while (true);

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



            	// AST REWRITE
            	// elements:          assignment
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 105:25: -> ( ^( SET assignment ) )+
            	{
            	    if ( !(stream_assignment.HasNext()) ) {
            	        throw new RewriteEarlyExitException();
            	    }
            	    while ( stream_assignment.HasNext() )
            	    {
            	        // TT\\Template.g:105:28: ^( SET assignment )
            	        {
            	        CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	        root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(SET, "SET"), root_1);

            	        adaptor.AddChild(root_1, stream_assignment.NextTree());

            	        adaptor.AddChild(root_0, root_1);
            	        }

            	    }
            	    stream_assignment.Reset();

            	}

            	retval.Tree = root_0;retval.Tree = root_0;
            }

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

            	retval.Tree = (CommonTree)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 = (CommonTree)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
        }
        return retval;
    }