Ejemplo n.º 1
0
    // $ANTLR start "string_expr"
    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:103:1: string_expr : ( ( UnQuotedString )=> ( ({...}?b= UnQuotedString -> ^( BOOL $b) ) | ({...}?n= UnQuotedString -> $n) ) | QUOT ( QuotedStringChar )* QUOT -> ^( QUOTED_STRING ( QuotedStringChar )* ) | QUOT UnQuotedString QUOT -> ^( QUOTED_STRING UnQuotedString ) | QUOT Integer QUOT -> ^( QUOTED_STRING Integer ) | UnQuotedString -> ^( UNQUOTED_STRING UnQuotedString ) );
    public YamlParser.string_expr_return string_expr() // throws RecognitionException [1]
    {   
        YamlParser.string_expr_return retval = new YamlParser.string_expr_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken b = null;
        IToken n = null;
        IToken QUOT12 = null;
        IToken QuotedStringChar13 = null;
        IToken QUOT14 = null;
        IToken QUOT15 = null;
        IToken UnQuotedString16 = null;
        IToken QUOT17 = null;
        IToken QUOT18 = null;
        IToken Integer19 = null;
        IToken QUOT20 = null;
        IToken UnQuotedString21 = null;

        object b_tree=null;
        object n_tree=null;
        object QUOT12_tree=null;
        object QuotedStringChar13_tree=null;
        object QUOT14_tree=null;
        object QUOT15_tree=null;
        object UnQuotedString16_tree=null;
        object QUOT17_tree=null;
        object QUOT18_tree=null;
        object Integer19_tree=null;
        object QUOT20_tree=null;
        object UnQuotedString21_tree=null;
        RewriteRuleTokenStream stream_QuotedStringChar = new RewriteRuleTokenStream(adaptor,"token QuotedStringChar");
        RewriteRuleTokenStream stream_UnQuotedString = new RewriteRuleTokenStream(adaptor,"token UnQuotedString");
        RewriteRuleTokenStream stream_Integer = new RewriteRuleTokenStream(adaptor,"token Integer");
        RewriteRuleTokenStream stream_QUOT = new RewriteRuleTokenStream(adaptor,"token QUOT");

        try 
    	{
            // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:104:2: ( ( UnQuotedString )=> ( ({...}?b= UnQuotedString -> ^( BOOL $b) ) | ({...}?n= UnQuotedString -> $n) ) | QUOT ( QuotedStringChar )* QUOT -> ^( QUOTED_STRING ( QuotedStringChar )* ) | QUOT UnQuotedString QUOT -> ^( QUOTED_STRING UnQuotedString ) | QUOT Integer QUOT -> ^( QUOTED_STRING Integer ) | UnQuotedString -> ^( UNQUOTED_STRING UnQuotedString ) )
            int alt4 = 5;
            int LA4_0 = input.LA(1);

            if ( (LA4_0 == UnQuotedString) )
            {
                int LA4_1 = input.LA(2);

                if ( (((synpred1_Yaml() && ( input.LT(1).Text=="true" || input.LT(1).Text=="false" ))|| (synpred1_Yaml() && ( input.LT(1).Text == "null" )))) )
                {
                    alt4 = 1;
                }
                else if ( (true) )
                {
                    alt4 = 5;
                }
                else 
                {
                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    NoViableAltException nvae_d4s1 =
                        new NoViableAltException("", 4, 1, input);

                    throw nvae_d4s1;
                }
            }
            else if ( (LA4_0 == QUOT) )
            {
                switch ( input.LA(2) ) 
                {
                case UnQuotedString:
                	{
                    alt4 = 3;
                    }
                    break;
                case Integer:
                	{
                    alt4 = 4;
                    }
                    break;
                case QUOT:
                case QuotedStringChar:
                	{
                    alt4 = 2;
                    }
                    break;
                	default:
                	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                	    NoViableAltException nvae_d4s2 =
                	        new NoViableAltException("", 4, 2, input);

                	    throw nvae_d4s2;
                }

            }
            else 
            {
                if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                NoViableAltException nvae_d4s0 =
                    new NoViableAltException("", 4, 0, input);

                throw nvae_d4s0;
            }
            switch (alt4) 
            {
                case 1 :
                    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:104:4: ( UnQuotedString )=> ( ({...}?b= UnQuotedString -> ^( BOOL $b) ) | ({...}?n= UnQuotedString -> $n) )
                    {
                    	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:105:2: ( ({...}?b= UnQuotedString -> ^( BOOL $b) ) | ({...}?n= UnQuotedString -> $n) )
                    	int alt2 = 2;
                    	int LA2_0 = input.LA(1);

                    	if ( (LA2_0 == UnQuotedString) )
                    	{
                    	    int LA2_1 = input.LA(2);

                    	    if ( (( input.LT(1).Text=="true" || input.LT(1).Text=="false" )) )
                    	    {
                    	        alt2 = 1;
                    	    }
                    	    else if ( (( input.LT(1).Text == "null" )) )
                    	    {
                    	        alt2 = 2;
                    	    }
                    	    else 
                    	    {
                    	        if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        NoViableAltException nvae_d2s1 =
                    	            new NoViableAltException("", 2, 1, input);

                    	        throw nvae_d2s1;
                    	    }
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	    NoViableAltException nvae_d2s0 =
                    	        new NoViableAltException("", 2, 0, input);

                    	    throw nvae_d2s0;
                    	}
                    	switch (alt2) 
                    	{
                    	    case 1 :
                    	        // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:106:3: ({...}?b= UnQuotedString -> ^( BOOL $b) )
                    	        {
                    	        	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:106:3: ({...}?b= UnQuotedString -> ^( BOOL $b) )
                    	        	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:107:4: {...}?b= UnQuotedString
                    	        	{
                    	        		if ( !(( input.LT(1).Text=="true" || input.LT(1).Text=="false" )) ) 
                    	        		{
                    	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        		    throw new FailedPredicateException(input, "string_expr", " input.LT(1).Text==\"true\" || input.LT(1).Text==\"false\" ");
                    	        		}
                    	        		b=(IToken)Match(input,UnQuotedString,FOLLOW_UnQuotedString_in_string_expr524); if (state.failed) return retval; 
                    	        		if ( (state.backtracking==0) ) stream_UnQuotedString.Add(b);

                    	        		if ( (state.backtracking==0) )
                    	        		{
                    	        		  b.Type = Bool;
                    	        		}


                    	        		// AST REWRITE
                    	        		// elements:          b
                    	        		// token labels:      b
                    	        		// rule labels:       retval
                    	        		// token list labels: 
                    	        		// rule list labels:  
                    	        		// wildcard labels: 
                    	        		if ( (state.backtracking==0) ) {
                    	        		retval.Tree = root_0;
                    	        		RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	        		RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	        		root_0 = (object)adaptor.GetNilNode();
                    	        		// 108:39: -> ^( BOOL $b)
                    	        		{
                    	        		    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:108:42: ^( BOOL $b)
                    	        		    {
                    	        		    object root_1 = (object)adaptor.GetNilNode();
                    	        		    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(BOOL, "BOOL"), root_1);

                    	        		    adaptor.AddChild(root_1, stream_b.NextNode());

                    	        		    adaptor.AddChild(root_0, root_1);
                    	        		    }

                    	        		}

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


                    	        }
                    	        break;
                    	    case 2 :
                    	        // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:110:5: ({...}?n= UnQuotedString -> $n)
                    	        {
                    	        	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:110:5: ({...}?n= UnQuotedString -> $n)
                    	        	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:111:4: {...}?n= UnQuotedString
                    	        	{
                    	        		if ( !(( input.LT(1).Text == "null" )) ) 
                    	        		{
                    	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	        		    throw new FailedPredicateException(input, "string_expr", " input.LT(1).Text == \"null\" ");
                    	        		}
                    	        		n=(IToken)Match(input,UnQuotedString,FOLLOW_UnQuotedString_in_string_expr557); if (state.failed) return retval; 
                    	        		if ( (state.backtracking==0) ) stream_UnQuotedString.Add(n);

                    	        		if ( (state.backtracking==0) )
                    	        		{
                    	        		   n.Type = NULL; 
                    	        		}


                    	        		// AST REWRITE
                    	        		// elements:          n
                    	        		// token labels:      n
                    	        		// rule labels:       retval
                    	        		// token list labels: 
                    	        		// rule list labels:  
                    	        		// wildcard labels: 
                    	        		if ( (state.backtracking==0) ) {
                    	        		retval.Tree = root_0;
                    	        		RewriteRuleTokenStream stream_n = new RewriteRuleTokenStream(adaptor, "token n", n);
                    	        		RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	        		root_0 = (object)adaptor.GetNilNode();
                    	        		// 112:41: -> $n
                    	        		{
                    	        		    adaptor.AddChild(root_0, stream_n.NextNode());

                    	        		}

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


                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 2 :
                    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:115:4: QUOT ( QuotedStringChar )* QUOT
                    {
                    	QUOT12=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr576); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT12);

                    	// C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:115:9: ( QuotedStringChar )*
                    	do 
                    	{
                    	    int alt3 = 2;
                    	    int LA3_0 = input.LA(1);

                    	    if ( (LA3_0 == QuotedStringChar) )
                    	    {
                    	        alt3 = 1;
                    	    }


                    	    switch (alt3) 
                    		{
                    			case 1 :
                    			    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:115:9: QuotedStringChar
                    			    {
                    			    	QuotedStringChar13=(IToken)Match(input,QuotedStringChar,FOLLOW_QuotedStringChar_in_string_expr578); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_QuotedStringChar.Add(QuotedStringChar13);


                    			    }
                    			    break;

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

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

                    	QUOT14=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr581); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT14);



                    	// AST REWRITE
                    	// elements:          QuotedStringChar
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 116:3: -> ^( QUOTED_STRING ( QuotedStringChar )* )
                    	{
                    	    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:116:6: ^( QUOTED_STRING ( QuotedStringChar )* )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(QUOTED_STRING, "QUOTED_STRING"), root_1);

                    	    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:116:22: ( QuotedStringChar )*
                    	    while ( stream_QuotedStringChar.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_QuotedStringChar.NextNode());

                    	    }
                    	    stream_QuotedStringChar.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 3 :
                    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:117:4: QUOT UnQuotedString QUOT
                    {
                    	QUOT15=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr598); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT15);

                    	UnQuotedString16=(IToken)Match(input,UnQuotedString,FOLLOW_UnQuotedString_in_string_expr600); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_UnQuotedString.Add(UnQuotedString16);

                    	QUOT17=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr602); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT17);



                    	// AST REWRITE
                    	// elements:          UnQuotedString
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 118:3: -> ^( QUOTED_STRING UnQuotedString )
                    	{
                    	    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:118:6: ^( QUOTED_STRING UnQuotedString )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(QUOTED_STRING, "QUOTED_STRING"), root_1);

                    	    adaptor.AddChild(root_1, stream_UnQuotedString.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 4 :
                    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:119:4: QUOT Integer QUOT
                    {
                    	QUOT18=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr618); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT18);

                    	Integer19=(IToken)Match(input,Integer,FOLLOW_Integer_in_string_expr620); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_Integer.Add(Integer19);

                    	QUOT20=(IToken)Match(input,QUOT,FOLLOW_QUOT_in_string_expr622); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_QUOT.Add(QUOT20);



                    	// AST REWRITE
                    	// elements:          Integer
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 120:3: -> ^( QUOTED_STRING Integer )
                    	{
                    	    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:120:6: ^( QUOTED_STRING Integer )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(QUOTED_STRING, "QUOTED_STRING"), root_1);

                    	    adaptor.AddChild(root_1, stream_Integer.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 5 :
                    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:121:4: UnQuotedString
                    {
                    	UnQuotedString21=(IToken)Match(input,UnQuotedString,FOLLOW_UnQuotedString_in_string_expr638); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_UnQuotedString.Add(UnQuotedString21);



                    	// AST REWRITE
                    	// elements:          UnQuotedString
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 121:19: -> ^( UNQUOTED_STRING UnQuotedString )
                    	{
                    	    // C:\\dev\\enyaml\\enyaml\\gen\\Yaml.g:121:22: ^( UNQUOTED_STRING UnQuotedString )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(UNQUOTED_STRING, "UNQUOTED_STRING"), root_1);

                    	    adaptor.AddChild(root_1, stream_UnQuotedString.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 2
0
        // throws RecognitionException [1]
        // $ANTLR start typeExpression
        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1015:1: typeExpression : c= COLON ( identifier | VOID | STAR ) -> ^( TYPE_SPEC[$c] ( identifier )? ( VOID )? ( STAR )? ) ;
        public typeExpression_return typeExpression()
        {
            typeExpression_return retval = new typeExpression_return();
            retval.start = input.LT(1);
            int typeExpression_StartIndex = input.Index();
            CommonTree root_0 = null;

            CommonToken c = null;
            CommonToken VOID170 = null;
            CommonToken STAR171 = null;
            identifier_return identifier169 = null;

            CommonTree c_tree=null;
            CommonTree VOID170_tree=null;
            CommonTree STAR171_tree=null;
            RewriteRuleTokenStream stream_STAR = new RewriteRuleTokenStream(adaptor,"token STAR");
            RewriteRuleTokenStream stream_COLON = new RewriteRuleTokenStream(adaptor,"token COLON");
            RewriteRuleTokenStream stream_VOID = new RewriteRuleTokenStream(adaptor,"token VOID");
            RewriteRuleSubtreeStream stream_identifier = new RewriteRuleSubtreeStream(adaptor,"rule identifier");
            try
            {
            if ( (backtracking > 0) && AlreadyParsedRule(input, 64) )
            {
                return retval;
            }
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1017:3: (c= COLON ( identifier | VOID | STAR ) -> ^( TYPE_SPEC[$c] ( identifier )? ( VOID )? ( STAR )? ) )
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1017:3: c= COLON ( identifier | VOID | STAR )
            {
                c = (CommonToken)input.LT(1);
                Match(input,COLON,FOLLOW_COLON_in_typeExpression3152); if (failed) return retval;
                if ( backtracking==0 ) stream_COLON.Add(c);

                if ( backtracking == 0 )
                {
                   buffer.Append(options.SpaceBetweenType ? " : " : ":");
                }
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1018:3: ( identifier | VOID | STAR )
                int alt45 = 3;
                switch ( input.LA(1) )
                {
                case GET:
                case SET:
                case IDENT:
                case DYNAMIC:
                case IS:
                case AS:
                case USE:
                case XML:
                    {
                    alt45 = 1;
                    }
                    break;
                case VOID:
                    {
                    alt45 = 2;
                    }
                    break;
                case STAR:
                    {
                    alt45 = 3;
                    }
                    break;
                    default:
                        if ( backtracking > 0 ) {failed = true; return retval;}
                        NoViableAltException nvae_d45s0 =
                            new NoViableAltException("1018:3: ( identifier | VOID | STAR )", 45, 0, input);

                        throw nvae_d45s0;
                }

                switch (alt45)
                {
                    case 1 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1019:4: identifier
                        {
                            PushFollow(FOLLOW_identifier_in_typeExpression3165);
                            identifier169 = identifier();
                            followingStackPointer_--;
                            if (failed) return retval;
                            if ( backtracking==0 ) stream_identifier.Add(identifier169.Tree);

                        }
                        break;
                    case 2 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1020:6: VOID
                        {
                            VOID170 = (CommonToken)input.LT(1);
                            Match(input,VOID,FOLLOW_VOID_in_typeExpression3173); if (failed) return retval;
                            if ( backtracking==0 ) stream_VOID.Add(VOID170);

                            if ( backtracking == 0 )
                            {
                               buffer.Append("Void");
                            }

                        }
                        break;
                    case 3 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1021:6: STAR
                        {
                            STAR171 = (CommonToken)input.LT(1);
                            Match(input,STAR,FOLLOW_STAR_in_typeExpression3183); if (failed) return retval;
                            if ( backtracking==0 ) stream_STAR.Add(STAR171);

                            if ( backtracking == 0 )
                            {
                               buffer.Append("*");
                            }

                        }
                        break;

                }

                // AST REWRITE
                // elements:          STAR, VOID, identifier
                // token labels:
                // rule labels:       retval
                // token list labels:
                // rule list labels:
                if ( backtracking==0 ) {
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                root_0 = (CommonTree)adaptor.GetNilNode();
                // 1023:3: -> ^( TYPE_SPEC[$c] ( identifier )? ( VOID )? ( STAR )? )
                {
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1023:6: ^( TYPE_SPEC[$c] ( identifier )? ( VOID )? ( STAR )? )
                    {
                    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    root_1 = (CommonTree)adaptor.BecomeRoot(adaptor.Create(TYPE_SPEC, c), root_1);

                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1023:22: ( identifier )?
                    if ( stream_identifier.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_identifier.Next());

                    }
                    stream_identifier.Reset();
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1023:34: ( VOID )?
                    if ( stream_VOID.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_VOID.Next());

                    }
                    stream_VOID.Reset();
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1023:40: ( STAR )?
                    if ( stream_STAR.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_STAR.Next());

                    }
                    stream_STAR.Reset();

                    adaptor.AddChild(root_0, root_1);
                    }

                }

                }

            }

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

            if ( backtracking==0 )
            {	retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop);
            }
            }

            catch (NoViableAltException e)
            {
                Debug.WriteLine("NoValiable alt: token=" + e.Token + " (decision=" + e.decisionNumber + " state " + e.stateNumber + ")" + " decision=<<" + e.grammarDecisionDescription + ">>");
                throw e;
            }
            catch (MismatchedTokenException e)
            {
                Debug.WriteLine("[" + e.Line + ":" + e.Index + "]: " + e.Message + ". Unexpected " + e.UnexpectedType.ToString() +  "( expecting: "+ e.expecting + " )");
                throw e;
            }
            catch(RecognitionException e)
            {
                Debug.WriteLine("RecognitionException: " + e);
                throw e;
            }
            finally
            {
            if ( backtracking > 0 )
            {
                Memoize(input, 64, typeExpression_StartIndex);
            }
            }
            return retval;
        }
Ejemplo n.º 3
0
        // throws RecognitionException [1]
        // $ANTLR start expressionList
        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1222:1: expressionList : assignmentExpression ( COMMA assignmentExpression )* -> ^( ELIST assignmentExpression ( COMMA assignmentExpression )* ) ;
        public expressionList_return expressionList()
        {
            expressionList_return retval = new expressionList_return();
            retval.start = input.LT(1);
            int expressionList_StartIndex = input.Index();
            CommonTree root_0 = null;

            CommonToken COMMA227 = null;
            assignmentExpression_return assignmentExpression226 = null;

            assignmentExpression_return assignmentExpression228 = null;

            CommonTree COMMA227_tree=null;
            RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream(adaptor,"token COMMA");
            RewriteRuleSubtreeStream stream_assignmentExpression = new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
            try
            {
            if ( (backtracking > 0) && AlreadyParsedRule(input, 86) )
            {
                return retval;
            }
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1223:4: ( assignmentExpression ( COMMA assignmentExpression )* -> ^( ELIST assignmentExpression ( COMMA assignmentExpression )* ) )
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1223:4: assignmentExpression ( COMMA assignmentExpression )*
            {
                PushFollow(FOLLOW_assignmentExpression_in_expressionList4132);
                assignmentExpression226 = assignmentExpression();
                followingStackPointer_--;
                if (failed) return retval;
                if ( backtracking==0 ) stream_assignmentExpression.Add(assignmentExpression226.Tree);
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1224:3: ( COMMA assignmentExpression )*
                do
                {
                    int alt66 = 2;
                    int LA66_0 = input.LA(1);

                    if ( (LA66_0 == COMMA) )
                    {
                        alt66 = 1;
                    }

                    switch (alt66)
                    {
                        case 1 :
                            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1225:4: COMMA assignmentExpression
                            {
                                COMMA227 = (CommonToken)input.LT(1);
                                Match(input,COMMA,FOLLOW_COMMA_in_expressionList4142); if (failed) return retval;
                                if ( backtracking==0 ) stream_COMMA.Add(COMMA227);

                                if ( backtracking == 0 )
                                {
                                  buffer.Append(options.SpaceBetweenArguments ? ", " : ",");
                                }
                                PushFollow(FOLLOW_assignmentExpression_in_expressionList4154);
                                assignmentExpression228 = assignmentExpression();
                                followingStackPointer_--;
                                if (failed) return retval;
                                if ( backtracking==0 ) stream_assignmentExpression.Add(assignmentExpression228.Tree);

                            }
                            break;

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

                loop66:
                    ;	// Stops C# compiler whinging that label 'loop66' has no statements

                // AST REWRITE
                // elements:          assignmentExpression, assignmentExpression, COMMA
                // token labels:
                // rule labels:       retval
                // token list labels:
                // rule list labels:
                if ( backtracking==0 ) {
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                root_0 = (CommonTree)adaptor.GetNilNode();
                // 1227:6: -> ^( ELIST assignmentExpression ( COMMA assignmentExpression )* )
                {
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1227:9: ^( ELIST assignmentExpression ( COMMA assignmentExpression )* )
                    {
                    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    root_1 = (CommonTree)adaptor.BecomeRoot(adaptor.Create(ELIST, "ELIST"), root_1);

                    adaptor.AddChild(root_1, stream_assignmentExpression.Next());
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1227:38: ( COMMA assignmentExpression )*
                    while ( stream_assignmentExpression.HasNext() || stream_COMMA.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_COMMA.Next());
                        adaptor.AddChild(root_1, stream_assignmentExpression.Next());

                    }
                    stream_assignmentExpression.Reset();
                    stream_COMMA.Reset();

                    adaptor.AddChild(root_0, root_1);
                    }

                }

                }

            }

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

            if ( backtracking==0 )
            {	retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop);
            }
            }

            catch (NoViableAltException e)
            {
                Debug.WriteLine("NoValiable alt: token=" + e.Token + " (decision=" + e.decisionNumber + " state " + e.stateNumber + ")" + " decision=<<" + e.grammarDecisionDescription + ">>");
                throw e;
            }
            catch (MismatchedTokenException e)
            {
                Debug.WriteLine("[" + e.Line + ":" + e.Index + "]: " + e.Message + ". Unexpected " + e.UnexpectedType.ToString() +  "( expecting: "+ e.expecting + " )");
                throw e;
            }
            catch(RecognitionException e)
            {
                Debug.WriteLine("RecognitionException: " + e);
                throw e;
            }
            finally
            {
            if ( backtracking > 0 )
            {
                Memoize(input, 86, expressionList_StartIndex);
            }
            }
            return retval;
        }
Ejemplo n.º 4
0
    // $ANTLR start "variable"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:373:1: variable : ( Reference )? Identifier -> ^( Identifier ( Reference )? ) ;
    public PsimulexParser.variable_return variable() // throws RecognitionException [1]
    {   
        PsimulexParser.variable_return retval = new PsimulexParser.variable_return();
        retval.Start = input.LT(1);
        int variable_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken Reference110 = null;
        IToken Identifier111 = null;

        CommonTree Reference110_tree=null;
        CommonTree Identifier111_tree=null;
        RewriteRuleTokenStream stream_Reference = new RewriteRuleTokenStream(adaptor,"token Reference");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 46) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:374:2: ( ( Reference )? Identifier -> ^( Identifier ( Reference )? ) )
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:374:4: ( Reference )? Identifier
            {
            	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:374:4: ( Reference )?
            	int alt29 = 2;
            	int LA29_0 = input.LA(1);

            	if ( (LA29_0 == Reference) )
            	{
            	    alt29 = 1;
            	}
            	switch (alt29) 
            	{
            	    case 1 :
            	        // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:0:0: Reference
            	        {
            	        	Reference110=(IToken)Match(input,Reference,FOLLOW_Reference_in_variable1767); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_Reference.Add(Reference110);


            	        }
            	        break;

            	}

            	Identifier111=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_variable1770); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier111);



            	// AST REWRITE
            	// elements:          Reference, Identifier
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 374:26: -> ^( Identifier ( Reference )? )
            	{
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:374:29: ^( Identifier ( Reference )? )
            	    {
            	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	    root_1 = (CommonTree)adaptor.BecomeRoot(stream_Identifier.NextNode(), root_1);

            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:374:43: ( Reference )?
            	    if ( stream_Reference.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_Reference.NextNode());

            	    }
            	    stream_Reference.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 46, variable_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 5
0
    // $ANTLR start "localVariableDeclaration"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:522:1: localVariableDeclaration options {k=5; } : ( type Identifier -> ^( VARDECLARE type Identifier ) | type ( Reference )? Identifier Assign expression -> ^( VARINIT type ( Reference )? Identifier expression ) );
    public PsimulexParser.localVariableDeclaration_return localVariableDeclaration() // throws RecognitionException [1]
    {   
        PsimulexParser.localVariableDeclaration_return retval = new PsimulexParser.localVariableDeclaration_return();
        retval.Start = input.LT(1);
        int localVariableDeclaration_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken Identifier205 = null;
        IToken Reference207 = null;
        IToken Identifier208 = null;
        IToken Assign209 = null;
        PsimulexParser.type_return type204 = default(PsimulexParser.type_return);

        PsimulexParser.type_return type206 = default(PsimulexParser.type_return);

        PsimulexParser.expression_return expression210 = default(PsimulexParser.expression_return);


        CommonTree Identifier205_tree=null;
        CommonTree Reference207_tree=null;
        CommonTree Identifier208_tree=null;
        CommonTree Assign209_tree=null;
        RewriteRuleTokenStream stream_Assign = new RewriteRuleTokenStream(adaptor,"token Assign");
        RewriteRuleTokenStream stream_Reference = new RewriteRuleTokenStream(adaptor,"token Reference");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleSubtreeStream stream_expression = new RewriteRuleSubtreeStream(adaptor,"rule expression");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 66) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:524:2: ( type Identifier -> ^( VARDECLARE type Identifier ) | type ( Reference )? Identifier Assign expression -> ^( VARINIT type ( Reference )? Identifier expression ) )
            int alt49 = 2;
            alt49 = dfa49.Predict(input);
            switch (alt49) 
            {
                case 1 :
                    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:524:6: type Identifier
                    {
                    	PushFollow(FOLLOW_type_in_localVariableDeclaration2753);
                    	type204 = type();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_type.Add(type204.Tree);
                    	Identifier205=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_localVariableDeclaration2755); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier205);



                    	// AST REWRITE
                    	// elements:          type, Identifier
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (CommonTree)adaptor.GetNilNode();
                    	// 524:22: -> ^( VARDECLARE type Identifier )
                    	{
                    	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:524:25: ^( VARDECLARE type Identifier )
                    	    {
                    	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(VARDECLARE, "VARDECLARE"), root_1);

                    	    adaptor.AddChild(root_1, stream_type.NextTree());
                    	    adaptor.AddChild(root_1, stream_Identifier.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 2 :
                    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:526:6: type ( Reference )? Identifier Assign expression
                    {
                    	PushFollow(FOLLOW_type_in_localVariableDeclaration2779);
                    	type206 = type();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_type.Add(type206.Tree);
                    	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:526:11: ( Reference )?
                    	int alt48 = 2;
                    	int LA48_0 = input.LA(1);

                    	if ( (LA48_0 == Reference) )
                    	{
                    	    alt48 = 1;
                    	}
                    	switch (alt48) 
                    	{
                    	    case 1 :
                    	        // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:0:0: Reference
                    	        {
                    	        	Reference207=(IToken)Match(input,Reference,FOLLOW_Reference_in_localVariableDeclaration2781); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_Reference.Add(Reference207);


                    	        }
                    	        break;

                    	}

                    	Identifier208=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_localVariableDeclaration2784); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier208);

                    	Assign209=(IToken)Match(input,Assign,FOLLOW_Assign_in_localVariableDeclaration2786); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_Assign.Add(Assign209);

                    	PushFollow(FOLLOW_expression_in_localVariableDeclaration2788);
                    	expression210 = expression();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_expression.Add(expression210.Tree);


                    	// AST REWRITE
                    	// elements:          type, Identifier, expression, Reference
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (CommonTree)adaptor.GetNilNode();
                    	// 526:51: -> ^( VARINIT type ( Reference )? Identifier expression )
                    	{
                    	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:526:54: ^( VARINIT type ( Reference )? Identifier expression )
                    	    {
                    	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(VARINIT, "VARINIT"), root_1);

                    	    adaptor.AddChild(root_1, stream_type.NextTree());
                    	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:526:70: ( Reference )?
                    	    if ( stream_Reference.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_Reference.NextNode());

                    	    }
                    	    stream_Reference.Reset();
                    	    adaptor.AddChild(root_1, stream_Identifier.NextNode());
                    	    adaptor.AddChild(root_1, stream_expression.NextTree());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 66, localVariableDeclaration_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 6
0
    // $ANTLR start "id_list"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:1: id_list : a= ID ( ',' b+= ID )* -> ^( ID_LIST $a ( $b)* ) ;
    public BlaiseParser.id_list_return id_list() // throws RecognitionException [1]
    {   
        BlaiseParser.id_list_return retval = new BlaiseParser.id_list_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken char_literal2 = null;
        IToken b = null;
        IList list_b = null;

        object a_tree=null;
        object char_literal2_tree=null;
        object b_tree=null;
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream(adaptor,"token COMMA");

        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:9: (a= ID ( ',' b+= ID )* -> ^( ID_LIST $a ( $b)* ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:11: a= ID ( ',' b+= ID )*
            {
            	a=(IToken)Match(input,ID,FOLLOW_ID_in_id_list3375); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_ID.Add(a);

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:16: ( ',' b+= ID )*
            	do 
            	{
            	    int alt2 = 2;
            	    int LA2_0 = input.LA(1);

            	    if ( (LA2_0 == COMMA) )
            	    {
            	        alt2 = 1;
            	    }


            	    switch (alt2) 
            		{
            			case 1 :
            			    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:17: ',' b+= ID
            			    {
            			    	char_literal2=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_id_list3378); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_COMMA.Add(char_literal2);

            			    	b=(IToken)Match(input,ID,FOLLOW_ID_in_id_list3382); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_ID.Add(b);

            			    	if (list_b == null) list_b = new ArrayList();
            			    	list_b.Add(b);


            			    }
            			    break;

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

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



            	// AST REWRITE
            	// elements:          b, a
            	// token labels:      a
            	// rule labels:       retval
            	// token list labels: b
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor,"token b", list_b);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 586:29: -> ^( ID_LIST $a ( $b)* )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:32: ^( ID_LIST $a ( $b)* )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(ID_LIST, "ID_LIST"), root_1);

            	    adaptor.AddChild(root_1, stream_a.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:586:45: ( $b)*
            	    while ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_b.NextNode());

            	    }
            	    stream_b.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 7
0
    // $ANTLR start "functionDeclaration"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:177:1: functionDeclaration : type ( Reference )? Identifier formalParameterList block -> ^( FUNCDEC type ( Reference )? Identifier ( formalParameterList )? block ) ;
    public PsimulexParser.functionDeclaration_return functionDeclaration() // throws RecognitionException [1]
    {   
        PsimulexParser.functionDeclaration_return retval = new PsimulexParser.functionDeclaration_return();
        retval.Start = input.LT(1);
        int functionDeclaration_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken Reference32 = null;
        IToken Identifier33 = null;
        PsimulexParser.type_return type31 = default(PsimulexParser.type_return);

        PsimulexParser.formalParameterList_return formalParameterList34 = default(PsimulexParser.formalParameterList_return);

        PsimulexParser.block_return block35 = default(PsimulexParser.block_return);


        CommonTree Reference32_tree=null;
        CommonTree Identifier33_tree=null;
        RewriteRuleTokenStream stream_Reference = new RewriteRuleTokenStream(adaptor,"token Reference");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleSubtreeStream stream_block = new RewriteRuleSubtreeStream(adaptor,"rule block");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_formalParameterList = new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 12) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:5: ( type ( Reference )? Identifier formalParameterList block -> ^( FUNCDEC type ( Reference )? Identifier ( formalParameterList )? block ) )
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:7: type ( Reference )? Identifier formalParameterList block
            {
            	PushFollow(FOLLOW_type_in_functionDeclaration769);
            	type31 = type();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_type.Add(type31.Tree);
            	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:12: ( Reference )?
            	int alt10 = 2;
            	int LA10_0 = input.LA(1);

            	if ( (LA10_0 == Reference) )
            	{
            	    alt10 = 1;
            	}
            	switch (alt10) 
            	{
            	    case 1 :
            	        // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:0:0: Reference
            	        {
            	        	Reference32=(IToken)Match(input,Reference,FOLLOW_Reference_in_functionDeclaration771); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_Reference.Add(Reference32);


            	        }
            	        break;

            	}

            	Identifier33=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_functionDeclaration774); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier33);

            	PushFollow(FOLLOW_formalParameterList_in_functionDeclaration776);
            	formalParameterList34 = formalParameterList();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_formalParameterList.Add(formalParameterList34.Tree);
            	PushFollow(FOLLOW_block_in_functionDeclaration779);
            	block35 = block();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_block.Add(block35.Tree);


            	// AST REWRITE
            	// elements:          block, Identifier, type, formalParameterList, Reference
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 178:61: -> ^( FUNCDEC type ( Reference )? Identifier ( formalParameterList )? block )
            	{
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:64: ^( FUNCDEC type ( Reference )? Identifier ( formalParameterList )? block )
            	    {
            	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(FUNCDEC, "FUNCDEC"), root_1);

            	    adaptor.AddChild(root_1, stream_type.NextTree());
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:80: ( Reference )?
            	    if ( stream_Reference.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_Reference.NextNode());

            	    }
            	    stream_Reference.Reset();
            	    adaptor.AddChild(root_1, stream_Identifier.NextNode());
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:178:102: ( formalParameterList )?
            	    if ( stream_formalParameterList.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_formalParameterList.NextTree());

            	    }
            	    stream_formalParameterList.Reset();
            	    adaptor.AddChild(root_1, stream_block.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 12, functionDeclaration_StartIndex); 
            }
        }
        return retval;
    }
		public void CheckRRTokenStreamBehaviourWithElements() {
			RewriteRuleTokenStream tokenTest = new RewriteRuleTokenStream(CreateTreeAdaptor(),
				"RewriteRuleTokenStream test");

			IToken token1 = CreateToken(1, "test token without any real context");

			// Test Add()
			tokenTest.Add(token1);
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (1).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (1).");

			// Test NextNode()
			CommonTree tree = (CommonTree) tokenTest.NextNode();
			Assert.AreEqual(token1, tree.Token,
				"The returned token should be equal to the given token (1).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (2).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (1).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (3).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (2).");

			// Test NextToken()
			IToken returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (2).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (4).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (2).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (5).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (3).");

			// Test NextTree()
			returnedToken = (IToken) tokenTest.NextTree();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (3).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (6).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (2).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (7).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (3).");

			// Test, what happens with two elements
			IToken token2 = CreateToken(2, "test token without any real context");

			tokenTest.Add(token2);
			Assert.AreEqual(2, tokenTest.Size(), "tokenTest should have the size 2 (1).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (4).");
			returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (4).");
			Assert.AreEqual(2, tokenTest.Size(), "tokenTest should have the size 2 (2).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (5).");
			returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token2, returnedToken,
				"The returned token should be equal to the given token (5).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (3).");

			// Test exception
			tokenTest.NextToken();
		}
		public void CheckRRTokenStreamBehaviourWhileEmpty1() {
			string description = "RewriteRuleTokenStream test";
			RewriteRuleTokenStream tokenTest =
				new RewriteRuleTokenStream(CreateTreeAdaptor(),	description);

			Assert.IsFalse(tokenTest.HasNext(), "tokenTest has to give back false here.");
			Assert.AreEqual(description.ToString(), tokenTest.Description,
				"Description strings should be equal.");
			Assert.AreEqual(0, tokenTest.Size(), "The number of elements should be zero.");
			tokenTest.Reset();
			Assert.IsTrue(true, "Reset() shouldn't make any problems here.");
			Assert.AreEqual(0, tokenTest.Size(),
				"The number of elements should be still zero.");
			tokenTest.NextNode();
		}
Ejemplo n.º 10
0
    // $ANTLR start "functionExpression"
    // EcmaScriptV3.g:1509:1: functionExpression : FUNCTION (name= Identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
    public EcmaScriptV3Parser.functionExpression_return functionExpression() // throws RecognitionException [1]
    {   
        EcmaScriptV3Parser.functionExpression_return retval = new EcmaScriptV3Parser.functionExpression_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken name = null;
        IToken FUNCTION267 = null;
        EcmaScriptV3Parser.formalParameterList_return formalParameterList268 = default(EcmaScriptV3Parser.formalParameterList_return);

        EcmaScriptV3Parser.functionBody_return functionBody269 = default(EcmaScriptV3Parser.functionBody_return);


        object name_tree=null;
        object FUNCTION267_tree=null;
        RewriteRuleTokenStream stream_FUNCTION = new RewriteRuleTokenStream(adaptor,"token FUNCTION");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleSubtreeStream stream_functionBody = new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
        RewriteRuleSubtreeStream stream_formalParameterList = new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
        try 
    	{
            // EcmaScriptV3.g:1510:2: ( FUNCTION (name= Identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
            // EcmaScriptV3.g:1510:4: FUNCTION (name= Identifier )? formalParameterList functionBody
            {
            	FUNCTION267=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression5669);  
            	stream_FUNCTION.Add(FUNCTION267);

            	// EcmaScriptV3.g:1510:17: (name= Identifier )?
            	int alt69 = 2;
            	int LA69_0 = input.LA(1);

            	if ( (LA69_0 == Identifier) )
            	{
            	    alt69 = 1;
            	}
            	switch (alt69) 
            	{
            	    case 1 :
            	        // EcmaScriptV3.g:1510:17: name= Identifier
            	        {
            	        	name=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_functionExpression5673);  
            	        	stream_Identifier.Add(name);


            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_formalParameterList_in_functionExpression5676);
            	formalParameterList268 = formalParameterList();
            	state.followingStackPointer--;

            	stream_formalParameterList.Add(formalParameterList268.Tree);
            	PushFollow(FOLLOW_functionBody_in_functionExpression5678);
            	functionBody269 = functionBody();
            	state.followingStackPointer--;

            	stream_functionBody.Add(functionBody269.Tree);


            	// AST REWRITE
            	// elements:          functionBody, formalParameterList, name, FUNCTION
            	// token labels:      name
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_name = new RewriteRuleTokenStream(adaptor, "token name", name);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

            	root_0 = (object)adaptor.GetNilNode();
            	// 1511:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
            	{
            	    // EcmaScriptV3.g:1511:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot(stream_FUNCTION.NextNode(), root_1);

            	    // EcmaScriptV3.g:1511:17: ( $name)?
            	    if ( stream_name.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_name.NextNode());

            	    }
            	    stream_name.Reset();
            	    adaptor.AddChild(root_1, stream_formalParameterList.NextTree());
            	    adaptor.AddChild(root_1, stream_functionBody.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

            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;
    }
Ejemplo n.º 11
0
    // $ANTLR start "functionExpression"
    // JavaScript.g:37:1: functionExpression : f= 'function' ( LT )* ( Identifier ( LT )* | ) formalParameterList ( LT )* '{' ( ( ( LT )* '}' )=> () | ( LT )* statement ( ( LT )* statement )* ) ( LT )* e= '}' -> ^( FUNCTIONEXPR[$f,$e] formalParameterList ^( STATEMENTLIST ( statement )* ) ( Identifier )? ) ;
    public JavaScriptParser.functionExpression_return functionExpression() // throws RecognitionException [1]
    {   
        JavaScriptParser.functionExpression_return retval = new JavaScriptParser.functionExpression_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken f = null;
        IToken e = null;
        IToken LT19 = null;
        IToken Identifier20 = null;
        IToken LT21 = null;
        IToken LT23 = null;
        IToken char_literal24 = null;
        IToken LT25 = null;
        IToken LT27 = null;
        IToken LT29 = null;
        JavaScriptParser.formalParameterList_return formalParameterList22 = default(JavaScriptParser.formalParameterList_return);

        JavaScriptParser.statement_return statement26 = default(JavaScriptParser.statement_return);

        JavaScriptParser.statement_return statement28 = default(JavaScriptParser.statement_return);


        object f_tree=null;
        object e_tree=null;
        object LT19_tree=null;
        object Identifier20_tree=null;
        object LT21_tree=null;
        object LT23_tree=null;
        object char_literal24_tree=null;
        object LT25_tree=null;
        object LT27_tree=null;
        object LT29_tree=null;
        RewriteRuleTokenStream stream_LT = new RewriteRuleTokenStream(adaptor,"token LT");
        RewriteRuleTokenStream stream_41 = new RewriteRuleTokenStream(adaptor,"token 41");
        RewriteRuleTokenStream stream_40 = new RewriteRuleTokenStream(adaptor,"token 40");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleTokenStream stream_39 = new RewriteRuleTokenStream(adaptor,"token 39");
        RewriteRuleSubtreeStream stream_statement = new RewriteRuleSubtreeStream(adaptor,"rule statement");
        RewriteRuleSubtreeStream stream_formalParameterList = new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
        try 
    	{
            // JavaScript.g:38:2: (f= 'function' ( LT )* ( Identifier ( LT )* | ) formalParameterList ( LT )* '{' ( ( ( LT )* '}' )=> () | ( LT )* statement ( ( LT )* statement )* ) ( LT )* e= '}' -> ^( FUNCTIONEXPR[$f,$e] formalParameterList ^( STATEMENTLIST ( statement )* ) ( Identifier )? ) )
            // JavaScript.g:38:4: f= 'function' ( LT )* ( Identifier ( LT )* | ) formalParameterList ( LT )* '{' ( ( ( LT )* '}' )=> () | ( LT )* statement ( ( LT )* statement )* ) ( LT )* e= '}'
            {
            	f=(IToken)Match(input,39,FOLLOW_39_in_functionExpression225); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_39.Add(f);

            	// JavaScript.g:38:17: ( LT )*
            	do 
            	{
            	    int alt14 = 2;
            	    int LA14_0 = input.LA(1);

            	    if ( (LA14_0 == LT) )
            	    {
            	        alt14 = 1;
            	    }


            	    switch (alt14) 
            		{
            			case 1 :
            			    // JavaScript.g:38:17: LT
            			    {
            			    	LT19=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression227); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_LT.Add(LT19);


            			    }
            			    break;

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

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

            	// JavaScript.g:38:21: ( Identifier ( LT )* | )
            	int alt16 = 2;
            	int LA16_0 = input.LA(1);

            	if ( (LA16_0 == Identifier) )
            	{
            	    alt16 = 1;
            	}
            	else if ( (LA16_0 == 42) )
            	{
            	    alt16 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d16s0 =
            	        new NoViableAltException("", 16, 0, input);

            	    throw nvae_d16s0;
            	}
            	switch (alt16) 
            	{
            	    case 1 :
            	        // JavaScript.g:38:22: Identifier ( LT )*
            	        {
            	        	Identifier20=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_functionExpression231); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier20);

            	        	// JavaScript.g:38:33: ( LT )*
            	        	do 
            	        	{
            	        	    int alt15 = 2;
            	        	    int LA15_0 = input.LA(1);

            	        	    if ( (LA15_0 == LT) )
            	        	    {
            	        	        alt15 = 1;
            	        	    }


            	        	    switch (alt15) 
            	        		{
            	        			case 1 :
            	        			    // JavaScript.g:38:33: LT
            	        			    {
            	        			    	LT21=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression233); if (state.failed) return retval; 
            	        			    	if ( (state.backtracking==0) ) stream_LT.Add(LT21);


            	        			    }
            	        			    break;

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

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


            	        }
            	        break;
            	    case 2 :
            	        // JavaScript.g:38:48: 
            	        {
            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_formalParameterList_in_functionExpression241);
            	formalParameterList22 = formalParameterList();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_formalParameterList.Add(formalParameterList22.Tree);
            	// JavaScript.g:38:70: ( LT )*
            	do 
            	{
            	    int alt17 = 2;
            	    int LA17_0 = input.LA(1);

            	    if ( (LA17_0 == LT) )
            	    {
            	        alt17 = 1;
            	    }


            	    switch (alt17) 
            		{
            			case 1 :
            			    // JavaScript.g:38:70: LT
            			    {
            			    	LT23=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression243); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_LT.Add(LT23);


            			    }
            			    break;

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

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

            	char_literal24=(IToken)Match(input,40,FOLLOW_40_in_functionExpression246); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_40.Add(char_literal24);

            	// JavaScript.g:38:78: ( ( ( LT )* '}' )=> () | ( LT )* statement ( ( LT )* statement )* )
            	int alt21 = 2;
            	alt21 = dfa21.Predict(input);
            	switch (alt21) 
            	{
            	    case 1 :
            	        // JavaScript.g:38:79: ( ( LT )* '}' )=> ()
            	        {
            	        	// JavaScript.g:38:90: ()
            	        	// JavaScript.g:38:91: 
            	        	{
            	        	}


            	        }
            	        break;
            	    case 2 :
            	        // JavaScript.g:38:95: ( LT )* statement ( ( LT )* statement )*
            	        {
            	        	// JavaScript.g:38:95: ( LT )*
            	        	do 
            	        	{
            	        	    int alt18 = 2;
            	        	    int LA18_0 = input.LA(1);

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


            	        	    switch (alt18) 
            	        		{
            	        			case 1 :
            	        			    // JavaScript.g:38:95: LT
            	        			    {
            	        			    	LT25=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression261); if (state.failed) return retval; 
            	        			    	if ( (state.backtracking==0) ) stream_LT.Add(LT25);


            	        			    }
            	        			    break;

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

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

            	        	PushFollow(FOLLOW_statement_in_functionExpression264);
            	        	statement26 = statement();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( (state.backtracking==0) ) stream_statement.Add(statement26.Tree);
            	        	// JavaScript.g:38:109: ( ( LT )* statement )*
            	        	do 
            	        	{
            	        	    int alt20 = 2;
            	        	    alt20 = dfa20.Predict(input);
            	        	    switch (alt20) 
            	        		{
            	        			case 1 :
            	        			    // JavaScript.g:38:110: ( LT )* statement
            	        			    {
            	        			    	// JavaScript.g:38:110: ( LT )*
            	        			    	do 
            	        			    	{
            	        			    	    int alt19 = 2;
            	        			    	    int LA19_0 = input.LA(1);

            	        			    	    if ( (LA19_0 == LT) )
            	        			    	    {
            	        			    	        alt19 = 1;
            	        			    	    }


            	        			    	    switch (alt19) 
            	        			    		{
            	        			    			case 1 :
            	        			    			    // JavaScript.g:38:110: LT
            	        			    			    {
            	        			    			    	LT27=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression267); if (state.failed) return retval; 
            	        			    			    	if ( (state.backtracking==0) ) stream_LT.Add(LT27);


            	        			    			    }
            	        			    			    break;

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

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

            	        			    	PushFollow(FOLLOW_statement_in_functionExpression270);
            	        			    	statement28 = statement();
            	        			    	state.followingStackPointer--;
            	        			    	if (state.failed) return retval;
            	        			    	if ( (state.backtracking==0) ) stream_statement.Add(statement28.Tree);

            	        			    }
            	        			    break;

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

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


            	        }
            	        break;

            	}

            	// JavaScript.g:38:127: ( LT )*
            	do 
            	{
            	    int alt22 = 2;
            	    int LA22_0 = input.LA(1);

            	    if ( (LA22_0 == LT) )
            	    {
            	        alt22 = 1;
            	    }


            	    switch (alt22) 
            		{
            			case 1 :
            			    // JavaScript.g:38:127: LT
            			    {
            			    	LT29=(IToken)Match(input,LT,FOLLOW_LT_in_functionExpression275); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_LT.Add(LT29);


            			    }
            			    break;

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

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

            	e=(IToken)Match(input,41,FOLLOW_41_in_functionExpression280); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_41.Add(e);



            	// AST REWRITE
            	// elements:          formalParameterList, Identifier, statement
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 39:2: -> ^( FUNCTIONEXPR[$f,$e] formalParameterList ^( STATEMENTLIST ( statement )* ) ( Identifier )? )
            	{
            	    // JavaScript.g:39:5: ^( FUNCTIONEXPR[$f,$e] formalParameterList ^( STATEMENTLIST ( statement )* ) ( Identifier )? )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot(new functionExpressionNode(FUNCTIONEXPR, f, e), root_1);

            	    adaptor.AddChild(root_1, stream_formalParameterList.NextTree());
            	    // JavaScript.g:39:71: ^( STATEMENTLIST ( statement )* )
            	    {
            	    object root_2 = (object)adaptor.GetNilNode();
            	    root_2 = (object)adaptor.BecomeRoot(new TopStatementList(STATEMENTLIST), root_2);

            	    // JavaScript.g:39:105: ( statement )*
            	    while ( stream_statement.HasNext() )
            	    {
            	        adaptor.AddChild(root_2, stream_statement.NextTree());

            	    }
            	    stream_statement.Reset();

            	    adaptor.AddChild(root_1, root_2);
            	    }
            	    // JavaScript.g:39:117: ( Identifier )?
            	    if ( stream_Identifier.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_Identifier.NextNode());

            	    }
            	    stream_Identifier.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 12
0
    // $ANTLR start "expr"
    // MathExpr.g:188:1: expr : ( BEGIN exprList END -> ^( BLOCK ( exprList )? ) | idar allassign term | IF term expr ( ELSE expr )? | WHILE term expr | FOR ( VAR IDENT ASSIGN term )? ';' ( compare )? ';' ( groupExpr )? expr -> ^( FOR ( ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) ) )? ( compare )? ( groupExpr )? expr ) | LET idar ( ':' type )? ( ASSIGN returnValue )? ( ',' idar ( ':' type )? ( ASSIGN returnValue )? )* -> ^( LET ( ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? ) )* ) | VAR var_element ( ',' var_element )* -> ^( VAR ( var_element )* ) | FOR ( VAR )? IDENT IN term '...' term expr | PRINT '(' ( STRINGVAL | idar ) ')' | groupExpr | REPEATE expr WHILE term -> ^( REPEATE term expr ) | FUNC IDENT '(' ( func_params )? ')' ( '->' type )? expr -> ^( FUNC IDENT ^( FUNC_PARAM ( func_params )? ) ^( TYPE ( type )? ) expr ) | RETURN ( returnValue | arrayValue ) -> ^( RETURN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) | SWITCH IDENT '{' ( swcase )* ( DEFAULT ':' expr )? '}' -> ^( SWITCH IDENT ( swcase )* ( DEFAULT expr )? ) );
    public MathExprParser.expr_return expr() // throws RecognitionException [1]
    {   
        MathExprParser.expr_return retval = new MathExprParser.expr_return();
        retval.Start = input.LT(1);
        int expr_StartIndex = input.Index();
        AstNode root_0 = null;

        IToken BEGIN97 = null;
        IToken END99 = null;
        IToken IF103 = null;
        IToken ELSE106 = null;
        IToken WHILE108 = null;
        IToken FOR111 = null;
        IToken VAR112 = null;
        IToken IDENT113 = null;
        IToken ASSIGN114 = null;
        IToken char_literal116 = null;
        IToken char_literal118 = null;
        IToken LET121 = null;
        IToken char_literal123 = null;
        IToken ASSIGN125 = null;
        IToken char_literal127 = null;
        IToken char_literal129 = null;
        IToken ASSIGN131 = null;
        IToken VAR133 = null;
        IToken char_literal135 = null;
        IToken FOR137 = null;
        IToken VAR138 = null;
        IToken IDENT139 = null;
        IToken IN140 = null;
        IToken string_literal142 = null;
        IToken PRINT145 = null;
        IToken char_literal146 = null;
        IToken STRINGVAL147 = null;
        IToken char_literal149 = null;
        IToken REPEATE151 = null;
        IToken WHILE153 = null;
        IToken FUNC155 = null;
        IToken IDENT156 = null;
        IToken char_literal157 = null;
        IToken char_literal159 = null;
        IToken string_literal160 = null;
        IToken RETURN163 = null;
        IToken SWITCH166 = null;
        IToken IDENT167 = null;
        IToken char_literal168 = null;
        IToken DEFAULT170 = null;
        IToken char_literal171 = null;
        IToken char_literal173 = null;
        MathExprParser.exprList_return exprList98 = default(MathExprParser.exprList_return);

        MathExprParser.idar_return idar100 = default(MathExprParser.idar_return);

        MathExprParser.allassign_return allassign101 = default(MathExprParser.allassign_return);

        MathExprParser.term_return term102 = default(MathExprParser.term_return);

        MathExprParser.term_return term104 = default(MathExprParser.term_return);

        MathExprParser.expr_return expr105 = default(MathExprParser.expr_return);

        MathExprParser.expr_return expr107 = default(MathExprParser.expr_return);

        MathExprParser.term_return term109 = default(MathExprParser.term_return);

        MathExprParser.expr_return expr110 = default(MathExprParser.expr_return);

        MathExprParser.term_return term115 = default(MathExprParser.term_return);

        MathExprParser.compare_return compare117 = default(MathExprParser.compare_return);

        MathExprParser.groupExpr_return groupExpr119 = default(MathExprParser.groupExpr_return);

        MathExprParser.expr_return expr120 = default(MathExprParser.expr_return);

        MathExprParser.idar_return idar122 = default(MathExprParser.idar_return);

        MathExprParser.type_return type124 = default(MathExprParser.type_return);

        MathExprParser.returnValue_return returnValue126 = default(MathExprParser.returnValue_return);

        MathExprParser.idar_return idar128 = default(MathExprParser.idar_return);

        MathExprParser.type_return type130 = default(MathExprParser.type_return);

        MathExprParser.returnValue_return returnValue132 = default(MathExprParser.returnValue_return);

        MathExprParser.var_element_return var_element134 = default(MathExprParser.var_element_return);

        MathExprParser.var_element_return var_element136 = default(MathExprParser.var_element_return);

        MathExprParser.term_return term141 = default(MathExprParser.term_return);

        MathExprParser.term_return term143 = default(MathExprParser.term_return);

        MathExprParser.expr_return expr144 = default(MathExprParser.expr_return);

        MathExprParser.idar_return idar148 = default(MathExprParser.idar_return);

        MathExprParser.groupExpr_return groupExpr150 = default(MathExprParser.groupExpr_return);

        MathExprParser.expr_return expr152 = default(MathExprParser.expr_return);

        MathExprParser.term_return term154 = default(MathExprParser.term_return);

        MathExprParser.func_params_return func_params158 = default(MathExprParser.func_params_return);

        MathExprParser.type_return type161 = default(MathExprParser.type_return);

        MathExprParser.expr_return expr162 = default(MathExprParser.expr_return);

        MathExprParser.returnValue_return returnValue164 = default(MathExprParser.returnValue_return);

        MathExprParser.arrayValue_return arrayValue165 = default(MathExprParser.arrayValue_return);

        MathExprParser.swcase_return swcase169 = default(MathExprParser.swcase_return);

        MathExprParser.expr_return expr172 = default(MathExprParser.expr_return);


        AstNode BEGIN97_tree=null;
        AstNode END99_tree=null;
        AstNode IF103_tree=null;
        AstNode ELSE106_tree=null;
        AstNode WHILE108_tree=null;
        AstNode FOR111_tree=null;
        AstNode VAR112_tree=null;
        AstNode IDENT113_tree=null;
        AstNode ASSIGN114_tree=null;
        AstNode char_literal116_tree=null;
        AstNode char_literal118_tree=null;
        AstNode LET121_tree=null;
        AstNode char_literal123_tree=null;
        AstNode ASSIGN125_tree=null;
        AstNode char_literal127_tree=null;
        AstNode char_literal129_tree=null;
        AstNode ASSIGN131_tree=null;
        AstNode VAR133_tree=null;
        AstNode char_literal135_tree=null;
        AstNode FOR137_tree=null;
        AstNode VAR138_tree=null;
        AstNode IDENT139_tree=null;
        AstNode IN140_tree=null;
        AstNode string_literal142_tree=null;
        AstNode PRINT145_tree=null;
        AstNode char_literal146_tree=null;
        AstNode STRINGVAL147_tree=null;
        AstNode char_literal149_tree=null;
        AstNode REPEATE151_tree=null;
        AstNode WHILE153_tree=null;
        AstNode FUNC155_tree=null;
        AstNode IDENT156_tree=null;
        AstNode char_literal157_tree=null;
        AstNode char_literal159_tree=null;
        AstNode string_literal160_tree=null;
        AstNode RETURN163_tree=null;
        AstNode SWITCH166_tree=null;
        AstNode IDENT167_tree=null;
        AstNode char_literal168_tree=null;
        AstNode DEFAULT170_tree=null;
        AstNode char_literal171_tree=null;
        AstNode char_literal173_tree=null;
        RewriteRuleTokenStream stream_77 = new RewriteRuleTokenStream(adaptor,"token 77");
        RewriteRuleTokenStream stream_79 = new RewriteRuleTokenStream(adaptor,"token 79");
        RewriteRuleTokenStream stream_FUNC = new RewriteRuleTokenStream(adaptor,"token FUNC");
        RewriteRuleTokenStream stream_VAR = new RewriteRuleTokenStream(adaptor,"token VAR");
        RewriteRuleTokenStream stream_FOR = new RewriteRuleTokenStream(adaptor,"token FOR");
        RewriteRuleTokenStream stream_BEGIN = new RewriteRuleTokenStream(adaptor,"token BEGIN");
        RewriteRuleTokenStream stream_ASSIGN = new RewriteRuleTokenStream(adaptor,"token ASSIGN");
        RewriteRuleTokenStream stream_REPEATE = new RewriteRuleTokenStream(adaptor,"token REPEATE");
        RewriteRuleTokenStream stream_RETURN = new RewriteRuleTokenStream(adaptor,"token RETURN");
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor,"token IDENT");
        RewriteRuleTokenStream stream_END = new RewriteRuleTokenStream(adaptor,"token END");
        RewriteRuleTokenStream stream_LET = new RewriteRuleTokenStream(adaptor,"token LET");
        RewriteRuleTokenStream stream_WHILE = new RewriteRuleTokenStream(adaptor,"token WHILE");
        RewriteRuleTokenStream stream_SWITCH = new RewriteRuleTokenStream(adaptor,"token SWITCH");
        RewriteRuleTokenStream stream_72 = new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleTokenStream stream_73 = new RewriteRuleTokenStream(adaptor,"token 73");
        RewriteRuleTokenStream stream_74 = new RewriteRuleTokenStream(adaptor,"token 74");
        RewriteRuleTokenStream stream_75 = new RewriteRuleTokenStream(adaptor,"token 75");
        RewriteRuleTokenStream stream_DEFAULT = new RewriteRuleTokenStream(adaptor,"token DEFAULT");
        RewriteRuleSubtreeStream stream_groupExpr = new RewriteRuleSubtreeStream(adaptor,"rule groupExpr");
        RewriteRuleSubtreeStream stream_compare = new RewriteRuleSubtreeStream(adaptor,"rule compare");
        RewriteRuleSubtreeStream stream_returnValue = new RewriteRuleSubtreeStream(adaptor,"rule returnValue");
        RewriteRuleSubtreeStream stream_func_params = new RewriteRuleSubtreeStream(adaptor,"rule func_params");
        RewriteRuleSubtreeStream stream_exprList = new RewriteRuleSubtreeStream(adaptor,"rule exprList");
        RewriteRuleSubtreeStream stream_term = new RewriteRuleSubtreeStream(adaptor,"rule term");
        RewriteRuleSubtreeStream stream_expr = new RewriteRuleSubtreeStream(adaptor,"rule expr");
        RewriteRuleSubtreeStream stream_arrayValue = new RewriteRuleSubtreeStream(adaptor,"rule arrayValue");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_swcase = new RewriteRuleSubtreeStream(adaptor,"rule swcase");
        RewriteRuleSubtreeStream stream_idar = new RewriteRuleSubtreeStream(adaptor,"rule idar");
        RewriteRuleSubtreeStream stream_var_element = new RewriteRuleSubtreeStream(adaptor,"rule var_element");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 24) ) 
    	    {
    	    	return retval; 
    	    }
            // MathExpr.g:188:5: ( BEGIN exprList END -> ^( BLOCK ( exprList )? ) | idar allassign term | IF term expr ( ELSE expr )? | WHILE term expr | FOR ( VAR IDENT ASSIGN term )? ';' ( compare )? ';' ( groupExpr )? expr -> ^( FOR ( ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) ) )? ( compare )? ( groupExpr )? expr ) | LET idar ( ':' type )? ( ASSIGN returnValue )? ( ',' idar ( ':' type )? ( ASSIGN returnValue )? )* -> ^( LET ( ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? ) )* ) | VAR var_element ( ',' var_element )* -> ^( VAR ( var_element )* ) | FOR ( VAR )? IDENT IN term '...' term expr | PRINT '(' ( STRINGVAL | idar ) ')' | groupExpr | REPEATE expr WHILE term -> ^( REPEATE term expr ) | FUNC IDENT '(' ( func_params )? ')' ( '->' type )? expr -> ^( FUNC IDENT ^( FUNC_PARAM ( func_params )? ) ^( TYPE ( type )? ) expr ) | RETURN ( returnValue | arrayValue ) -> ^( RETURN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) | SWITCH IDENT '{' ( swcase )* ( DEFAULT ':' expr )? '}' -> ^( SWITCH IDENT ( swcase )* ( DEFAULT expr )? ) )
            int alt42 = 14;
            alt42 = dfa42.Predict(input);
            switch (alt42) 
            {
                case 1 :
                    // MathExpr.g:189:3: BEGIN exprList END
                    {
                    	BEGIN97=(IToken)Match(input,BEGIN,FOLLOW_BEGIN_in_expr1663); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_BEGIN.Add(BEGIN97);

                    	PushFollow(FOLLOW_exprList_in_expr1665);
                    	exprList98 = exprList();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_exprList.Add(exprList98.Tree);
                    	END99=(IToken)Match(input,END,FOLLOW_END_in_expr1667); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_END.Add(END99);



                    	// AST REWRITE
                    	// elements:          exprList
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 189:22: -> ^( BLOCK ( exprList )? )
                    	{
                    	    // MathExpr.g:189:25: ^( BLOCK ( exprList )? )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(BLOCK, "BLOCK"), root_1);

                    	    // MathExpr.g:189:33: ( exprList )?
                    	    if ( stream_exprList.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_exprList.NextTree());

                    	    }
                    	    stream_exprList.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 2 :
                    // MathExpr.g:190:3: idar allassign term
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_idar_in_expr1680);
                    	idar100 = idar();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, idar100.Tree);
                    	PushFollow(FOLLOW_allassign_in_expr1682);
                    	allassign101 = allassign();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) root_0 = (AstNode)adaptor.BecomeRoot(allassign101.Tree, root_0);
                    	PushFollow(FOLLOW_term_in_expr1685);
                    	term102 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, term102.Tree);

                    }
                    break;
                case 3 :
                    // MathExpr.g:191:3: IF term expr ( ELSE expr )?
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	IF103=(IToken)Match(input,IF,FOLLOW_IF_in_expr1689); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{IF103_tree = (AstNode)adaptor.Create(IF103);
                    		root_0 = (AstNode)adaptor.BecomeRoot(IF103_tree, root_0);
                    	}
                    	PushFollow(FOLLOW_term_in_expr1692);
                    	term104 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, term104.Tree);
                    	PushFollow(FOLLOW_expr_in_expr1694);
                    	expr105 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expr105.Tree);
                    	// MathExpr.g:191:17: ( ELSE expr )?
                    	int alt25 = 2;
                    	int LA25_0 = input.LA(1);

                    	if ( (LA25_0 == ELSE) )
                    	{
                    	    int LA25_1 = input.LA(2);

                    	    if ( (synpred50_MathExpr()) )
                    	    {
                    	        alt25 = 1;
                    	    }
                    	}
                    	switch (alt25) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:191:18: ELSE expr
                    	        {
                    	        	ELSE106=(IToken)Match(input,ELSE,FOLLOW_ELSE_in_expr1697); if (state.failed) return retval;
                    	        	PushFollow(FOLLOW_expr_in_expr1700);
                    	        	expr107 = expr();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expr107.Tree);

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 4 :
                    // MathExpr.g:192:3: WHILE term expr
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	WHILE108=(IToken)Match(input,WHILE,FOLLOW_WHILE_in_expr1706); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{WHILE108_tree = (AstNode)adaptor.Create(WHILE108);
                    		root_0 = (AstNode)adaptor.BecomeRoot(WHILE108_tree, root_0);
                    	}
                    	PushFollow(FOLLOW_term_in_expr1709);
                    	term109 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, term109.Tree);
                    	PushFollow(FOLLOW_expr_in_expr1712);
                    	expr110 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expr110.Tree);

                    }
                    break;
                case 5 :
                    // MathExpr.g:193:3: FOR ( VAR IDENT ASSIGN term )? ';' ( compare )? ';' ( groupExpr )? expr
                    {
                    	FOR111=(IToken)Match(input,FOR,FOLLOW_FOR_in_expr1716); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_FOR.Add(FOR111);

                    	// MathExpr.g:193:7: ( VAR IDENT ASSIGN term )?
                    	int alt26 = 2;
                    	int LA26_0 = input.LA(1);

                    	if ( (LA26_0 == VAR) )
                    	{
                    	    alt26 = 1;
                    	}
                    	switch (alt26) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:193:8: VAR IDENT ASSIGN term
                    	        {
                    	        	VAR112=(IToken)Match(input,VAR,FOLLOW_VAR_in_expr1719); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_VAR.Add(VAR112);

                    	        	IDENT113=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_expr1721); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_IDENT.Add(IDENT113);

                    	        	ASSIGN114=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_expr1723); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_ASSIGN.Add(ASSIGN114);

                    	        	PushFollow(FOLLOW_term_in_expr1725);
                    	        	term115 = term();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_term.Add(term115.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal116=(IToken)Match(input,77,FOLLOW_77_in_expr1730); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_77.Add(char_literal116);

                    	// MathExpr.g:193:37: ( compare )?
                    	int alt27 = 2;
                    	int LA27_0 = input.LA(1);

                    	if ( (LA27_0 == NOT || (LA27_0 >= TRUE && LA27_0 <= FALSE) || (LA27_0 >= NUMBER && LA27_0 <= IDENT) || (LA27_0 >= INCR && LA27_0 <= DECR) || LA27_0 == 74) )
                    	{
                    	    alt27 = 1;
                    	}
                    	switch (alt27) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:0:0: compare
                    	        {
                    	        	PushFollow(FOLLOW_compare_in_expr1732);
                    	        	compare117 = compare();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_compare.Add(compare117.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal118=(IToken)Match(input,77,FOLLOW_77_in_expr1735); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_77.Add(char_literal118);

                    	// MathExpr.g:193:50: ( groupExpr )?
                    	int alt28 = 2;
                    	alt28 = dfa28.Predict(input);
                    	switch (alt28) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:193:52: groupExpr
                    	        {
                    	        	PushFollow(FOLLOW_groupExpr_in_expr1739);
                    	        	groupExpr119 = groupExpr();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_groupExpr.Add(groupExpr119.Tree);

                    	        }
                    	        break;

                    	}

                    	PushFollow(FOLLOW_expr_in_expr1743);
                    	expr120 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_expr.Add(expr120.Tree);


                    	// AST REWRITE
                    	// elements:          term, FOR, IDENT, groupExpr, ASSIGN, VAR, compare, expr
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 193:69: -> ^( FOR ( ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) ) )? ( compare )? ( groupExpr )? expr )
                    	{
                    	    // MathExpr.g:193:72: ^( FOR ( ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) ) )? ( compare )? ( groupExpr )? expr )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_FOR.NextNode(), root_1);

                    	    // MathExpr.g:193:78: ( ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) ) )?
                    	    if ( stream_term.HasNext() || stream_IDENT.HasNext() || stream_ASSIGN.HasNext() || stream_VAR.HasNext() )
                    	    {
                    	        // MathExpr.g:193:78: ^( VAR ^( IDENT TYPE ^( ASSIGN term ) ) )
                    	        {
                    	        AstNode root_2 = (AstNode)adaptor.GetNilNode();
                    	        root_2 = (AstNode)adaptor.BecomeRoot(stream_VAR.NextNode(), root_2);

                    	        // MathExpr.g:193:84: ^( IDENT TYPE ^( ASSIGN term ) )
                    	        {
                    	        AstNode root_3 = (AstNode)adaptor.GetNilNode();
                    	        root_3 = (AstNode)adaptor.BecomeRoot(stream_IDENT.NextNode(), root_3);

                    	        adaptor.AddChild(root_3, (AstNode)adaptor.Create(TYPE, "TYPE"));
                    	        // MathExpr.g:193:97: ^( ASSIGN term )
                    	        {
                    	        AstNode root_4 = (AstNode)adaptor.GetNilNode();
                    	        root_4 = (AstNode)adaptor.BecomeRoot(stream_ASSIGN.NextNode(), root_4);

                    	        adaptor.AddChild(root_4, stream_term.NextTree());

                    	        adaptor.AddChild(root_3, root_4);
                    	        }

                    	        adaptor.AddChild(root_2, root_3);
                    	        }

                    	        adaptor.AddChild(root_1, root_2);
                    	        }

                    	    }
                    	    stream_term.Reset();
                    	    stream_IDENT.Reset();
                    	    stream_ASSIGN.Reset();
                    	    stream_VAR.Reset();
                    	    // MathExpr.g:193:115: ( compare )?
                    	    if ( stream_compare.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_compare.NextTree());

                    	    }
                    	    stream_compare.Reset();
                    	    // MathExpr.g:193:124: ( groupExpr )?
                    	    if ( stream_groupExpr.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_groupExpr.NextTree());

                    	    }
                    	    stream_groupExpr.Reset();
                    	    adaptor.AddChild(root_1, stream_expr.NextTree());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 6 :
                    // MathExpr.g:194:3: LET idar ( ':' type )? ( ASSIGN returnValue )? ( ',' idar ( ':' type )? ( ASSIGN returnValue )? )*
                    {
                    	LET121=(IToken)Match(input,LET,FOLLOW_LET_in_expr1778); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_LET.Add(LET121);

                    	PushFollow(FOLLOW_idar_in_expr1780);
                    	idar122 = idar();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_idar.Add(idar122.Tree);
                    	// MathExpr.g:194:12: ( ':' type )?
                    	int alt29 = 2;
                    	int LA29_0 = input.LA(1);

                    	if ( (LA29_0 == 73) )
                    	{
                    	    alt29 = 1;
                    	}
                    	switch (alt29) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:194:13: ':' type
                    	        {
                    	        	char_literal123=(IToken)Match(input,73,FOLLOW_73_in_expr1783); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_73.Add(char_literal123);

                    	        	PushFollow(FOLLOW_type_in_expr1785);
                    	        	type124 = type();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_type.Add(type124.Tree);

                    	        }
                    	        break;

                    	}

                    	// MathExpr.g:194:24: ( ASSIGN returnValue )?
                    	int alt30 = 2;
                    	int LA30_0 = input.LA(1);

                    	if ( (LA30_0 == ASSIGN) )
                    	{
                    	    alt30 = 1;
                    	}
                    	switch (alt30) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:194:25: ASSIGN returnValue
                    	        {
                    	        	ASSIGN125=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_expr1790); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_ASSIGN.Add(ASSIGN125);

                    	        	PushFollow(FOLLOW_returnValue_in_expr1792);
                    	        	returnValue126 = returnValue();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_returnValue.Add(returnValue126.Tree);

                    	        }
                    	        break;

                    	}

                    	// MathExpr.g:194:46: ( ',' idar ( ':' type )? ( ASSIGN returnValue )? )*
                    	do 
                    	{
                    	    int alt33 = 2;
                    	    int LA33_0 = input.LA(1);

                    	    if ( (LA33_0 == 72) )
                    	    {
                    	        alt33 = 1;
                    	    }


                    	    switch (alt33) 
                    		{
                    			case 1 :
                    			    // MathExpr.g:194:47: ',' idar ( ':' type )? ( ASSIGN returnValue )?
                    			    {
                    			    	char_literal127=(IToken)Match(input,72,FOLLOW_72_in_expr1797); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_72.Add(char_literal127);

                    			    	PushFollow(FOLLOW_idar_in_expr1799);
                    			    	idar128 = idar();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return retval;
                    			    	if ( (state.backtracking==0) ) stream_idar.Add(idar128.Tree);
                    			    	// MathExpr.g:194:56: ( ':' type )?
                    			    	int alt31 = 2;
                    			    	int LA31_0 = input.LA(1);

                    			    	if ( (LA31_0 == 73) )
                    			    	{
                    			    	    alt31 = 1;
                    			    	}
                    			    	switch (alt31) 
                    			    	{
                    			    	    case 1 :
                    			    	        // MathExpr.g:194:57: ':' type
                    			    	        {
                    			    	        	char_literal129=(IToken)Match(input,73,FOLLOW_73_in_expr1802); if (state.failed) return retval; 
                    			    	        	if ( (state.backtracking==0) ) stream_73.Add(char_literal129);

                    			    	        	PushFollow(FOLLOW_type_in_expr1804);
                    			    	        	type130 = type();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;
                    			    	        	if ( (state.backtracking==0) ) stream_type.Add(type130.Tree);

                    			    	        }
                    			    	        break;

                    			    	}

                    			    	// MathExpr.g:194:68: ( ASSIGN returnValue )?
                    			    	int alt32 = 2;
                    			    	int LA32_0 = input.LA(1);

                    			    	if ( (LA32_0 == ASSIGN) )
                    			    	{
                    			    	    alt32 = 1;
                    			    	}
                    			    	switch (alt32) 
                    			    	{
                    			    	    case 1 :
                    			    	        // MathExpr.g:194:69: ASSIGN returnValue
                    			    	        {
                    			    	        	ASSIGN131=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_expr1809); if (state.failed) return retval; 
                    			    	        	if ( (state.backtracking==0) ) stream_ASSIGN.Add(ASSIGN131);

                    			    	        	PushFollow(FOLLOW_returnValue_in_expr1811);
                    			    	        	returnValue132 = returnValue();
                    			    	        	state.followingStackPointer--;
                    			    	        	if (state.failed) return retval;
                    			    	        	if ( (state.backtracking==0) ) stream_returnValue.Add(returnValue132.Tree);

                    			    	        }
                    			    	        break;

                    			    	}


                    			    }
                    			    break;

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

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



                    	// AST REWRITE
                    	// elements:          idar, LET, returnValue, type, ASSIGN
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 194:93: -> ^( LET ( ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? ) )* )
                    	{
                    	    // MathExpr.g:194:96: ^( LET ( ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? ) )* )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_LET.NextNode(), root_1);

                    	    // MathExpr.g:194:102: ( ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? ) )*
                    	    while ( stream_idar.HasNext() )
                    	    {
                    	        // MathExpr.g:194:102: ^( idar ^( TYPE ( type )? ) ( ^( ASSIGN returnValue ) )? )
                    	        {
                    	        AstNode root_2 = (AstNode)adaptor.GetNilNode();
                    	        root_2 = (AstNode)adaptor.BecomeRoot(stream_idar.NextNode(), root_2);

                    	        // MathExpr.g:194:109: ^( TYPE ( type )? )
                    	        {
                    	        AstNode root_3 = (AstNode)adaptor.GetNilNode();
                    	        root_3 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(TYPE, "TYPE"), root_3);

                    	        // MathExpr.g:194:116: ( type )?
                    	        if ( stream_type.HasNext() )
                    	        {
                    	            adaptor.AddChild(root_3, stream_type.NextTree());

                    	        }
                    	        stream_type.Reset();

                    	        adaptor.AddChild(root_2, root_3);
                    	        }
                    	        // MathExpr.g:194:123: ( ^( ASSIGN returnValue ) )?
                    	        if ( stream_returnValue.HasNext() || stream_ASSIGN.HasNext() )
                    	        {
                    	            // MathExpr.g:194:123: ^( ASSIGN returnValue )
                    	            {
                    	            AstNode root_3 = (AstNode)adaptor.GetNilNode();
                    	            root_3 = (AstNode)adaptor.BecomeRoot(stream_ASSIGN.NextNode(), root_3);

                    	            adaptor.AddChild(root_3, stream_returnValue.NextTree());

                    	            adaptor.AddChild(root_2, root_3);
                    	            }

                    	        }
                    	        stream_returnValue.Reset();
                    	        stream_ASSIGN.Reset();

                    	        adaptor.AddChild(root_1, root_2);
                    	        }

                    	    }
                    	    stream_idar.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 7 :
                    // MathExpr.g:195:3: VAR var_element ( ',' var_element )*
                    {
                    	VAR133=(IToken)Match(input,VAR,FOLLOW_VAR_in_expr1846); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_VAR.Add(VAR133);

                    	PushFollow(FOLLOW_var_element_in_expr1848);
                    	var_element134 = var_element();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_var_element.Add(var_element134.Tree);
                    	// MathExpr.g:195:19: ( ',' var_element )*
                    	do 
                    	{
                    	    int alt34 = 2;
                    	    int LA34_0 = input.LA(1);

                    	    if ( (LA34_0 == 72) )
                    	    {
                    	        alt34 = 1;
                    	    }


                    	    switch (alt34) 
                    		{
                    			case 1 :
                    			    // MathExpr.g:195:20: ',' var_element
                    			    {
                    			    	char_literal135=(IToken)Match(input,72,FOLLOW_72_in_expr1851); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_72.Add(char_literal135);

                    			    	PushFollow(FOLLOW_var_element_in_expr1853);
                    			    	var_element136 = var_element();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return retval;
                    			    	if ( (state.backtracking==0) ) stream_var_element.Add(var_element136.Tree);

                    			    }
                    			    break;

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

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



                    	// AST REWRITE
                    	// elements:          VAR, var_element
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 195:38: -> ^( VAR ( var_element )* )
                    	{
                    	    // MathExpr.g:195:41: ^( VAR ( var_element )* )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_VAR.NextNode(), root_1);

                    	    // MathExpr.g:195:47: ( var_element )*
                    	    while ( stream_var_element.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_var_element.NextTree());

                    	    }
                    	    stream_var_element.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 8 :
                    // MathExpr.g:196:3: FOR ( VAR )? IDENT IN term '...' term expr
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	FOR137=(IToken)Match(input,FOR,FOLLOW_FOR_in_expr1868); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{FOR137_tree = (AstNode)adaptor.Create(FOR137);
                    		root_0 = (AstNode)adaptor.BecomeRoot(FOR137_tree, root_0);
                    	}
                    	// MathExpr.g:196:11: ( VAR )?
                    	int alt35 = 2;
                    	int LA35_0 = input.LA(1);

                    	if ( (LA35_0 == VAR) )
                    	{
                    	    alt35 = 1;
                    	}
                    	switch (alt35) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:0:0: VAR
                    	        {
                    	        	VAR138=(IToken)Match(input,VAR,FOLLOW_VAR_in_expr1871); if (state.failed) return retval;

                    	        }
                    	        break;

                    	}

                    	IDENT139=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_expr1875); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{IDENT139_tree = (AstNode)adaptor.Create(IDENT139);
                    		adaptor.AddChild(root_0, IDENT139_tree);
                    	}
                    	IN140=(IToken)Match(input,IN,FOLLOW_IN_in_expr1877); if (state.failed) return retval;
                    	PushFollow(FOLLOW_term_in_expr1880);
                    	term141 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, term141.Tree);
                    	string_literal142=(IToken)Match(input,78,FOLLOW_78_in_expr1882); if (state.failed) return retval;
                    	PushFollow(FOLLOW_term_in_expr1885);
                    	term143 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, term143.Tree);
                    	PushFollow(FOLLOW_expr_in_expr1887);
                    	expr144 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expr144.Tree);

                    }
                    break;
                case 9 :
                    // MathExpr.g:197:3: PRINT '(' ( STRINGVAL | idar ) ')'
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	PRINT145=(IToken)Match(input,PRINT,FOLLOW_PRINT_in_expr1891); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{PRINT145_tree = (AstNode)adaptor.Create(PRINT145);
                    		root_0 = (AstNode)adaptor.BecomeRoot(PRINT145_tree, root_0);
                    	}
                    	char_literal146=(IToken)Match(input,74,FOLLOW_74_in_expr1894); if (state.failed) return retval;
                    	// MathExpr.g:197:15: ( STRINGVAL | idar )
                    	int alt36 = 2;
                    	int LA36_0 = input.LA(1);

                    	if ( (LA36_0 == STRINGVAL) )
                    	{
                    	    alt36 = 1;
                    	}
                    	else if ( (LA36_0 == IDENT) )
                    	{
                    	    alt36 = 2;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	    NoViableAltException nvae_d36s0 =
                    	        new NoViableAltException("", 36, 0, input);

                    	    throw nvae_d36s0;
                    	}
                    	switch (alt36) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:197:17: STRINGVAL
                    	        {
                    	        	STRINGVAL147=(IToken)Match(input,STRINGVAL,FOLLOW_STRINGVAL_in_expr1899); if (state.failed) return retval;
                    	        	if ( state.backtracking == 0 )
                    	        	{STRINGVAL147_tree = (AstNode)adaptor.Create(STRINGVAL147);
                    	        		adaptor.AddChild(root_0, STRINGVAL147_tree);
                    	        	}

                    	        }
                    	        break;
                    	    case 2 :
                    	        // MathExpr.g:197:29: idar
                    	        {
                    	        	PushFollow(FOLLOW_idar_in_expr1903);
                    	        	idar148 = idar();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, idar148.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal149=(IToken)Match(input,75,FOLLOW_75_in_expr1907); if (state.failed) return retval;

                    }
                    break;
                case 10 :
                    // MathExpr.g:198:3: groupExpr
                    {
                    	root_0 = (AstNode)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_groupExpr_in_expr1912);
                    	groupExpr150 = groupExpr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, groupExpr150.Tree);

                    }
                    break;
                case 11 :
                    // MathExpr.g:199:3: REPEATE expr WHILE term
                    {
                    	REPEATE151=(IToken)Match(input,REPEATE,FOLLOW_REPEATE_in_expr1916); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_REPEATE.Add(REPEATE151);

                    	PushFollow(FOLLOW_expr_in_expr1918);
                    	expr152 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_expr.Add(expr152.Tree);
                    	WHILE153=(IToken)Match(input,WHILE,FOLLOW_WHILE_in_expr1920); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_WHILE.Add(WHILE153);

                    	PushFollow(FOLLOW_term_in_expr1922);
                    	term154 = term();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_term.Add(term154.Tree);


                    	// AST REWRITE
                    	// elements:          expr, REPEATE, term
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 199:27: -> ^( REPEATE term expr )
                    	{
                    	    // MathExpr.g:199:30: ^( REPEATE term expr )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_REPEATE.NextNode(), root_1);

                    	    adaptor.AddChild(root_1, stream_term.NextTree());
                    	    adaptor.AddChild(root_1, stream_expr.NextTree());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 12 :
                    // MathExpr.g:200:3: FUNC IDENT '(' ( func_params )? ')' ( '->' type )? expr
                    {
                    	FUNC155=(IToken)Match(input,FUNC,FOLLOW_FUNC_in_expr1936); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_FUNC.Add(FUNC155);

                    	IDENT156=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_expr1938); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_IDENT.Add(IDENT156);

                    	char_literal157=(IToken)Match(input,74,FOLLOW_74_in_expr1940); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_74.Add(char_literal157);

                    	// MathExpr.g:200:18: ( func_params )?
                    	int alt37 = 2;
                    	int LA37_0 = input.LA(1);

                    	if ( (LA37_0 == IDENT) )
                    	{
                    	    alt37 = 1;
                    	}
                    	switch (alt37) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:0:0: func_params
                    	        {
                    	        	PushFollow(FOLLOW_func_params_in_expr1942);
                    	        	func_params158 = func_params();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_func_params.Add(func_params158.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal159=(IToken)Match(input,75,FOLLOW_75_in_expr1945); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_75.Add(char_literal159);

                    	// MathExpr.g:200:35: ( '->' type )?
                    	int alt38 = 2;
                    	int LA38_0 = input.LA(1);

                    	if ( (LA38_0 == 79) )
                    	{
                    	    alt38 = 1;
                    	}
                    	switch (alt38) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:200:36: '->' type
                    	        {
                    	        	string_literal160=(IToken)Match(input,79,FOLLOW_79_in_expr1948); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_79.Add(string_literal160);

                    	        	PushFollow(FOLLOW_type_in_expr1950);
                    	        	type161 = type();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_type.Add(type161.Tree);

                    	        }
                    	        break;

                    	}

                    	PushFollow(FOLLOW_expr_in_expr1954);
                    	expr162 = expr();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_expr.Add(expr162.Tree);


                    	// AST REWRITE
                    	// elements:          func_params, IDENT, type, FUNC, expr
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 200:53: -> ^( FUNC IDENT ^( FUNC_PARAM ( func_params )? ) ^( TYPE ( type )? ) expr )
                    	{
                    	    // MathExpr.g:200:56: ^( FUNC IDENT ^( FUNC_PARAM ( func_params )? ) ^( TYPE ( type )? ) expr )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_FUNC.NextNode(), root_1);

                    	    adaptor.AddChild(root_1, stream_IDENT.NextNode());
                    	    // MathExpr.g:200:69: ^( FUNC_PARAM ( func_params )? )
                    	    {
                    	    AstNode root_2 = (AstNode)adaptor.GetNilNode();
                    	    root_2 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(FUNC_PARAM, "FUNC_PARAM"), root_2);

                    	    // MathExpr.g:200:83: ( func_params )?
                    	    if ( stream_func_params.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_2, stream_func_params.NextTree());

                    	    }
                    	    stream_func_params.Reset();

                    	    adaptor.AddChild(root_1, root_2);
                    	    }
                    	    // MathExpr.g:200:97: ^( TYPE ( type )? )
                    	    {
                    	    AstNode root_2 = (AstNode)adaptor.GetNilNode();
                    	    root_2 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(TYPE, "TYPE"), root_2);

                    	    // MathExpr.g:200:104: ( type )?
                    	    if ( stream_type.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_2, stream_type.NextTree());

                    	    }
                    	    stream_type.Reset();

                    	    adaptor.AddChild(root_1, root_2);
                    	    }
                    	    adaptor.AddChild(root_1, stream_expr.NextTree());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 13 :
                    // MathExpr.g:201:3: RETURN ( returnValue | arrayValue )
                    {
                    	RETURN163=(IToken)Match(input,RETURN,FOLLOW_RETURN_in_expr1983); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_RETURN.Add(RETURN163);

                    	// MathExpr.g:201:10: ( returnValue | arrayValue )
                    	int alt39 = 2;
                    	int LA39_0 = input.LA(1);

                    	if ( (LA39_0 == NOT || (LA39_0 >= TRUE && LA39_0 <= FALSE) || (LA39_0 >= NUMBER && LA39_0 <= IDENT) || (LA39_0 >= INCR && LA39_0 <= DECR) || LA39_0 == 74) )
                    	{
                    	    alt39 = 1;
                    	}
                    	else if ( (LA39_0 == 70) )
                    	{
                    	    alt39 = 2;
                    	}
                    	else 
                    	{
                    	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                    	    NoViableAltException nvae_d39s0 =
                    	        new NoViableAltException("", 39, 0, input);

                    	    throw nvae_d39s0;
                    	}
                    	switch (alt39) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:201:11: returnValue
                    	        {
                    	        	PushFollow(FOLLOW_returnValue_in_expr1986);
                    	        	returnValue164 = returnValue();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_returnValue.Add(returnValue164.Tree);

                    	        }
                    	        break;
                    	    case 2 :
                    	        // MathExpr.g:201:26: arrayValue
                    	        {
                    	        	PushFollow(FOLLOW_arrayValue_in_expr1991);
                    	        	arrayValue165 = arrayValue();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_arrayValue.Add(arrayValue165.Tree);

                    	        }
                    	        break;

                    	}



                    	// AST REWRITE
                    	// elements:          returnValue, arrayValue, RETURN
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 201:38: -> ^( RETURN ( returnValue )? ( ^( ARRAY arrayValue ) )? )
                    	{
                    	    // MathExpr.g:201:41: ^( RETURN ( returnValue )? ( ^( ARRAY arrayValue ) )? )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_RETURN.NextNode(), root_1);

                    	    // MathExpr.g:201:50: ( returnValue )?
                    	    if ( stream_returnValue.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_returnValue.NextTree());

                    	    }
                    	    stream_returnValue.Reset();
                    	    // MathExpr.g:201:63: ( ^( ARRAY arrayValue ) )?
                    	    if ( stream_arrayValue.HasNext() )
                    	    {
                    	        // MathExpr.g:201:63: ^( ARRAY arrayValue )
                    	        {
                    	        AstNode root_2 = (AstNode)adaptor.GetNilNode();
                    	        root_2 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(ARRAY, "ARRAY"), root_2);

                    	        adaptor.AddChild(root_2, stream_arrayValue.NextTree());

                    	        adaptor.AddChild(root_1, root_2);
                    	        }

                    	    }
                    	    stream_arrayValue.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 14 :
                    // MathExpr.g:202:3: SWITCH IDENT '{' ( swcase )* ( DEFAULT ':' expr )? '}'
                    {
                    	SWITCH166=(IToken)Match(input,SWITCH,FOLLOW_SWITCH_in_expr2012); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_SWITCH.Add(SWITCH166);

                    	IDENT167=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_expr2014); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_IDENT.Add(IDENT167);

                    	char_literal168=(IToken)Match(input,BEGIN,FOLLOW_BEGIN_in_expr2016); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_BEGIN.Add(char_literal168);

                    	// MathExpr.g:202:20: ( swcase )*
                    	do 
                    	{
                    	    int alt40 = 2;
                    	    int LA40_0 = input.LA(1);

                    	    if ( (LA40_0 == CASE) )
                    	    {
                    	        alt40 = 1;
                    	    }


                    	    switch (alt40) 
                    		{
                    			case 1 :
                    			    // MathExpr.g:202:21: swcase
                    			    {
                    			    	PushFollow(FOLLOW_swcase_in_expr2019);
                    			    	swcase169 = swcase();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return retval;
                    			    	if ( (state.backtracking==0) ) stream_swcase.Add(swcase169.Tree);

                    			    }
                    			    break;

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

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

                    	// MathExpr.g:202:30: ( DEFAULT ':' expr )?
                    	int alt41 = 2;
                    	int LA41_0 = input.LA(1);

                    	if ( (LA41_0 == DEFAULT) )
                    	{
                    	    alt41 = 1;
                    	}
                    	switch (alt41) 
                    	{
                    	    case 1 :
                    	        // MathExpr.g:202:31: DEFAULT ':' expr
                    	        {
                    	        	DEFAULT170=(IToken)Match(input,DEFAULT,FOLLOW_DEFAULT_in_expr2024); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_DEFAULT.Add(DEFAULT170);

                    	        	char_literal171=(IToken)Match(input,73,FOLLOW_73_in_expr2026); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_73.Add(char_literal171);

                    	        	PushFollow(FOLLOW_expr_in_expr2028);
                    	        	expr172 = expr();
                    	        	state.followingStackPointer--;
                    	        	if (state.failed) return retval;
                    	        	if ( (state.backtracking==0) ) stream_expr.Add(expr172.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal173=(IToken)Match(input,END,FOLLOW_END_in_expr2032); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_END.Add(char_literal173);



                    	// AST REWRITE
                    	// elements:          expr, SWITCH, swcase, DEFAULT, IDENT
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (AstNode)adaptor.GetNilNode();
                    	// 202:54: -> ^( SWITCH IDENT ( swcase )* ( DEFAULT expr )? )
                    	{
                    	    // MathExpr.g:202:57: ^( SWITCH IDENT ( swcase )* ( DEFAULT expr )? )
                    	    {
                    	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
                    	    root_1 = (AstNode)adaptor.BecomeRoot(stream_SWITCH.NextNode(), root_1);

                    	    adaptor.AddChild(root_1, stream_IDENT.NextNode());
                    	    // MathExpr.g:202:73: ( swcase )*
                    	    while ( stream_swcase.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_swcase.NextTree());

                    	    }
                    	    stream_swcase.Reset();
                    	    // MathExpr.g:202:83: ( DEFAULT expr )?
                    	    if ( stream_expr.HasNext() || stream_DEFAULT.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_DEFAULT.NextNode());
                    	        adaptor.AddChild(root_1, stream_expr.NextTree());

                    	    }
                    	    stream_expr.Reset();
                    	    stream_DEFAULT.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

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

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

            if ( (state.backtracking==0) )
            {	retval.Tree = (AstNode)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 = (AstNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 24, expr_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 13
0
    // $ANTLR start "var_element"
    // MathExpr.g:148:1: var_element : idar ( ':' type ( '(count' ':' add ')' ) )? ( ASSIGN ( returnValue | arrayValue ) )? -> ^( idar ( ^( TYPE type add ) )? ( ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) )? ) ;
    public MathExprParser.var_element_return var_element() // throws RecognitionException [1]
    {   
        MathExprParser.var_element_return retval = new MathExprParser.var_element_return();
        retval.Start = input.LT(1);
        int var_element_StartIndex = input.Index();
        AstNode root_0 = null;

        IToken char_literal59 = null;
        IToken string_literal61 = null;
        IToken char_literal62 = null;
        IToken char_literal64 = null;
        IToken ASSIGN65 = null;
        MathExprParser.idar_return idar58 = default(MathExprParser.idar_return);

        MathExprParser.type_return type60 = default(MathExprParser.type_return);

        MathExprParser.add_return add63 = default(MathExprParser.add_return);

        MathExprParser.returnValue_return returnValue66 = default(MathExprParser.returnValue_return);

        MathExprParser.arrayValue_return arrayValue67 = default(MathExprParser.arrayValue_return);


        AstNode char_literal59_tree=null;
        AstNode string_literal61_tree=null;
        AstNode char_literal62_tree=null;
        AstNode char_literal64_tree=null;
        AstNode ASSIGN65_tree=null;
        RewriteRuleTokenStream stream_73 = new RewriteRuleTokenStream(adaptor,"token 73");
        RewriteRuleTokenStream stream_ASSIGN = new RewriteRuleTokenStream(adaptor,"token ASSIGN");
        RewriteRuleTokenStream stream_75 = new RewriteRuleTokenStream(adaptor,"token 75");
        RewriteRuleTokenStream stream_76 = new RewriteRuleTokenStream(adaptor,"token 76");
        RewriteRuleSubtreeStream stream_add = new RewriteRuleSubtreeStream(adaptor,"rule add");
        RewriteRuleSubtreeStream stream_returnValue = new RewriteRuleSubtreeStream(adaptor,"rule returnValue");
        RewriteRuleSubtreeStream stream_arrayValue = new RewriteRuleSubtreeStream(adaptor,"rule arrayValue");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        RewriteRuleSubtreeStream stream_idar = new RewriteRuleSubtreeStream(adaptor,"rule idar");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 13) ) 
    	    {
    	    	return retval; 
    	    }
            // MathExpr.g:148:12: ( idar ( ':' type ( '(count' ':' add ')' ) )? ( ASSIGN ( returnValue | arrayValue ) )? -> ^( idar ( ^( TYPE type add ) )? ( ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) )? ) )
            // MathExpr.g:148:14: idar ( ':' type ( '(count' ':' add ')' ) )? ( ASSIGN ( returnValue | arrayValue ) )?
            {
            	PushFollow(FOLLOW_idar_in_var_element1384);
            	idar58 = idar();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_idar.Add(idar58.Tree);
            	// MathExpr.g:148:19: ( ':' type ( '(count' ':' add ')' ) )?
            	int alt13 = 2;
            	int LA13_0 = input.LA(1);

            	if ( (LA13_0 == 73) )
            	{
            	    alt13 = 1;
            	}
            	switch (alt13) 
            	{
            	    case 1 :
            	        // MathExpr.g:148:20: ':' type ( '(count' ':' add ')' )
            	        {
            	        	char_literal59=(IToken)Match(input,73,FOLLOW_73_in_var_element1387); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_73.Add(char_literal59);

            	        	PushFollow(FOLLOW_type_in_var_element1389);
            	        	type60 = type();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( (state.backtracking==0) ) stream_type.Add(type60.Tree);
            	        	// MathExpr.g:148:29: ( '(count' ':' add ')' )
            	        	// MathExpr.g:148:30: '(count' ':' add ')'
            	        	{
            	        		string_literal61=(IToken)Match(input,76,FOLLOW_76_in_var_element1392); if (state.failed) return retval; 
            	        		if ( (state.backtracking==0) ) stream_76.Add(string_literal61);

            	        		char_literal62=(IToken)Match(input,73,FOLLOW_73_in_var_element1394); if (state.failed) return retval; 
            	        		if ( (state.backtracking==0) ) stream_73.Add(char_literal62);

            	        		PushFollow(FOLLOW_add_in_var_element1396);
            	        		add63 = add();
            	        		state.followingStackPointer--;
            	        		if (state.failed) return retval;
            	        		if ( (state.backtracking==0) ) stream_add.Add(add63.Tree);
            	        		char_literal64=(IToken)Match(input,75,FOLLOW_75_in_var_element1398); if (state.failed) return retval; 
            	        		if ( (state.backtracking==0) ) stream_75.Add(char_literal64);


            	        	}


            	        }
            	        break;

            	}

            	// MathExpr.g:148:56: ( ASSIGN ( returnValue | arrayValue ) )?
            	int alt15 = 2;
            	int LA15_0 = input.LA(1);

            	if ( (LA15_0 == ASSIGN) )
            	{
            	    alt15 = 1;
            	}
            	switch (alt15) 
            	{
            	    case 1 :
            	        // MathExpr.g:148:57: ASSIGN ( returnValue | arrayValue )
            	        {
            	        	ASSIGN65=(IToken)Match(input,ASSIGN,FOLLOW_ASSIGN_in_var_element1406); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ASSIGN.Add(ASSIGN65);

            	        	// MathExpr.g:148:64: ( returnValue | arrayValue )
            	        	int alt14 = 2;
            	        	int LA14_0 = input.LA(1);

            	        	if ( (LA14_0 == NOT || (LA14_0 >= TRUE && LA14_0 <= FALSE) || (LA14_0 >= NUMBER && LA14_0 <= IDENT) || (LA14_0 >= INCR && LA14_0 <= DECR) || LA14_0 == 74) )
            	        	{
            	        	    alt14 = 1;
            	        	}
            	        	else if ( (LA14_0 == 70) )
            	        	{
            	        	    alt14 = 2;
            	        	}
            	        	else 
            	        	{
            	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	        	    NoViableAltException nvae_d14s0 =
            	        	        new NoViableAltException("", 14, 0, input);

            	        	    throw nvae_d14s0;
            	        	}
            	        	switch (alt14) 
            	        	{
            	        	    case 1 :
            	        	        // MathExpr.g:148:66: returnValue
            	        	        {
            	        	        	PushFollow(FOLLOW_returnValue_in_var_element1410);
            	        	        	returnValue66 = returnValue();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return retval;
            	        	        	if ( (state.backtracking==0) ) stream_returnValue.Add(returnValue66.Tree);

            	        	        }
            	        	        break;
            	        	    case 2 :
            	        	        // MathExpr.g:148:80: arrayValue
            	        	        {
            	        	        	PushFollow(FOLLOW_arrayValue_in_var_element1414);
            	        	        	arrayValue67 = arrayValue();
            	        	        	state.followingStackPointer--;
            	        	        	if (state.failed) return retval;
            	        	        	if ( (state.backtracking==0) ) stream_arrayValue.Add(arrayValue67.Tree);

            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          returnValue, arrayValue, ASSIGN, type, add, idar
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (AstNode)adaptor.GetNilNode();
            	// 148:94: -> ^( idar ( ^( TYPE type add ) )? ( ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) )? )
            	{
            	    // MathExpr.g:148:97: ^( idar ( ^( TYPE type add ) )? ( ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) )? )
            	    {
            	    AstNode root_1 = (AstNode)adaptor.GetNilNode();
            	    root_1 = (AstNode)adaptor.BecomeRoot(stream_idar.NextNode(), root_1);

            	    // MathExpr.g:148:104: ( ^( TYPE type add ) )?
            	    if ( stream_type.HasNext() || stream_add.HasNext() )
            	    {
            	        // MathExpr.g:148:104: ^( TYPE type add )
            	        {
            	        AstNode root_2 = (AstNode)adaptor.GetNilNode();
            	        root_2 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(TYPE, "TYPE"), root_2);

            	        adaptor.AddChild(root_2, stream_type.NextTree());
            	        adaptor.AddChild(root_2, stream_add.NextTree());

            	        adaptor.AddChild(root_1, root_2);
            	        }

            	    }
            	    stream_type.Reset();
            	    stream_add.Reset();
            	    // MathExpr.g:148:122: ( ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? ) )?
            	    if ( stream_returnValue.HasNext() || stream_arrayValue.HasNext() || stream_ASSIGN.HasNext() )
            	    {
            	        // MathExpr.g:148:122: ^( ASSIGN ( returnValue )? ( ^( ARRAY arrayValue ) )? )
            	        {
            	        AstNode root_2 = (AstNode)adaptor.GetNilNode();
            	        root_2 = (AstNode)adaptor.BecomeRoot(stream_ASSIGN.NextNode(), root_2);

            	        // MathExpr.g:148:131: ( returnValue )?
            	        if ( stream_returnValue.HasNext() )
            	        {
            	            adaptor.AddChild(root_2, stream_returnValue.NextTree());

            	        }
            	        stream_returnValue.Reset();
            	        // MathExpr.g:148:144: ( ^( ARRAY arrayValue ) )?
            	        if ( stream_arrayValue.HasNext() )
            	        {
            	            // MathExpr.g:148:144: ^( ARRAY arrayValue )
            	            {
            	            AstNode root_3 = (AstNode)adaptor.GetNilNode();
            	            root_3 = (AstNode)adaptor.BecomeRoot((AstNode)adaptor.Create(ARRAY, "ARRAY"), root_3);

            	            adaptor.AddChild(root_3, stream_arrayValue.NextTree());

            	            adaptor.AddChild(root_2, root_3);
            	            }

            	        }
            	        stream_arrayValue.Reset();

            	        adaptor.AddChild(root_1, root_2);
            	        }

            	    }
            	    stream_returnValue.Reset();
            	    stream_arrayValue.Reset();
            	    stream_ASSIGN.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	retval.Tree = (AstNode)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 = (AstNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 13, var_element_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 14
0
    // $ANTLR start "func_params"
    // MathExpr.g:140:1: func_params : IDENT ':' type ( ',' IDENT ':' type )* -> ( ^( IDENT type ) )* ;
    public MathExprParser.func_params_return func_params() // throws RecognitionException [1]
    {   
        MathExprParser.func_params_return retval = new MathExprParser.func_params_return();
        retval.Start = input.LT(1);
        int func_params_StartIndex = input.Index();
        AstNode root_0 = null;

        IToken IDENT47 = null;
        IToken char_literal48 = null;
        IToken char_literal50 = null;
        IToken IDENT51 = null;
        IToken char_literal52 = null;
        MathExprParser.type_return type49 = default(MathExprParser.type_return);

        MathExprParser.type_return type53 = default(MathExprParser.type_return);


        AstNode IDENT47_tree=null;
        AstNode char_literal48_tree=null;
        AstNode char_literal50_tree=null;
        AstNode IDENT51_tree=null;
        AstNode char_literal52_tree=null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor,"token IDENT");
        RewriteRuleTokenStream stream_72 = new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleTokenStream stream_73 = new RewriteRuleTokenStream(adaptor,"token 73");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 11) ) 
    	    {
    	    	return retval; 
    	    }
            // MathExpr.g:140:12: ( IDENT ':' type ( ',' IDENT ':' type )* -> ( ^( IDENT type ) )* )
            // MathExpr.g:141:1: IDENT ':' type ( ',' IDENT ':' type )*
            {
            	IDENT47=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_func_params1326); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_IDENT.Add(IDENT47);

            	char_literal48=(IToken)Match(input,73,FOLLOW_73_in_func_params1328); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_73.Add(char_literal48);

            	PushFollow(FOLLOW_type_in_func_params1330);
            	type49 = type();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_type.Add(type49.Tree);
            	// MathExpr.g:141:16: ( ',' IDENT ':' type )*
            	do 
            	{
            	    int alt11 = 2;
            	    int LA11_0 = input.LA(1);

            	    if ( (LA11_0 == 72) )
            	    {
            	        alt11 = 1;
            	    }


            	    switch (alt11) 
            		{
            			case 1 :
            			    // MathExpr.g:141:17: ',' IDENT ':' type
            			    {
            			    	char_literal50=(IToken)Match(input,72,FOLLOW_72_in_func_params1333); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_72.Add(char_literal50);

            			    	IDENT51=(IToken)Match(input,IDENT,FOLLOW_IDENT_in_func_params1335); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_IDENT.Add(IDENT51);

            			    	char_literal52=(IToken)Match(input,73,FOLLOW_73_in_func_params1337); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_73.Add(char_literal52);

            			    	PushFollow(FOLLOW_type_in_func_params1339);
            			    	type53 = type();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return retval;
            			    	if ( (state.backtracking==0) ) stream_type.Add(type53.Tree);

            			    }
            			    break;

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

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



            	// AST REWRITE
            	// elements:          type, IDENT
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (AstNode)adaptor.GetNilNode();
            	// 141:38: -> ( ^( IDENT type ) )*
            	{
            	    // MathExpr.g:141:41: ( ^( IDENT type ) )*
            	    while ( stream_type.HasNext() || stream_IDENT.HasNext() )
            	    {
            	        // MathExpr.g:141:41: ^( IDENT type )
            	        {
            	        AstNode root_1 = (AstNode)adaptor.GetNilNode();
            	        root_1 = (AstNode)adaptor.BecomeRoot(stream_IDENT.NextNode(), root_1);

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

            	        adaptor.AddChild(root_0, root_1);
            	        }

            	    }
            	    stream_type.Reset();
            	    stream_IDENT.Reset();

            	}

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

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

            if ( (state.backtracking==0) )
            {	retval.Tree = (AstNode)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 = (AstNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 11, func_params_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 15
0
    // $ANTLR start "block"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:692:1: block : ( EMBEDDED )? BLOCK a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDBLOCK | ENDTABLE ) -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel ) ;
    public BlaiseParser.block_return block() // throws RecognitionException [1]
    {   
        BlaiseParser.block_return retval = new BlaiseParser.block_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken b = null;
        IToken EMBEDDED82 = null;
        IToken BLOCK83 = null;
        IToken ENDBLOCK86 = null;
        IToken ENDTABLE87 = null;
        BlaiseParser.block_settings_return block_settings84 = default(BlaiseParser.block_settings_return);

        BlaiseParser.submodel_return submodel85 = default(BlaiseParser.submodel_return);


        object a_tree=null;
        object b_tree=null;
        object EMBEDDED82_tree=null;
        object BLOCK83_tree=null;
        object ENDBLOCK86_tree=null;
        object ENDTABLE87_tree=null;
        RewriteRuleTokenStream stream_EMBEDDED = new RewriteRuleTokenStream(adaptor,"token EMBEDDED");
        RewriteRuleTokenStream stream_QSTRING = new RewriteRuleTokenStream(adaptor,"token QSTRING");
        RewriteRuleTokenStream stream_ENDTABLE = new RewriteRuleTokenStream(adaptor,"token ENDTABLE");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_ENDBLOCK = new RewriteRuleTokenStream(adaptor,"token ENDBLOCK");
        RewriteRuleTokenStream stream_BLOCK = new RewriteRuleTokenStream(adaptor,"token BLOCK");
        RewriteRuleSubtreeStream stream_submodel = new RewriteRuleSubtreeStream(adaptor,"rule submodel");
        RewriteRuleSubtreeStream stream_block_settings = new RewriteRuleSubtreeStream(adaptor,"rule block_settings");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:692:7: ( ( EMBEDDED )? BLOCK a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDBLOCK | ENDTABLE ) -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:692:9: ( EMBEDDED )? BLOCK a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDBLOCK | ENDTABLE )
            {
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:692:9: ( EMBEDDED )?
            	int alt27 = 2;
            	int LA27_0 = input.LA(1);

            	if ( (LA27_0 == EMBEDDED) )
            	{
            	    alt27 = 1;
            	}
            	switch (alt27) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: EMBEDDED
            	        {
            	        	EMBEDDED82=(IToken)Match(input,EMBEDDED,FOLLOW_EMBEDDED_in_block4265); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_EMBEDDED.Add(EMBEDDED82);


            	        }
            	        break;

            	}

            	BLOCK83=(IToken)Match(input,BLOCK,FOLLOW_BLOCK_in_block4268); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_BLOCK.Add(BLOCK83);

            	a=(IToken)Match(input,ID,FOLLOW_ID_in_block4272); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_ID.Add(a);

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:692:31: (b= QSTRING )?
            	int alt28 = 2;
            	int LA28_0 = input.LA(1);

            	if ( (LA28_0 == QSTRING) )
            	{
            	    alt28 = 1;
            	}
            	switch (alt28) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: b= QSTRING
            	        {
            	        	b=(IToken)Match(input,QSTRING,FOLLOW_QSTRING_in_block4276); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_QSTRING.Add(b);


            	        }
            	        break;

            	}

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:693:4: ( block_settings )?
            	int alt29 = 2;
            	int LA29_0 = input.LA(1);

            	if ( (LA29_0 == SETTINGS) )
            	{
            	    alt29 = 1;
            	}
            	switch (alt29) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: block_settings
            	        {
            	        	PushFollow(FOLLOW_block_settings_in_block4282);
            	        	block_settings84 = block_settings();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( (state.backtracking==0) ) stream_block_settings.Add(block_settings84.Tree);

            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_submodel_in_block4288);
            	submodel85 = submodel();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_submodel.Add(submodel85.Tree);
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:3: ( ENDBLOCK | ENDTABLE )
            	int alt30 = 2;
            	int LA30_0 = input.LA(1);

            	if ( (LA30_0 == ENDBLOCK) )
            	{
            	    alt30 = 1;
            	}
            	else if ( (LA30_0 == ENDTABLE) )
            	{
            	    alt30 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d30s0 =
            	        new NoViableAltException("", 30, 0, input);

            	    throw nvae_d30s0;
            	}
            	switch (alt30) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:4: ENDBLOCK
            	        {
            	        	ENDBLOCK86=(IToken)Match(input,ENDBLOCK,FOLLOW_ENDBLOCK_in_block4293); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ENDBLOCK.Add(ENDBLOCK86);


            	        }
            	        break;
            	    case 2 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:15: ENDTABLE
            	        {
            	        	ENDTABLE87=(IToken)Match(input,ENDTABLE,FOLLOW_ENDTABLE_in_block4297); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ENDTABLE.Add(ENDTABLE87);


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          a, BLOCK, b, submodel
            	// token labels:      b, a
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 695:25: -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:28: ^( BLOCK ^( LABEL $a ( $b)? ) submodel )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot(stream_BLOCK.NextNode(), root_1);

            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:36: ^( LABEL $a ( $b)? )
            	    {
            	    object root_2 = (object)adaptor.GetNilNode();
            	    root_2 = (object)adaptor.BecomeRoot((object)adaptor.Create(LABEL, "LABEL"), root_2);

            	    adaptor.AddChild(root_2, stream_a.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:695:47: ( $b)?
            	    if ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_2, stream_b.NextNode());

            	    }
            	    stream_b.Reset();

            	    adaptor.AddChild(root_1, root_2);
            	    }
            	    adaptor.AddChild(root_1, stream_submodel.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 16
0
    // $ANTLR start "formalParameterList"
    // Elf.g:501:1: formalParameterList : LPAREN (args+= Identifier ( COMMA args+= Identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
    public ElfParser.formalParameterList_return formalParameterList() // throws RecognitionException [1]
    {   
        ElfParser.formalParameterList_return retval = new ElfParser.formalParameterList_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken LPAREN88 = null;
        IToken COMMA89 = null;
        IToken RPAREN90 = null;
        IToken args = null;
        IList list_args = null;

        object LPAREN88_tree=null;
        object COMMA89_tree=null;
        object RPAREN90_tree=null;
        object args_tree=null;
        RewriteRuleTokenStream stream_RPAREN = new RewriteRuleTokenStream(adaptor,"token RPAREN");
        RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleTokenStream stream_LPAREN = new RewriteRuleTokenStream(adaptor,"token LPAREN");

        try 
    	{
            // Elf.g:502:2: ( LPAREN (args+= Identifier ( COMMA args+= Identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
            // Elf.g:502:4: LPAREN (args+= Identifier ( COMMA args+= Identifier )* )? RPAREN
            {
            	LPAREN88=(IToken)Match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList1978);  
            	stream_LPAREN.Add(LPAREN88);

            	// Elf.g:502:11: (args+= Identifier ( COMMA args+= Identifier )* )?
            	int alt24 = 2;
            	int LA24_0 = input.LA(1);

            	if ( (LA24_0 == Identifier) )
            	{
            	    alt24 = 1;
            	}
            	switch (alt24) 
            	{
            	    case 1 :
            	        // Elf.g:502:13: args+= Identifier ( COMMA args+= Identifier )*
            	        {
            	        	args=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_formalParameterList1984);  
            	        	stream_Identifier.Add(args);

            	        	if (list_args == null) list_args = new ArrayList();
            	        	list_args.Add(args);

            	        	// Elf.g:502:30: ( COMMA args+= Identifier )*
            	        	do 
            	        	{
            	        	    int alt23 = 2;
            	        	    int LA23_0 = input.LA(1);

            	        	    if ( (LA23_0 == COMMA) )
            	        	    {
            	        	        alt23 = 1;
            	        	    }


            	        	    switch (alt23) 
            	        		{
            	        			case 1 :
            	        			    // Elf.g:502:32: COMMA args+= Identifier
            	        			    {
            	        			    	COMMA89=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_formalParameterList1988);  
            	        			    	stream_COMMA.Add(COMMA89);

            	        			    	args=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_formalParameterList1992);  
            	        			    	stream_Identifier.Add(args);

            	        			    	if (list_args == null) list_args = new ArrayList();
            	        			    	list_args.Add(args);


            	        			    }
            	        			    break;

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

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


            	        }
            	        break;

            	}

            	RPAREN90=(IToken)Match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList2000);  
            	stream_RPAREN.Add(RPAREN90);



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

            	root_0 = (object)adaptor.GetNilNode();
            	// 503:2: -> ^( ARGS ( $args)* )
            	{
            	    // Elf.g:503:5: ^( ARGS ( $args)* )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(ARGS, "ARGS"), root_1);

            	    // Elf.g:503:13: ( $args)*
            	    while ( stream_args.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_args.NextNode());

            	    }
            	    stream_args.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

            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;
    }
Ejemplo n.º 17
0
    // $ANTLR start "table"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:697:1: table : ( EMBEDDED )? TABLE a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDTABLE | ENDBLOCK ) -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel ) ;
    public BlaiseParser.table_return table() // throws RecognitionException [1]
    {   
        BlaiseParser.table_return retval = new BlaiseParser.table_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken b = null;
        IToken EMBEDDED88 = null;
        IToken TABLE89 = null;
        IToken ENDTABLE92 = null;
        IToken ENDBLOCK93 = null;
        BlaiseParser.block_settings_return block_settings90 = default(BlaiseParser.block_settings_return);

        BlaiseParser.submodel_return submodel91 = default(BlaiseParser.submodel_return);


        object a_tree=null;
        object b_tree=null;
        object EMBEDDED88_tree=null;
        object TABLE89_tree=null;
        object ENDTABLE92_tree=null;
        object ENDBLOCK93_tree=null;
        RewriteRuleTokenStream stream_TABLE = new RewriteRuleTokenStream(adaptor,"token TABLE");
        RewriteRuleTokenStream stream_EMBEDDED = new RewriteRuleTokenStream(adaptor,"token EMBEDDED");
        RewriteRuleTokenStream stream_QSTRING = new RewriteRuleTokenStream(adaptor,"token QSTRING");
        RewriteRuleTokenStream stream_ENDTABLE = new RewriteRuleTokenStream(adaptor,"token ENDTABLE");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_ENDBLOCK = new RewriteRuleTokenStream(adaptor,"token ENDBLOCK");
        RewriteRuleSubtreeStream stream_submodel = new RewriteRuleSubtreeStream(adaptor,"rule submodel");
        RewriteRuleSubtreeStream stream_block_settings = new RewriteRuleSubtreeStream(adaptor,"rule block_settings");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:697:7: ( ( EMBEDDED )? TABLE a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDTABLE | ENDBLOCK ) -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:697:9: ( EMBEDDED )? TABLE a= ID (b= QSTRING )? ( block_settings )? submodel ( ENDTABLE | ENDBLOCK )
            {
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:697:9: ( EMBEDDED )?
            	int alt31 = 2;
            	int LA31_0 = input.LA(1);

            	if ( (LA31_0 == EMBEDDED) )
            	{
            	    alt31 = 1;
            	}
            	switch (alt31) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: EMBEDDED
            	        {
            	        	EMBEDDED88=(IToken)Match(input,EMBEDDED,FOLLOW_EMBEDDED_in_table4325); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_EMBEDDED.Add(EMBEDDED88);


            	        }
            	        break;

            	}

            	TABLE89=(IToken)Match(input,TABLE,FOLLOW_TABLE_in_table4328); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_TABLE.Add(TABLE89);

            	a=(IToken)Match(input,ID,FOLLOW_ID_in_table4332); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_ID.Add(a);

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:697:31: (b= QSTRING )?
            	int alt32 = 2;
            	int LA32_0 = input.LA(1);

            	if ( (LA32_0 == QSTRING) )
            	{
            	    alt32 = 1;
            	}
            	switch (alt32) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: b= QSTRING
            	        {
            	        	b=(IToken)Match(input,QSTRING,FOLLOW_QSTRING_in_table4336); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_QSTRING.Add(b);


            	        }
            	        break;

            	}

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:698:4: ( block_settings )?
            	int alt33 = 2;
            	int LA33_0 = input.LA(1);

            	if ( (LA33_0 == SETTINGS) )
            	{
            	    alt33 = 1;
            	}
            	switch (alt33) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: block_settings
            	        {
            	        	PushFollow(FOLLOW_block_settings_in_table4342);
            	        	block_settings90 = block_settings();
            	        	state.followingStackPointer--;
            	        	if (state.failed) return retval;
            	        	if ( (state.backtracking==0) ) stream_block_settings.Add(block_settings90.Tree);

            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_submodel_in_table4348);
            	submodel91 = submodel();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_submodel.Add(submodel91.Tree);
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:3: ( ENDTABLE | ENDBLOCK )
            	int alt34 = 2;
            	int LA34_0 = input.LA(1);

            	if ( (LA34_0 == ENDTABLE) )
            	{
            	    alt34 = 1;
            	}
            	else if ( (LA34_0 == ENDBLOCK) )
            	{
            	    alt34 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d34s0 =
            	        new NoViableAltException("", 34, 0, input);

            	    throw nvae_d34s0;
            	}
            	switch (alt34) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:4: ENDTABLE
            	        {
            	        	ENDTABLE92=(IToken)Match(input,ENDTABLE,FOLLOW_ENDTABLE_in_table4353); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ENDTABLE.Add(ENDTABLE92);


            	        }
            	        break;
            	    case 2 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:15: ENDBLOCK
            	        {
            	        	ENDBLOCK93=(IToken)Match(input,ENDBLOCK,FOLLOW_ENDBLOCK_in_table4357); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ENDBLOCK.Add(ENDBLOCK93);


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          a, submodel, b
            	// token labels:      b, a
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 700:25: -> ^( BLOCK ^( LABEL $a ( $b)? ) submodel )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:28: ^( BLOCK ^( LABEL $a ( $b)? ) submodel )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(BLOCK, "BLOCK"), root_1);

            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:36: ^( LABEL $a ( $b)? )
            	    {
            	    object root_2 = (object)adaptor.GetNilNode();
            	    root_2 = (object)adaptor.BecomeRoot((object)adaptor.Create(LABEL, "LABEL"), root_2);

            	    adaptor.AddChild(root_2, stream_a.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:700:47: ( $b)?
            	    if ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_2, stream_b.NextNode());

            	    }
            	    stream_b.Reset();

            	    adaptor.AddChild(root_1, root_2);
            	    }
            	    adaptor.AddChild(root_1, stream_submodel.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 18
0
    // $ANTLR start "parameter_item"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1076:1: parameter_item : (a= ( IMPORT | EXPORT | TRANSIT ) )? b= id_list COLON c= typedef -> ^( PARAMETER_ITEM ( $a)? $b $c) ;
    public BlaiseParser.parameter_item_return parameter_item() // throws RecognitionException [1]
    {   
        BlaiseParser.parameter_item_return retval = new BlaiseParser.parameter_item_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken IMPORT321 = null;
        IToken EXPORT322 = null;
        IToken TRANSIT323 = null;
        IToken COLON324 = null;
        BlaiseParser.id_list_return b = default(BlaiseParser.id_list_return);

        BlaiseParser.typedef_return c = default(BlaiseParser.typedef_return);


        object a_tree=null;
        object IMPORT321_tree=null;
        object EXPORT322_tree=null;
        object TRANSIT323_tree=null;
        object COLON324_tree=null;
        RewriteRuleTokenStream stream_COLON = new RewriteRuleTokenStream(adaptor,"token COLON");
        RewriteRuleTokenStream stream_TRANSIT = new RewriteRuleTokenStream(adaptor,"token TRANSIT");
        RewriteRuleTokenStream stream_IMPORT = new RewriteRuleTokenStream(adaptor,"token IMPORT");
        RewriteRuleTokenStream stream_EXPORT = new RewriteRuleTokenStream(adaptor,"token EXPORT");
        RewriteRuleSubtreeStream stream_typedef = new RewriteRuleSubtreeStream(adaptor,"rule typedef");
        RewriteRuleSubtreeStream stream_id_list = new RewriteRuleSubtreeStream(adaptor,"rule id_list");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:2: ( (a= ( IMPORT | EXPORT | TRANSIT ) )? b= id_list COLON c= typedef -> ^( PARAMETER_ITEM ( $a)? $b $c) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:4: (a= ( IMPORT | EXPORT | TRANSIT ) )? b= id_list COLON c= typedef
            {
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:5: (a= ( IMPORT | EXPORT | TRANSIT ) )?
            	int alt101 = 2;
            	int LA101_0 = input.LA(1);

            	if ( ((LA101_0 >= IMPORT && LA101_0 <= TRANSIT)) )
            	{
            	    alt101 = 1;
            	}
            	switch (alt101) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: a= ( IMPORT | EXPORT | TRANSIT )
            	        {
            	        	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:6: ( IMPORT | EXPORT | TRANSIT )
            	        	int alt100 = 3;
            	        	switch ( input.LA(1) ) 
            	        	{
            	        	case IMPORT:
            	        		{
            	        	    alt100 = 1;
            	        	    }
            	        	    break;
            	        	case EXPORT:
            	        		{
            	        	    alt100 = 2;
            	        	    }
            	        	    break;
            	        	case TRANSIT:
            	        		{
            	        	    alt100 = 3;
            	        	    }
            	        	    break;
            	        		default:
            	        		    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	        		    NoViableAltException nvae_d100s0 =
            	        		        new NoViableAltException("", 100, 0, input);

            	        		    throw nvae_d100s0;
            	        	}

            	        	switch (alt100) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:7: IMPORT
            	        	        {
            	        	        	IMPORT321=(IToken)Match(input,IMPORT,FOLLOW_IMPORT_in_parameter_item6545); if (state.failed) return retval; 
            	        	        	if ( (state.backtracking==0) ) stream_IMPORT.Add(IMPORT321);


            	        	        }
            	        	        break;
            	        	    case 2 :
            	        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:15: EXPORT
            	        	        {
            	        	        	EXPORT322=(IToken)Match(input,EXPORT,FOLLOW_EXPORT_in_parameter_item6548); if (state.failed) return retval; 
            	        	        	if ( (state.backtracking==0) ) stream_EXPORT.Add(EXPORT322);


            	        	        }
            	        	        break;
            	        	    case 3 :
            	        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:24: TRANSIT
            	        	        {
            	        	        	TRANSIT323=(IToken)Match(input,TRANSIT,FOLLOW_TRANSIT_in_parameter_item6552); if (state.failed) return retval; 
            	        	        	if ( (state.backtracking==0) ) stream_TRANSIT.Add(TRANSIT323);


            	        	        }
            	        	        break;

            	        	}


            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_id_list_in_parameter_item6558);
            	b = id_list();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_id_list.Add(b.Tree);
            	COLON324=(IToken)Match(input,COLON,FOLLOW_COLON_in_parameter_item6561); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_COLON.Add(COLON324);

            	PushFollow(FOLLOW_typedef_in_parameter_item6565);
            	c = typedef();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_typedef.Add(c.Tree);


            	// AST REWRITE
            	// elements:          c, b, a
            	// token labels:      a
            	// rule labels:       retval, b, c
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);
            	RewriteRuleSubtreeStream stream_b = new RewriteRuleSubtreeStream(adaptor, "rule b", b!=null ? b.Tree : null);
            	RewriteRuleSubtreeStream stream_c = new RewriteRuleSubtreeStream(adaptor, "rule c", c!=null ? c.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 1077:61: -> ^( PARAMETER_ITEM ( $a)? $b $c)
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:64: ^( PARAMETER_ITEM ( $a)? $b $c)
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(PARAMETER_ITEM, "PARAMETER_ITEM"), root_1);

            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1077:81: ( $a)?
            	    if ( stream_a.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_a.NextNode());

            	    }
            	    stream_a.Reset();
            	    adaptor.AddChild(root_1, stream_b.NextTree());
            	    adaptor.AddChild(root_1, stream_c.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 19
0
    // $ANTLR start "arrayType"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:156:1: arrayType : '[' ( ',' )* ']' -> ^( DIMMARKER '[' ( ',' )* ']' ) ;
    public PsimulexParser.arrayType_return arrayType() // throws RecognitionException [1]
    {   
        PsimulexParser.arrayType_return retval = new PsimulexParser.arrayType_return();
        retval.Start = input.LT(1);
        int arrayType_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken char_literal27 = null;
        IToken char_literal28 = null;
        IToken char_literal29 = null;

        CommonTree char_literal27_tree=null;
        CommonTree char_literal28_tree=null;
        CommonTree char_literal29_tree=null;
        RewriteRuleTokenStream stream_146 = new RewriteRuleTokenStream(adaptor,"token 146");
        RewriteRuleTokenStream stream_147 = new RewriteRuleTokenStream(adaptor,"token 147");
        RewriteRuleTokenStream stream_148 = new RewriteRuleTokenStream(adaptor,"token 148");

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 10) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:2: ( '[' ( ',' )* ']' -> ^( DIMMARKER '[' ( ',' )* ']' ) )
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:4: '[' ( ',' )* ']'
            {
            	char_literal27=(IToken)Match(input,146,FOLLOW_146_in_arrayType688); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_146.Add(char_literal27);

            	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:8: ( ',' )*
            	do 
            	{
            	    int alt8 = 2;
            	    int LA8_0 = input.LA(1);

            	    if ( (LA8_0 == 147) )
            	    {
            	        alt8 = 1;
            	    }


            	    switch (alt8) 
            		{
            			case 1 :
            			    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:10: ','
            			    {
            			    	char_literal28=(IToken)Match(input,147,FOLLOW_147_in_arrayType692); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_147.Add(char_literal28);


            			    }
            			    break;

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

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

            	char_literal29=(IToken)Match(input,148,FOLLOW_148_in_arrayType697); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_148.Add(char_literal29);



            	// AST REWRITE
            	// elements:          147, 148, 146
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 157:21: -> ^( DIMMARKER '[' ( ',' )* ']' )
            	{
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:24: ^( DIMMARKER '[' ( ',' )* ']' )
            	    {
            	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(DIMMARKER, "DIMMARKER"), root_1);

            	    adaptor.AddChild(root_1, stream_146.NextNode());
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:157:41: ( ',' )*
            	    while ( stream_147.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_147.NextNode());

            	    }
            	    stream_147.Reset();
            	    adaptor.AddChild(root_1, stream_148.NextNode());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 10, arrayType_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 20
0
    // $ANTLR start "lid_string"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1100:1: lid_string : ( ID )? QSTRING -> ^( LID_STRING QSTRING ( ID )? ) ;
    public BlaiseParser.lid_string_return lid_string() // throws RecognitionException [1]
    {   
        BlaiseParser.lid_string_return retval = new BlaiseParser.lid_string_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken ID337 = null;
        IToken QSTRING338 = null;

        object ID337_tree=null;
        object QSTRING338_tree=null;
        RewriteRuleTokenStream stream_QSTRING = new RewriteRuleTokenStream(adaptor,"token QSTRING");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");

        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1101:2: ( ( ID )? QSTRING -> ^( LID_STRING QSTRING ( ID )? ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1101:4: ( ID )? QSTRING
            {
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1101:4: ( ID )?
            	int alt107 = 2;
            	int LA107_0 = input.LA(1);

            	if ( (LA107_0 == ID) )
            	{
            	    alt107 = 1;
            	}
            	switch (alt107) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: ID
            	        {
            	        	ID337=(IToken)Match(input,ID,FOLLOW_ID_in_lid_string6703); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ID.Add(ID337);


            	        }
            	        break;

            	}

            	QSTRING338=(IToken)Match(input,QSTRING,FOLLOW_QSTRING_in_lid_string6706); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_QSTRING.Add(QSTRING338);



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

            	root_0 = (object)adaptor.GetNilNode();
            	// 1101:16: -> ^( LID_STRING QSTRING ( ID )? )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1101:19: ^( LID_STRING QSTRING ( ID )? )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(LID_STRING, "LID_STRING"), root_1);

            	    adaptor.AddChild(root_1, stream_QSTRING.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1101:40: ( ID )?
            	    if ( stream_ID.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_ID.NextNode());

            	    }
            	    stream_ID.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 21
0
    // $ANTLR start "formalParameter"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:185:1: formalParameter : type ( Reference )? Identifier -> ^( FORMAL_PARAMETER type ( Reference )? Identifier ) ;
    public PsimulexParser.formalParameter_return formalParameter() // throws RecognitionException [1]
    {   
        PsimulexParser.formalParameter_return retval = new PsimulexParser.formalParameter_return();
        retval.Start = input.LT(1);
        int formalParameter_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken Reference42 = null;
        IToken Identifier43 = null;
        PsimulexParser.type_return type41 = default(PsimulexParser.type_return);


        CommonTree Reference42_tree=null;
        CommonTree Identifier43_tree=null;
        RewriteRuleTokenStream stream_Reference = new RewriteRuleTokenStream(adaptor,"token Reference");
        RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor,"token Identifier");
        RewriteRuleSubtreeStream stream_type = new RewriteRuleSubtreeStream(adaptor,"rule type");
        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 14) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:186:5: ( type ( Reference )? Identifier -> ^( FORMAL_PARAMETER type ( Reference )? Identifier ) )
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:186:9: type ( Reference )? Identifier
            {
            	PushFollow(FOLLOW_type_in_formalParameter871);
            	type41 = type();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_type.Add(type41.Tree);
            	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:186:14: ( Reference )?
            	int alt13 = 2;
            	int LA13_0 = input.LA(1);

            	if ( (LA13_0 == Reference) )
            	{
            	    alt13 = 1;
            	}
            	switch (alt13) 
            	{
            	    case 1 :
            	        // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:0:0: Reference
            	        {
            	        	Reference42=(IToken)Match(input,Reference,FOLLOW_Reference_in_formalParameter873); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_Reference.Add(Reference42);


            	        }
            	        break;

            	}

            	Identifier43=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_formalParameter876); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_Identifier.Add(Identifier43);



            	// AST REWRITE
            	// elements:          Identifier, Reference, type
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 186:36: -> ^( FORMAL_PARAMETER type ( Reference )? Identifier )
            	{
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:186:39: ^( FORMAL_PARAMETER type ( Reference )? Identifier )
            	    {
            	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(FORMAL_PARAMETER, "FORMAL_PARAMETER"), root_1);

            	    adaptor.AddChild(root_1, stream_type.NextTree());
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:186:64: ( Reference )?
            	    if ( stream_Reference.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_Reference.NextNode());

            	    }
            	    stream_Reference.Reset();
            	    adaptor.AddChild(root_1, stream_Identifier.NextNode());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 14, formalParameter_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 22
0
    // $ANTLR start "datamodel"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:601:1: datamodel : DATAMODEL a= ID (b= QSTRING )? ( model_settings )* submodel ( ENDMODEL | END ) -> ^( DATA_MODEL ^( LABEL $a ( $b)? ) ^( MS_SETTINGS ( model_settings )* ) submodel ) ;
    public BlaiseParser.datamodel_return datamodel() // throws RecognitionException [1]
    {   
        BlaiseParser.datamodel_return retval = new BlaiseParser.datamodel_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken b = null;
        IToken DATAMODEL9 = null;
        IToken ENDMODEL12 = null;
        IToken END13 = null;
        BlaiseParser.model_settings_return model_settings10 = default(BlaiseParser.model_settings_return);

        BlaiseParser.submodel_return submodel11 = default(BlaiseParser.submodel_return);


        object a_tree=null;
        object b_tree=null;
        object DATAMODEL9_tree=null;
        object ENDMODEL12_tree=null;
        object END13_tree=null;
        RewriteRuleTokenStream stream_QSTRING = new RewriteRuleTokenStream(adaptor,"token QSTRING");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_END = new RewriteRuleTokenStream(adaptor,"token END");
        RewriteRuleTokenStream stream_ENDMODEL = new RewriteRuleTokenStream(adaptor,"token ENDMODEL");
        RewriteRuleTokenStream stream_DATAMODEL = new RewriteRuleTokenStream(adaptor,"token DATAMODEL");
        RewriteRuleSubtreeStream stream_submodel = new RewriteRuleSubtreeStream(adaptor,"rule submodel");
        RewriteRuleSubtreeStream stream_model_settings = new RewriteRuleSubtreeStream(adaptor,"rule model_settings");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:602:2: ( DATAMODEL a= ID (b= QSTRING )? ( model_settings )* submodel ( ENDMODEL | END ) -> ^( DATA_MODEL ^( LABEL $a ( $b)? ) ^( MS_SETTINGS ( model_settings )* ) submodel ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:602:4: DATAMODEL a= ID (b= QSTRING )? ( model_settings )* submodel ( ENDMODEL | END )
            {
            	DATAMODEL9=(IToken)Match(input,DATAMODEL,FOLLOW_DATAMODEL_in_datamodel3591); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_DATAMODEL.Add(DATAMODEL9);

            	a=(IToken)Match(input,ID,FOLLOW_ID_in_datamodel3595); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_ID.Add(a);

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:602:20: (b= QSTRING )?
            	int alt6 = 2;
            	int LA6_0 = input.LA(1);

            	if ( (LA6_0 == QSTRING) )
            	{
            	    alt6 = 1;
            	}
            	switch (alt6) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: b= QSTRING
            	        {
            	        	b=(IToken)Match(input,QSTRING,FOLLOW_QSTRING_in_datamodel3599); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_QSTRING.Add(b);


            	        }
            	        break;

            	}

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:603:2: ( model_settings )*
            	do 
            	{
            	    int alt7 = 2;
            	    int LA7_0 = input.LA(1);

            	    if ( (LA7_0 == INCLUDE_FILE || LA7_0 == INHERIT || (LA7_0 >= PRIMARY && LA7_0 <= SECONDARY) || LA7_0 == PARALLEL) )
            	    {
            	        alt7 = 1;
            	    }


            	    switch (alt7) 
            		{
            			case 1 :
            			    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: model_settings
            			    {
            			    	PushFollow(FOLLOW_model_settings_in_datamodel3603);
            			    	model_settings10 = model_settings();
            			    	state.followingStackPointer--;
            			    	if (state.failed) return retval;
            			    	if ( (state.backtracking==0) ) stream_model_settings.Add(model_settings10.Tree);

            			    }
            			    break;

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

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

            	PushFollow(FOLLOW_submodel_in_datamodel3613);
            	submodel11 = submodel();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_submodel.Add(submodel11.Tree);
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:606:2: ( ENDMODEL | END )
            	int alt8 = 2;
            	int LA8_0 = input.LA(1);

            	if ( (LA8_0 == ENDMODEL) )
            	{
            	    alt8 = 1;
            	}
            	else if ( (LA8_0 == END) )
            	{
            	    alt8 = 2;
            	}
            	else 
            	{
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d8s0 =
            	        new NoViableAltException("", 8, 0, input);

            	    throw nvae_d8s0;
            	}
            	switch (alt8) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:606:3: ENDMODEL
            	        {
            	        	ENDMODEL12=(IToken)Match(input,ENDMODEL,FOLLOW_ENDMODEL_in_datamodel3618); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ENDMODEL.Add(ENDMODEL12);


            	        }
            	        break;
            	    case 2 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:606:14: END
            	        {
            	        	END13=(IToken)Match(input,END,FOLLOW_END_in_datamodel3622); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_END.Add(END13);


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          a, submodel, model_settings, b
            	// token labels:      b, a
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 607:2: -> ^( DATA_MODEL ^( LABEL $a ( $b)? ) ^( MS_SETTINGS ( model_settings )* ) submodel )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:607:5: ^( DATA_MODEL ^( LABEL $a ( $b)? ) ^( MS_SETTINGS ( model_settings )* ) submodel )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(DATA_MODEL, "DATA_MODEL"), root_1);

            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:607:18: ^( LABEL $a ( $b)? )
            	    {
            	    object root_2 = (object)adaptor.GetNilNode();
            	    root_2 = (object)adaptor.BecomeRoot((object)adaptor.Create(LABEL, "LABEL"), root_2);

            	    adaptor.AddChild(root_2, stream_a.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:607:29: ( $b)?
            	    if ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_2, stream_b.NextNode());

            	    }
            	    stream_b.Reset();

            	    adaptor.AddChild(root_1, root_2);
            	    }
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:607:34: ^( MS_SETTINGS ( model_settings )* )
            	    {
            	    object root_2 = (object)adaptor.GetNilNode();
            	    root_2 = (object)adaptor.BecomeRoot((object)adaptor.Create(MS_SETTINGS, "MS_SETTINGS"), root_2);

            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:607:48: ( model_settings )*
            	    while ( stream_model_settings.HasNext() )
            	    {
            	        adaptor.AddChild(root_2, stream_model_settings.NextTree());

            	    }
            	    stream_model_settings.Reset();

            	    adaptor.AddChild(root_1, root_2);
            	    }
            	    adaptor.AddChild(root_1, stream_submodel.NextTree());

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 23
0
    // $ANTLR start "importDeclarations"
    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:128:1: importDeclarations : ( Import StringLiteral ';' )* -> ^( IMPORT_DECLARATIONS ( StringLiteral )* ) ;
    public PsimulexParser.importDeclarations_return importDeclarations() // throws RecognitionException [1]
    {   
        PsimulexParser.importDeclarations_return retval = new PsimulexParser.importDeclarations_return();
        retval.Start = input.LT(1);
        int importDeclarations_StartIndex = input.Index();
        CommonTree root_0 = null;

        IToken Import9 = null;
        IToken StringLiteral10 = null;
        IToken char_literal11 = null;

        CommonTree Import9_tree=null;
        CommonTree StringLiteral10_tree=null;
        CommonTree char_literal11_tree=null;
        RewriteRuleTokenStream stream_143 = new RewriteRuleTokenStream(adaptor,"token 143");
        RewriteRuleTokenStream stream_StringLiteral = new RewriteRuleTokenStream(adaptor,"token StringLiteral");
        RewriteRuleTokenStream stream_Import = new RewriteRuleTokenStream(adaptor,"token Import");

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 5) ) 
    	    {
    	    	return retval; 
    	    }
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:5: ( ( Import StringLiteral ';' )* -> ^( IMPORT_DECLARATIONS ( StringLiteral )* ) )
            // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:9: ( Import StringLiteral ';' )*
            {
            	// C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:9: ( Import StringLiteral ';' )*
            	do 
            	{
            	    int alt4 = 2;
            	    int LA4_0 = input.LA(1);

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


            	    switch (alt4) 
            		{
            			case 1 :
            			    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:11: Import StringLiteral ';'
            			    {
            			    	Import9=(IToken)Match(input,Import,FOLLOW_Import_in_importDeclarations482); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_Import.Add(Import9);

            			    	StringLiteral10=(IToken)Match(input,StringLiteral,FOLLOW_StringLiteral_in_importDeclarations484); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_StringLiteral.Add(StringLiteral10);

            			    	char_literal11=(IToken)Match(input,143,FOLLOW_143_in_importDeclarations486); if (state.failed) return retval; 
            			    	if ( (state.backtracking==0) ) stream_143.Add(char_literal11);


            			    }
            			    break;

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

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



            	// AST REWRITE
            	// elements:          StringLiteral
            	// token labels:      
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (CommonTree)adaptor.GetNilNode();
            	// 129:39: -> ^( IMPORT_DECLARATIONS ( StringLiteral )* )
            	{
            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:42: ^( IMPORT_DECLARATIONS ( StringLiteral )* )
            	    {
            	    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
            	    root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(IMPORT_DECLARATIONS, "IMPORT_DECLARATIONS"), root_1);

            	    // C:\\Works\\Psimulex\\VapeTeam.Psimulex\\VapeTeam.Psimulex.Compiler.Antlr\\Grammar\\Psimulex.g:129:65: ( StringLiteral )*
            	    while ( stream_StringLiteral.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_StringLiteral.NextNode());

            	    }
            	    stream_StringLiteral.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 5, importDeclarations_StartIndex); 
            }
        }
        return retval;
    }
Ejemplo n.º 24
0
    // $ANTLR start "typespec"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1133:1: typespec : ( ( STRING ( '[' b= INT ']' )? ) -> ^( TYPE_STRING ( $b)? ) | OPEN -> ^( TYPE_OPEN ) | ( INTEGER ( '[' b= INT ']' )? ) -> ^( TYPE_INTEGER ( $b)? ) | realrange | ( 'REAL' ( '[' b= INT ( ',' c= INT )? ']' )? ) -> ^( TYPE_REAL ( $b)? ( $c)? ) | category_list -> ^( TYPE_CATEGORY category_list ) | SET ( '[' b= INT ']' )? OF category_list -> ^( TYPE_SETOF ( $b)? ^( TYPE_CATEGORY category_list ) ) | SET ( '[' b= INT ']' )? OF c= ID ( ',' d+= ID )* -> ^( TYPE_SETOF ( $b)? $c ( $d)* ) | DATETYPE -> ^( TYPE_DATETYPE ) | TIMETYPE -> ^( TYPE_TIMETYPE ) | ARRAY '[' realrange ( ',' realrange )* ']' OF typespec -> ^( TYPE_ARRAY ( realrange )* typespec ) | a= ID -> ^( TYPE_USERDEF $a) );
    public BlaiseParser.typespec_return typespec() // throws RecognitionException [1]
    {   
        BlaiseParser.typespec_return retval = new BlaiseParser.typespec_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken b = null;
        IToken c = null;
        IToken a = null;
        IToken STRING357 = null;
        IToken char_literal358 = null;
        IToken char_literal359 = null;
        IToken OPEN360 = null;
        IToken INTEGER361 = null;
        IToken char_literal362 = null;
        IToken char_literal363 = null;
        IToken string_literal365 = null;
        IToken char_literal366 = null;
        IToken char_literal367 = null;
        IToken char_literal368 = null;
        IToken SET370 = null;
        IToken char_literal371 = null;
        IToken char_literal372 = null;
        IToken OF373 = null;
        IToken SET375 = null;
        IToken char_literal376 = null;
        IToken char_literal377 = null;
        IToken OF378 = null;
        IToken char_literal379 = null;
        IToken DATETYPE380 = null;
        IToken TIMETYPE381 = null;
        IToken ARRAY382 = null;
        IToken char_literal383 = null;
        IToken char_literal385 = null;
        IToken char_literal387 = null;
        IToken OF388 = null;
        IToken d = null;
        IList list_d = null;
        BlaiseParser.realrange_return realrange364 = default(BlaiseParser.realrange_return);

        BlaiseParser.category_list_return category_list369 = default(BlaiseParser.category_list_return);

        BlaiseParser.category_list_return category_list374 = default(BlaiseParser.category_list_return);

        BlaiseParser.realrange_return realrange384 = default(BlaiseParser.realrange_return);

        BlaiseParser.realrange_return realrange386 = default(BlaiseParser.realrange_return);

        BlaiseParser.typespec_return typespec389 = default(BlaiseParser.typespec_return);


        object b_tree=null;
        object c_tree=null;
        object a_tree=null;
        object STRING357_tree=null;
        object char_literal358_tree=null;
        object char_literal359_tree=null;
        object OPEN360_tree=null;
        object INTEGER361_tree=null;
        object char_literal362_tree=null;
        object char_literal363_tree=null;
        object string_literal365_tree=null;
        object char_literal366_tree=null;
        object char_literal367_tree=null;
        object char_literal368_tree=null;
        object SET370_tree=null;
        object char_literal371_tree=null;
        object char_literal372_tree=null;
        object OF373_tree=null;
        object SET375_tree=null;
        object char_literal376_tree=null;
        object char_literal377_tree=null;
        object OF378_tree=null;
        object char_literal379_tree=null;
        object DATETYPE380_tree=null;
        object TIMETYPE381_tree=null;
        object ARRAY382_tree=null;
        object char_literal383_tree=null;
        object char_literal385_tree=null;
        object char_literal387_tree=null;
        object OF388_tree=null;
        object d_tree=null;
        RewriteRuleTokenStream stream_RBRACK = new RewriteRuleTokenStream(adaptor,"token RBRACK");
        RewriteRuleTokenStream stream_OPEN = new RewriteRuleTokenStream(adaptor,"token OPEN");
        RewriteRuleTokenStream stream_INTEGER = new RewriteRuleTokenStream(adaptor,"token INTEGER");
        RewriteRuleTokenStream stream_LBRACK = new RewriteRuleTokenStream(adaptor,"token LBRACK");
        RewriteRuleTokenStream stream_TIMETYPE = new RewriteRuleTokenStream(adaptor,"token TIMETYPE");
        RewriteRuleTokenStream stream_214 = new RewriteRuleTokenStream(adaptor,"token 214");
        RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleTokenStream stream_DATETYPE = new RewriteRuleTokenStream(adaptor,"token DATETYPE");
        RewriteRuleTokenStream stream_SET = new RewriteRuleTokenStream(adaptor,"token SET");
        RewriteRuleTokenStream stream_INT = new RewriteRuleTokenStream(adaptor,"token INT");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_OF = new RewriteRuleTokenStream(adaptor,"token OF");
        RewriteRuleTokenStream stream_ARRAY = new RewriteRuleTokenStream(adaptor,"token ARRAY");
        RewriteRuleTokenStream stream_STRING = new RewriteRuleTokenStream(adaptor,"token STRING");
        RewriteRuleSubtreeStream stream_typespec = new RewriteRuleSubtreeStream(adaptor,"rule typespec");
        RewriteRuleSubtreeStream stream_category_list = new RewriteRuleSubtreeStream(adaptor,"rule category_list");
        RewriteRuleSubtreeStream stream_realrange = new RewriteRuleSubtreeStream(adaptor,"rule realrange");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:2: ( ( STRING ( '[' b= INT ']' )? ) -> ^( TYPE_STRING ( $b)? ) | OPEN -> ^( TYPE_OPEN ) | ( INTEGER ( '[' b= INT ']' )? ) -> ^( TYPE_INTEGER ( $b)? ) | realrange | ( 'REAL' ( '[' b= INT ( ',' c= INT )? ']' )? ) -> ^( TYPE_REAL ( $b)? ( $c)? ) | category_list -> ^( TYPE_CATEGORY category_list ) | SET ( '[' b= INT ']' )? OF category_list -> ^( TYPE_SETOF ( $b)? ^( TYPE_CATEGORY category_list ) ) | SET ( '[' b= INT ']' )? OF c= ID ( ',' d+= ID )* -> ^( TYPE_SETOF ( $b)? $c ( $d)* ) | DATETYPE -> ^( TYPE_DATETYPE ) | TIMETYPE -> ^( TYPE_TIMETYPE ) | ARRAY '[' realrange ( ',' realrange )* ']' OF typespec -> ^( TYPE_ARRAY ( realrange )* typespec ) | a= ID -> ^( TYPE_USERDEF $a) )
            int alt124 = 12;
            alt124 = dfa124.Predict(input);
            switch (alt124) 
            {
                case 1 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:3: ( STRING ( '[' b= INT ']' )? )
                    {
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:3: ( STRING ( '[' b= INT ']' )? )
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:4: STRING ( '[' b= INT ']' )?
                    	{
                    		STRING357=(IToken)Match(input,STRING,FOLLOW_STRING_in_typespec6953); if (state.failed) return retval; 
                    		if ( (state.backtracking==0) ) stream_STRING.Add(STRING357);

                    		// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:11: ( '[' b= INT ']' )?
                    		int alt116 = 2;
                    		int LA116_0 = input.LA(1);

                    		if ( (LA116_0 == LBRACK) )
                    		{
                    		    alt116 = 1;
                    		}
                    		switch (alt116) 
                    		{
                    		    case 1 :
                    		        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:12: '[' b= INT ']'
                    		        {
                    		        	char_literal358=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec6956); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal358);

                    		        	b=(IToken)Match(input,INT,FOLLOW_INT_in_typespec6960); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_INT.Add(b);

                    		        	char_literal359=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec6962); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal359);


                    		        }
                    		        break;

                    		}


                    	}



                    	// AST REWRITE
                    	// elements:          b
                    	// token labels:      b
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1134:29: -> ^( TYPE_STRING ( $b)? )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:32: ^( TYPE_STRING ( $b)? )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_STRING, "TYPE_STRING"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1134:46: ( $b)?
                    	    if ( stream_b.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_b.NextNode());

                    	    }
                    	    stream_b.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 2 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1135:4: OPEN
                    {
                    	OPEN360=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_typespec6980); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_OPEN.Add(OPEN360);



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

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1135:8: -> ^( TYPE_OPEN )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1135:11: ^( TYPE_OPEN )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_OPEN, "TYPE_OPEN"), root_1);

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 3 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:4: ( INTEGER ( '[' b= INT ']' )? )
                    {
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:4: ( INTEGER ( '[' b= INT ']' )? )
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:5: INTEGER ( '[' b= INT ']' )?
                    	{
                    		INTEGER361=(IToken)Match(input,INTEGER,FOLLOW_INTEGER_in_typespec6993); if (state.failed) return retval; 
                    		if ( (state.backtracking==0) ) stream_INTEGER.Add(INTEGER361);

                    		// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:13: ( '[' b= INT ']' )?
                    		int alt117 = 2;
                    		int LA117_0 = input.LA(1);

                    		if ( (LA117_0 == LBRACK) )
                    		{
                    		    alt117 = 1;
                    		}
                    		switch (alt117) 
                    		{
                    		    case 1 :
                    		        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:14: '[' b= INT ']'
                    		        {
                    		        	char_literal362=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec6996); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal362);

                    		        	b=(IToken)Match(input,INT,FOLLOW_INT_in_typespec7000); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_INT.Add(b);

                    		        	char_literal363=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec7002); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal363);


                    		        }
                    		        break;

                    		}


                    	}



                    	// AST REWRITE
                    	// elements:          b
                    	// token labels:      b
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1137:31: -> ^( TYPE_INTEGER ( $b)? )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:34: ^( TYPE_INTEGER ( $b)? )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_INTEGER, "TYPE_INTEGER"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1137:49: ( $b)?
                    	    if ( stream_b.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_b.NextNode());

                    	    }
                    	    stream_b.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 4 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1138:4: realrange
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_realrange_in_typespec7020);
                    	realrange364 = realrange();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, realrange364.Tree);

                    }
                    break;
                case 5 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:4: ( 'REAL' ( '[' b= INT ( ',' c= INT )? ']' )? )
                    {
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:4: ( 'REAL' ( '[' b= INT ( ',' c= INT )? ']' )? )
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:5: 'REAL' ( '[' b= INT ( ',' c= INT )? ']' )?
                    	{
                    		string_literal365=(IToken)Match(input,214,FOLLOW_214_in_typespec7026); if (state.failed) return retval; 
                    		if ( (state.backtracking==0) ) stream_214.Add(string_literal365);

                    		// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:12: ( '[' b= INT ( ',' c= INT )? ']' )?
                    		int alt119 = 2;
                    		int LA119_0 = input.LA(1);

                    		if ( (LA119_0 == LBRACK) )
                    		{
                    		    alt119 = 1;
                    		}
                    		switch (alt119) 
                    		{
                    		    case 1 :
                    		        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:13: '[' b= INT ( ',' c= INT )? ']'
                    		        {
                    		        	char_literal366=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec7029); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal366);

                    		        	b=(IToken)Match(input,INT,FOLLOW_INT_in_typespec7033); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_INT.Add(b);

                    		        	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:23: ( ',' c= INT )?
                    		        	int alt118 = 2;
                    		        	int LA118_0 = input.LA(1);

                    		        	if ( (LA118_0 == COMMA) )
                    		        	{
                    		        	    alt118 = 1;
                    		        	}
                    		        	switch (alt118) 
                    		        	{
                    		        	    case 1 :
                    		        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:24: ',' c= INT
                    		        	        {
                    		        	        	char_literal367=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_typespec7036); if (state.failed) return retval; 
                    		        	        	if ( (state.backtracking==0) ) stream_COMMA.Add(char_literal367);

                    		        	        	c=(IToken)Match(input,INT,FOLLOW_INT_in_typespec7040); if (state.failed) return retval; 
                    		        	        	if ( (state.backtracking==0) ) stream_INT.Add(c);


                    		        	        }
                    		        	        break;

                    		        	}

                    		        	char_literal368=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec7044); if (state.failed) return retval; 
                    		        	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal368);


                    		        }
                    		        break;

                    		}


                    	}



                    	// AST REWRITE
                    	// elements:          b, c
                    	// token labels:      b, c
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	RewriteRuleTokenStream stream_c = new RewriteRuleTokenStream(adaptor, "token c", c);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1139:43: -> ^( TYPE_REAL ( $b)? ( $c)? )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:46: ^( TYPE_REAL ( $b)? ( $c)? )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_REAL, "TYPE_REAL"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:58: ( $b)?
                    	    if ( stream_b.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_b.NextNode());

                    	    }
                    	    stream_b.Reset();
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1139:62: ( $c)?
                    	    if ( stream_c.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_c.NextNode());

                    	    }
                    	    stream_c.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 6 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1140:4: category_list
                    {
                    	PushFollow(FOLLOW_category_list_in_typespec7066);
                    	category_list369 = category_list();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_category_list.Add(category_list369.Tree);


                    	// AST REWRITE
                    	// elements:          category_list
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1140:17: -> ^( TYPE_CATEGORY category_list )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1140:20: ^( TYPE_CATEGORY category_list )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_CATEGORY, "TYPE_CATEGORY"), root_1);

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

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 7 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:4: SET ( '[' b= INT ']' )? OF category_list
                    {
                    	SET370=(IToken)Match(input,SET,FOLLOW_SET_in_typespec7078); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_SET.Add(SET370);

                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:8: ( '[' b= INT ']' )?
                    	int alt120 = 2;
                    	int LA120_0 = input.LA(1);

                    	if ( (LA120_0 == LBRACK) )
                    	{
                    	    alt120 = 1;
                    	}
                    	switch (alt120) 
                    	{
                    	    case 1 :
                    	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:9: '[' b= INT ']'
                    	        {
                    	        	char_literal371=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec7081); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal371);

                    	        	b=(IToken)Match(input,INT,FOLLOW_INT_in_typespec7085); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_INT.Add(b);

                    	        	char_literal372=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec7087); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal372);


                    	        }
                    	        break;

                    	}

                    	OF373=(IToken)Match(input,OF,FOLLOW_OF_in_typespec7091); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_OF.Add(OF373);

                    	PushFollow(FOLLOW_category_list_in_typespec7093);
                    	category_list374 = category_list();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_category_list.Add(category_list374.Tree);


                    	// AST REWRITE
                    	// elements:          category_list, b
                    	// token labels:      b
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1141:42: -> ^( TYPE_SETOF ( $b)? ^( TYPE_CATEGORY category_list ) )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:45: ^( TYPE_SETOF ( $b)? ^( TYPE_CATEGORY category_list ) )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_SETOF, "TYPE_SETOF"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:58: ( $b)?
                    	    if ( stream_b.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_b.NextNode());

                    	    }
                    	    stream_b.Reset();
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1141:62: ^( TYPE_CATEGORY category_list )
                    	    {
                    	    object root_2 = (object)adaptor.GetNilNode();
                    	    root_2 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_CATEGORY, "TYPE_CATEGORY"), root_2);

                    	    adaptor.AddChild(root_2, stream_category_list.NextTree());

                    	    adaptor.AddChild(root_1, root_2);
                    	    }

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 8 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:4: SET ( '[' b= INT ']' )? OF c= ID ( ',' d+= ID )*
                    {
                    	SET375=(IToken)Match(input,SET,FOLLOW_SET_in_typespec7114); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_SET.Add(SET375);

                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:8: ( '[' b= INT ']' )?
                    	int alt121 = 2;
                    	int LA121_0 = input.LA(1);

                    	if ( (LA121_0 == LBRACK) )
                    	{
                    	    alt121 = 1;
                    	}
                    	switch (alt121) 
                    	{
                    	    case 1 :
                    	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:9: '[' b= INT ']'
                    	        {
                    	        	char_literal376=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec7117); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal376);

                    	        	b=(IToken)Match(input,INT,FOLLOW_INT_in_typespec7121); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_INT.Add(b);

                    	        	char_literal377=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec7123); if (state.failed) return retval; 
                    	        	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal377);


                    	        }
                    	        break;

                    	}

                    	OF378=(IToken)Match(input,OF,FOLLOW_OF_in_typespec7127); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_OF.Add(OF378);

                    	c=(IToken)Match(input,ID,FOLLOW_ID_in_typespec7131); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_ID.Add(c);

                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:33: ( ',' d+= ID )*
                    	do 
                    	{
                    	    int alt122 = 2;
                    	    int LA122_0 = input.LA(1);

                    	    if ( (LA122_0 == COMMA) )
                    	    {
                    	        int LA122_2 = input.LA(2);

                    	        if ( (LA122_2 == ID) )
                    	        {
                    	            alt122 = 1;
                    	        }


                    	    }


                    	    switch (alt122) 
                    		{
                    			case 1 :
                    			    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:34: ',' d+= ID
                    			    {
                    			    	char_literal379=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_typespec7134); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_COMMA.Add(char_literal379);

                    			    	d=(IToken)Match(input,ID,FOLLOW_ID_in_typespec7138); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_ID.Add(d);

                    			    	if (list_d == null) list_d = new ArrayList();
                    			    	list_d.Add(d);


                    			    }
                    			    break;

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

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



                    	// AST REWRITE
                    	// elements:          b, c, d
                    	// token labels:      b, c
                    	// rule labels:       retval
                    	// token list labels: d
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
                    	RewriteRuleTokenStream stream_c = new RewriteRuleTokenStream(adaptor, "token c", c);
                    	RewriteRuleTokenStream stream_d = new RewriteRuleTokenStream(adaptor,"token d", list_d);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1142:46: -> ^( TYPE_SETOF ( $b)? $c ( $d)* )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:49: ^( TYPE_SETOF ( $b)? $c ( $d)* )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_SETOF, "TYPE_SETOF"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:62: ( $b)?
                    	    if ( stream_b.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_b.NextNode());

                    	    }
                    	    stream_b.Reset();
                    	    adaptor.AddChild(root_1, stream_c.NextNode());
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1142:69: ( $d)*
                    	    while ( stream_d.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_d.NextNode());

                    	    }
                    	    stream_d.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 9 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1143:4: DATETYPE
                    {
                    	DATETYPE380=(IToken)Match(input,DATETYPE,FOLLOW_DATETYPE_in_typespec7162); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_DATETYPE.Add(DATETYPE380);



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

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1143:12: -> ^( TYPE_DATETYPE )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1143:15: ^( TYPE_DATETYPE )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_DATETYPE, "TYPE_DATETYPE"), root_1);

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 10 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1144:4: TIMETYPE
                    {
                    	TIMETYPE381=(IToken)Match(input,TIMETYPE,FOLLOW_TIMETYPE_in_typespec7172); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_TIMETYPE.Add(TIMETYPE381);



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

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1144:12: -> ^( TYPE_TIMETYPE )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1144:15: ^( TYPE_TIMETYPE )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_TIMETYPE, "TYPE_TIMETYPE"), root_1);

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 11 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1146:4: ARRAY '[' realrange ( ',' realrange )* ']' OF typespec
                    {
                    	ARRAY382=(IToken)Match(input,ARRAY,FOLLOW_ARRAY_in_typespec7184); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_ARRAY.Add(ARRAY382);

                    	char_literal383=(IToken)Match(input,LBRACK,FOLLOW_LBRACK_in_typespec7186); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_LBRACK.Add(char_literal383);

                    	PushFollow(FOLLOW_realrange_in_typespec7188);
                    	realrange384 = realrange();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_realrange.Add(realrange384.Tree);
                    	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1146:24: ( ',' realrange )*
                    	do 
                    	{
                    	    int alt123 = 2;
                    	    int LA123_0 = input.LA(1);

                    	    if ( (LA123_0 == COMMA) )
                    	    {
                    	        alt123 = 1;
                    	    }


                    	    switch (alt123) 
                    		{
                    			case 1 :
                    			    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1146:25: ',' realrange
                    			    {
                    			    	char_literal385=(IToken)Match(input,COMMA,FOLLOW_COMMA_in_typespec7191); if (state.failed) return retval; 
                    			    	if ( (state.backtracking==0) ) stream_COMMA.Add(char_literal385);

                    			    	PushFollow(FOLLOW_realrange_in_typespec7193);
                    			    	realrange386 = realrange();
                    			    	state.followingStackPointer--;
                    			    	if (state.failed) return retval;
                    			    	if ( (state.backtracking==0) ) stream_realrange.Add(realrange386.Tree);

                    			    }
                    			    break;

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

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

                    	char_literal387=(IToken)Match(input,RBRACK,FOLLOW_RBRACK_in_typespec7198); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_RBRACK.Add(char_literal387);

                    	OF388=(IToken)Match(input,OF,FOLLOW_OF_in_typespec7200); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_OF.Add(OF388);

                    	PushFollow(FOLLOW_typespec_in_typespec7202);
                    	typespec389 = typespec();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( (state.backtracking==0) ) stream_typespec.Add(typespec389.Tree);


                    	// AST REWRITE
                    	// elements:          typespec, realrange
                    	// token labels:      
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1146:58: -> ^( TYPE_ARRAY ( realrange )* typespec )
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1146:61: ^( TYPE_ARRAY ( realrange )* typespec )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_ARRAY, "TYPE_ARRAY"), root_1);

                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1146:74: ( realrange )*
                    	    while ( stream_realrange.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_realrange.NextTree());

                    	    }
                    	    stream_realrange.Reset();
                    	    adaptor.AddChild(root_1, stream_typespec.NextTree());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 12 :
                    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1147:4: a= ID
                    {
                    	a=(IToken)Match(input,ID,FOLLOW_ID_in_typespec7220); if (state.failed) return retval; 
                    	if ( (state.backtracking==0) ) stream_ID.Add(a);



                    	// AST REWRITE
                    	// elements:          a
                    	// token labels:      a
                    	// rule labels:       retval
                    	// token list labels: 
                    	// rule list labels:  
                    	// wildcard labels: 
                    	if ( (state.backtracking==0) ) {
                    	retval.Tree = root_0;
                    	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
                    	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

                    	root_0 = (object)adaptor.GetNilNode();
                    	// 1147:9: -> ^( TYPE_USERDEF $a)
                    	{
                    	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:1147:12: ^( TYPE_USERDEF $a)
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(TYPE_USERDEF, "TYPE_USERDEF"), root_1);

                    	    adaptor.AddChild(root_1, stream_a.NextNode());

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 25
0
        // throws RecognitionException [1]
        // $ANTLR start identifierStar
        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1049:1: identifierStar : ide= ident ( options {greedy=true; } : DOT ide2= ident )* ( DOT STAR )? -> ^( IDENTIFIER ( ident )+ ( STAR )? ) ;
        public identifierStar_return identifierStar()
        {
            identifierStar_return retval = new identifierStar_return();
            retval.start = input.LT(1);
            int identifierStar_StartIndex = input.Index();
            CommonTree root_0 = null;

            CommonToken DOT178 = null;
            CommonToken DOT179 = null;
            CommonToken STAR180 = null;
            ident_return ide = null;

            ident_return ide2 = null;

            CommonTree DOT178_tree=null;
            CommonTree DOT179_tree=null;
            CommonTree STAR180_tree=null;
            RewriteRuleTokenStream stream_STAR = new RewriteRuleTokenStream(adaptor,"token STAR");
            RewriteRuleTokenStream stream_DOT = new RewriteRuleTokenStream(adaptor,"token DOT");
            RewriteRuleSubtreeStream stream_ident = new RewriteRuleSubtreeStream(adaptor,"rule ident");
            try
            {
            if ( (backtracking > 0) && AlreadyParsedRule(input, 69) )
            {
                return retval;
            }
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1050:4: (ide= ident ( options {greedy=true; } : DOT ide2= ident )* ( DOT STAR )? -> ^( IDENTIFIER ( ident )+ ( STAR )? ) )
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1050:4: ide= ident ( options {greedy=true; } : DOT ide2= ident )* ( DOT STAR )?
            {
                PushFollow(FOLLOW_ident_in_identifierStar3335);
                ide = ident();
                followingStackPointer_--;
                if (failed) return retval;
                if ( backtracking==0 ) stream_ident.Add(ide.Tree);
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1051:3: ( options {greedy=true; } : DOT ide2= ident )*
                do
                {
                    int alt48 = 2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0 == DOT) )
                    {
                        int LA48_1 = input.LA(2);

                        if ( ((LA48_1 >= GET && LA48_1 <= SET) || LA48_1 == IDENT || LA48_1 == DYNAMIC || (LA48_1 >= IS && LA48_1 <= AS) || (LA48_1 >= USE && LA48_1 <= XML)) )
                        {
                            alt48 = 1;
                        }

                    }

                    switch (alt48)
                    {
                        case 1 :
                            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1052:5: DOT ide2= ident
                            {
                                DOT178 = (CommonToken)input.LT(1);
                                Match(input,DOT,FOLLOW_DOT_in_identifierStar3357); if (failed) return retval;
                                if ( backtracking==0 ) stream_DOT.Add(DOT178);

                                PushFollow(FOLLOW_ident_in_identifierStar3361);
                                ide2 = ident();
                                followingStackPointer_--;
                                if (failed) return retval;
                                if ( backtracking==0 ) stream_ident.Add(ide2.Tree);

                            }
                            break;

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

                loop48:
                    ;	// Stops C# compiler whinging that label 'loop48' has no statements

                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1054:3: ( DOT STAR )?
                int alt49 = 2;
                int LA49_0 = input.LA(1);

                if ( (LA49_0 == DOT) )
                {
                    alt49 = 1;
                }
                switch (alt49)
                {
                    case 1 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1054:5: DOT STAR
                        {
                            DOT179 = (CommonToken)input.LT(1);
                            Match(input,DOT,FOLLOW_DOT_in_identifierStar3376); if (failed) return retval;
                            if ( backtracking==0 ) stream_DOT.Add(DOT179);

                            STAR180 = (CommonToken)input.LT(1);
                            Match(input,STAR,FOLLOW_STAR_in_identifierStar3378); if (failed) return retval;
                            if ( backtracking==0 ) stream_STAR.Add(STAR180);

                        }
                        break;

                }

                // AST REWRITE
                // elements:          STAR, ident
                // token labels:
                // rule labels:       retval
                // token list labels:
                // rule list labels:
                if ( backtracking==0 ) {
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                root_0 = (CommonTree)adaptor.GetNilNode();
                // 1056:3: -> ^( IDENTIFIER ( ident )+ ( STAR )? )
                {
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1056:6: ^( IDENTIFIER ( ident )+ ( STAR )? )
                    {
                    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    root_1 = (CommonTree)adaptor.BecomeRoot(adaptor.Create(IDENTIFIER, "IDENTIFIER"), root_1);

                    if ( !(stream_ident.HasNext()) ) {
                        throw new RewriteEarlyExitException();
                    }
                    while ( stream_ident.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_ident.Next());

                    }
                    stream_ident.Reset();
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1056:26: ( STAR )?
                    if ( stream_STAR.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_STAR.Next());

                    }
                    stream_STAR.Reset();

                    adaptor.AddChild(root_0, root_1);
                    }

                }

                }

            }

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

            if ( backtracking==0 )
            {	retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop);
            }
            }

            catch (NoViableAltException e)
            {
                Debug.WriteLine("NoValiable alt: token=" + e.Token + " (decision=" + e.decisionNumber + " state " + e.stateNumber + ")" + " decision=<<" + e.grammarDecisionDescription + ">>");
                throw e;
            }
            catch (MismatchedTokenException e)
            {
                Debug.WriteLine("[" + e.Line + ":" + e.Index + "]: " + e.Message + ". Unexpected " + e.UnexpectedType.ToString() +  "( expecting: "+ e.expecting + " )");
                throw e;
            }
            catch(RecognitionException e)
            {
                Debug.WriteLine("RecognitionException: " + e);
                throw e;
            }
            finally
            {
            if ( backtracking > 0 )
            {
                Memoize(input, 69, identifierStar_StartIndex);
            }
            }
            return retval;
        }
Ejemplo n.º 26
0
    // $ANTLR start "language"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:658:1: language : a= ID (b= QSTRING )? -> ^( LANGUAGE $a ( $b)? ) ;
    public BlaiseParser.language_return language() // throws RecognitionException [1]
    {   
        BlaiseParser.language_return retval = new BlaiseParser.language_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken a = null;
        IToken b = null;

        object a_tree=null;
        object b_tree=null;
        RewriteRuleTokenStream stream_QSTRING = new RewriteRuleTokenStream(adaptor,"token QSTRING");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");

        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:659:2: (a= ID (b= QSTRING )? -> ^( LANGUAGE $a ( $b)? ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:659:5: a= ID (b= QSTRING )?
            {
            	a=(IToken)Match(input,ID,FOLLOW_ID_in_language3951); if (state.failed) return retval; 
            	if ( (state.backtracking==0) ) stream_ID.Add(a);

            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:659:11: (b= QSTRING )?
            	int alt14 = 2;
            	int LA14_0 = input.LA(1);

            	if ( (LA14_0 == QSTRING) )
            	{
            	    alt14 = 1;
            	}
            	switch (alt14) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:0:0: b= QSTRING
            	        {
            	        	b=(IToken)Match(input,QSTRING,FOLLOW_QSTRING_in_language3955); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_QSTRING.Add(b);


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          b, a
            	// token labels:      b, a
            	// rule labels:       retval
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
            	RewriteRuleTokenStream stream_a = new RewriteRuleTokenStream(adaptor, "token a", a);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 659:21: -> ^( LANGUAGE $a ( $b)? )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:659:24: ^( LANGUAGE $a ( $b)? )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(LANGUAGE, "LANGUAGE"), root_1);

            	    adaptor.AddChild(root_1, stream_a.NextNode());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:659:38: ( $b)?
            	    if ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_b.NextNode());

            	    }
            	    stream_b.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 27
0
        // throws RecognitionException [1]
        // $ANTLR start basicParameterDeclaration
        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:635:1: basicParameterDeclaration : ( CONST )? ide= ident (type_exp= typeExpression )? ( parameterDefault )? -> ^( PARAM ( CONST )? ident ( typeExpression )? ( parameterDefault )? ) ;
        public basicParameterDeclaration_return basicParameterDeclaration()
        {
            basicParameterDeclaration_return retval = new basicParameterDeclaration_return();
            retval.start = input.LT(1);
            int basicParameterDeclaration_StartIndex = input.Index();
            CommonTree root_0 = null;

            CommonToken CONST68 = null;
            ident_return ide = null;

            typeExpression_return type_exp = null;

            parameterDefault_return parameterDefault69 = null;

            CommonTree CONST68_tree=null;
            RewriteRuleTokenStream stream_CONST = new RewriteRuleTokenStream(adaptor,"token CONST");
            RewriteRuleSubtreeStream stream_parameterDefault = new RewriteRuleSubtreeStream(adaptor,"rule parameterDefault");
            RewriteRuleSubtreeStream stream_ident = new RewriteRuleSubtreeStream(adaptor,"rule ident");
            RewriteRuleSubtreeStream stream_typeExpression = new RewriteRuleSubtreeStream(adaptor,"rule typeExpression");
            try
            {
            if ( (backtracking > 0) && AlreadyParsedRule(input, 31) )
            {
                return retval;
            }
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:636:4: ( ( CONST )? ide= ident (type_exp= typeExpression )? ( parameterDefault )? -> ^( PARAM ( CONST )? ident ( typeExpression )? ( parameterDefault )? ) )
            // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:636:4: ( CONST )? ide= ident (type_exp= typeExpression )? ( parameterDefault )?
            {
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:636:4: ( CONST )?
                int alt25 = 2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0 == CONST) )
                {
                    alt25 = 1;
                }
                switch (alt25)
                {
                    case 1 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:0:0: CONST
                        {
                            CONST68 = (CommonToken)input.LT(1);
                            Match(input,CONST,FOLLOW_CONST_in_basicParameterDeclaration1807); if (failed) return retval;
                            if ( backtracking==0 ) stream_CONST.Add(CONST68);

                        }
                        break;

                }

                PushFollow(FOLLOW_ident_in_basicParameterDeclaration1815);
                ide = ident();
                followingStackPointer_--;
                if (failed) return retval;
                if ( backtracking==0 ) stream_ident.Add(ide.Tree);
                if ( backtracking == 0 )
                {
                   buffer.Append(((CommonTree)ide.Tree).Text);
                }
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:638:11: (type_exp= typeExpression )?
                int alt26 = 2;
                int LA26_0 = input.LA(1);

                if ( (LA26_0 == COLON) )
                {
                    alt26 = 1;
                }
                switch (alt26)
                {
                    case 1 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:0:0: type_exp= typeExpression
                        {
                            PushFollow(FOLLOW_typeExpression_in_basicParameterDeclaration1827);
                            type_exp = typeExpression();
                            followingStackPointer_--;
                            if (failed) return retval;
                            if ( backtracking==0 ) stream_typeExpression.Add(type_exp.Tree);

                        }
                        break;

                }

                if ( backtracking == 0 )
                {

                }
                // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:639:3: ( parameterDefault )?
                int alt27 = 2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0 == ASSIGN) )
                {
                    alt27 = 1;
                }
                switch (alt27)
                {
                    case 1 :
                        // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:0:0: parameterDefault
                        {
                            PushFollow(FOLLOW_parameterDefault_in_basicParameterDeclaration1834);
                            parameterDefault69 = parameterDefault();
                            followingStackPointer_--;
                            if (failed) return retval;
                            if ( backtracking==0 ) stream_parameterDefault.Add(parameterDefault69.Tree);

                        }
                        break;

                }

                // AST REWRITE
                // elements:          ident, CONST, parameterDefault, typeExpression
                // token labels:
                // rule labels:       retval
                // token list labels:
                // rule list labels:
                if ( backtracking==0 ) {
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                root_0 = (CommonTree)adaptor.GetNilNode();
                // 640:3: -> ^( PARAM ( CONST )? ident ( typeExpression )? ( parameterDefault )? )
                {
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:640:6: ^( PARAM ( CONST )? ident ( typeExpression )? ( parameterDefault )? )
                    {
                    CommonTree root_1 = (CommonTree)adaptor.GetNilNode();
                    root_1 = (CommonTree)adaptor.BecomeRoot(adaptor.Create(PARAM, "PARAM"), root_1);

                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:640:14: ( CONST )?
                    if ( stream_CONST.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_CONST.Next());

                    }
                    stream_CONST.Reset();
                    adaptor.AddChild(root_1, stream_ident.Next());
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:640:27: ( typeExpression )?
                    if ( stream_typeExpression.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_typeExpression.Next());

                    }
                    stream_typeExpression.Reset();
                    // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:640:43: ( parameterDefault )?
                    if ( stream_parameterDefault.HasNext() )
                    {
                        adaptor.AddChild(root_1, stream_parameterDefault.Next());

                    }
                    stream_parameterDefault.Reset();

                    adaptor.AddChild(root_0, root_1);
                    }

                }

                }

            }

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

            if ( backtracking==0 )
            {	retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop);
            }
            }

            catch (NoViableAltException e)
            {
                Debug.WriteLine("NoValiable alt: token=" + e.Token + " (decision=" + e.decisionNumber + " state " + e.stateNumber + ")" + " decision=<<" + e.grammarDecisionDescription + ">>");
                throw e;
            }
            catch (MismatchedTokenException e)
            {
                Debug.WriteLine("[" + e.Line + ":" + e.Index + "]: " + e.Message + ". Unexpected " + e.UnexpectedType.ToString() +  "( expecting: "+ e.expecting + " )");
                throw e;
            }
            catch(RecognitionException e)
            {
                Debug.WriteLine("RecognitionException: " + e);
                throw e;
            }
            finally
            {
            if ( backtracking > 0 )
            {
                Memoize(input, 31, basicParameterDeclaration_StartIndex);
            }
            }
            return retval;
        }
Ejemplo n.º 28
0
    // $ANTLR start "secondary_key"
    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:666:1: secondary_key : (b= ID '=' )? a= var_list ( '(' c= ( ALPHA | TRIGRAM ) ')' )? -> ^( SECONDARY_KEY $a ( $b)? ( $c)? ) ;
    public BlaiseParser.secondary_key_return secondary_key() // throws RecognitionException [1]
    {   
        BlaiseParser.secondary_key_return retval = new BlaiseParser.secondary_key_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken b = null;
        IToken c = null;
        IToken char_literal53 = null;
        IToken char_literal54 = null;
        IToken ALPHA55 = null;
        IToken TRIGRAM56 = null;
        IToken char_literal57 = null;
        BlaiseParser.var_list_return a = default(BlaiseParser.var_list_return);


        object b_tree=null;
        object c_tree=null;
        object char_literal53_tree=null;
        object char_literal54_tree=null;
        object ALPHA55_tree=null;
        object TRIGRAM56_tree=null;
        object char_literal57_tree=null;
        RewriteRuleTokenStream stream_RPAREN = new RewriteRuleTokenStream(adaptor,"token RPAREN");
        RewriteRuleTokenStream stream_TRIGRAM = new RewriteRuleTokenStream(adaptor,"token TRIGRAM");
        RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_ALPHA = new RewriteRuleTokenStream(adaptor,"token ALPHA");
        RewriteRuleTokenStream stream_LPAREN = new RewriteRuleTokenStream(adaptor,"token LPAREN");
        RewriteRuleTokenStream stream_EQUAL = new RewriteRuleTokenStream(adaptor,"token EQUAL");
        RewriteRuleSubtreeStream stream_var_list = new RewriteRuleSubtreeStream(adaptor,"rule var_list");
        try 
    	{
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:2: ( (b= ID '=' )? a= var_list ( '(' c= ( ALPHA | TRIGRAM ) ')' )? -> ^( SECONDARY_KEY $a ( $b)? ( $c)? ) )
            // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:4: (b= ID '=' )? a= var_list ( '(' c= ( ALPHA | TRIGRAM ) ')' )?
            {
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:4: (b= ID '=' )?
            	int alt18 = 2;
            	int LA18_0 = input.LA(1);

            	if ( (LA18_0 == ID) )
            	{
            	    int LA18_1 = input.LA(2);

            	    if ( (LA18_1 == EQUAL) )
            	    {
            	        alt18 = 1;
            	    }
            	}
            	switch (alt18) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:5: b= ID '='
            	        {
            	        	b=(IToken)Match(input,ID,FOLLOW_ID_in_secondary_key4042); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_ID.Add(b);

            	        	char_literal53=(IToken)Match(input,EQUAL,FOLLOW_EQUAL_in_secondary_key4044); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_EQUAL.Add(char_literal53);


            	        }
            	        break;

            	}

            	PushFollow(FOLLOW_var_list_in_secondary_key4050);
            	a = var_list();
            	state.followingStackPointer--;
            	if (state.failed) return retval;
            	if ( (state.backtracking==0) ) stream_var_list.Add(a.Tree);
            	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:27: ( '(' c= ( ALPHA | TRIGRAM ) ')' )?
            	int alt20 = 2;
            	int LA20_0 = input.LA(1);

            	if ( (LA20_0 == LPAREN) )
            	{
            	    alt20 = 1;
            	}
            	switch (alt20) 
            	{
            	    case 1 :
            	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:28: '(' c= ( ALPHA | TRIGRAM ) ')'
            	        {
            	        	char_literal54=(IToken)Match(input,LPAREN,FOLLOW_LPAREN_in_secondary_key4053); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_LPAREN.Add(char_literal54);

            	        	// C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:34: ( ALPHA | TRIGRAM )
            	        	int alt19 = 2;
            	        	int LA19_0 = input.LA(1);

            	        	if ( (LA19_0 == ALPHA) )
            	        	{
            	        	    alt19 = 1;
            	        	}
            	        	else if ( (LA19_0 == TRIGRAM) )
            	        	{
            	        	    alt19 = 2;
            	        	}
            	        	else 
            	        	{
            	        	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	        	    NoViableAltException nvae_d19s0 =
            	        	        new NoViableAltException("", 19, 0, input);

            	        	    throw nvae_d19s0;
            	        	}
            	        	switch (alt19) 
            	        	{
            	        	    case 1 :
            	        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:35: ALPHA
            	        	        {
            	        	        	ALPHA55=(IToken)Match(input,ALPHA,FOLLOW_ALPHA_in_secondary_key4058); if (state.failed) return retval; 
            	        	        	if ( (state.backtracking==0) ) stream_ALPHA.Add(ALPHA55);


            	        	        }
            	        	        break;
            	        	    case 2 :
            	        	        // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:43: TRIGRAM
            	        	        {
            	        	        	TRIGRAM56=(IToken)Match(input,TRIGRAM,FOLLOW_TRIGRAM_in_secondary_key4062); if (state.failed) return retval; 
            	        	        	if ( (state.backtracking==0) ) stream_TRIGRAM.Add(TRIGRAM56);


            	        	        }
            	        	        break;

            	        	}

            	        	char_literal57=(IToken)Match(input,RPAREN,FOLLOW_RPAREN_in_secondary_key4065); if (state.failed) return retval; 
            	        	if ( (state.backtracking==0) ) stream_RPAREN.Add(char_literal57);


            	        }
            	        break;

            	}



            	// AST REWRITE
            	// elements:          b, a, c
            	// token labels:      b, c
            	// rule labels:       retval, a
            	// token list labels: 
            	// rule list labels:  
            	// wildcard labels: 
            	if ( (state.backtracking==0) ) {
            	retval.Tree = root_0;
            	RewriteRuleTokenStream stream_b = new RewriteRuleTokenStream(adaptor, "token b", b);
            	RewriteRuleTokenStream stream_c = new RewriteRuleTokenStream(adaptor, "token c", c);
            	RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null);
            	RewriteRuleSubtreeStream stream_a = new RewriteRuleSubtreeStream(adaptor, "rule a", a!=null ? a.Tree : null);

            	root_0 = (object)adaptor.GetNilNode();
            	// 667:58: -> ^( SECONDARY_KEY $a ( $b)? ( $c)? )
            	{
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:61: ^( SECONDARY_KEY $a ( $b)? ( $c)? )
            	    {
            	    object root_1 = (object)adaptor.GetNilNode();
            	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(SECONDARY_KEY, "SECONDARY_KEY"), root_1);

            	    adaptor.AddChild(root_1, stream_a.NextTree());
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:80: ( $b)?
            	    if ( stream_b.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_b.NextNode());

            	    }
            	    stream_b.Reset();
            	    // C:\\Users\\jeremy\\svn\\algenta\\Algenta.Data.Parsing.Blaise\\Blaise.g:667:84: ( $c)?
            	    if ( stream_c.HasNext() )
            	    {
            	        adaptor.AddChild(root_1, stream_c.NextNode());

            	    }
            	    stream_c.Reset();

            	    adaptor.AddChild(root_0, root_1);
            	    }

            	}

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

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

            if ( (state.backtracking==0) )
            {	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;
    }
Ejemplo n.º 29
0
    // throws RecognitionException [1]
    // $ANTLR start "coord_part"
    // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:460:1: coord_part : ( idd -> ^( IM_DONTCARE idd ) | '{' idd '}' -> ^( IM_DONTCARE '{' idd '}' ) | ( idd '=' numberunit ( ',' )? )+ -> ^( IM_DONTCARE ( idd '=' numberunit ( ',' )? )+ ) );
    public simpletikzParser.coord_part_return coord_part()
    {
        simpletikzParser.coord_part_return retval = new simpletikzParser.coord_part_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken char_literal285 = null;
        IToken char_literal287 = null;
        IToken char_literal289 = null;
        IToken char_literal291 = null;
        simpletikzParser.idd_return idd284 = default(simpletikzParser.idd_return);

        simpletikzParser.idd_return idd286 = default(simpletikzParser.idd_return);

        simpletikzParser.idd_return idd288 = default(simpletikzParser.idd_return);

        simpletikzParser.numberunit_return numberunit290 = default(simpletikzParser.numberunit_return);

        object char_literal285_tree=null;
        object char_literal287_tree=null;
        object char_literal289_tree=null;
        object char_literal291_tree=null;
        RewriteRuleTokenStream stream_45 = new RewriteRuleTokenStream(adaptor,"token 45");
        RewriteRuleTokenStream stream_43 = new RewriteRuleTokenStream(adaptor,"token 43");
        RewriteRuleTokenStream stream_44 = new RewriteRuleTokenStream(adaptor,"token 44");
        RewriteRuleTokenStream stream_47 = new RewriteRuleTokenStream(adaptor,"token 47");
        RewriteRuleSubtreeStream stream_numberunit = new RewriteRuleSubtreeStream(adaptor,"rule numberunit");
        RewriteRuleSubtreeStream stream_idd = new RewriteRuleSubtreeStream(adaptor,"rule idd");
        try
        {
            // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:461:2: ( idd -> ^( IM_DONTCARE idd ) | '{' idd '}' -> ^( IM_DONTCARE '{' idd '}' ) | ( idd '=' numberunit ( ',' )? )+ -> ^( IM_DONTCARE ( idd '=' numberunit ( ',' )? )+ ) )
            int alt73 = 3;
            alt73 = dfa73.Predict(input);
            switch (alt73)
            {
                case 1 :
                    // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:461:4: idd
                    {
                        PushFollow(FOLLOW_idd_in_coord_part3010);
                        idd284 = idd();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking==0 ) stream_idd.Add(idd284.Tree);

                        // AST REWRITE
                        // elements:          idd
                        // token labels:
                        // rule labels:       retval
                        // token list labels:
                        // rule list labels:
                        if ( state.backtracking==0 ) {
                        retval.Tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                        root_0 = (object)adaptor.GetNilNode();
                        // 461:9: -> ^( IM_DONTCARE idd )
                        {
                            // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:461:12: ^( IM_DONTCARE idd )
                            {
                            object root_1 = (object)adaptor.GetNilNode();
                            root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(IM_DONTCARE, "IM_DONTCARE"), root_1);

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

                            adaptor.AddChild(root_0, root_1);
                            }

                        }

                        retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 2 :
                    // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:462:4: '{' idd '}'
                    {
                        char_literal285=(IToken)Match(input,43,FOLLOW_43_in_coord_part3025); if (state.failed) return retval;
                        if ( state.backtracking==0 ) stream_43.Add(char_literal285);

                        PushFollow(FOLLOW_idd_in_coord_part3027);
                        idd286 = idd();
                        state.followingStackPointer--;
                        if (state.failed) return retval;
                        if ( state.backtracking==0 ) stream_idd.Add(idd286.Tree);
                        char_literal287=(IToken)Match(input,44,FOLLOW_44_in_coord_part3029); if (state.failed) return retval;
                        if ( state.backtracking==0 ) stream_44.Add(char_literal287);

                        // AST REWRITE
                        // elements:          idd, 43, 44
                        // token labels:
                        // rule labels:       retval
                        // token list labels:
                        // rule list labels:
                        if ( state.backtracking==0 ) {
                        retval.Tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                        root_0 = (object)adaptor.GetNilNode();
                        // 462:16: -> ^( IM_DONTCARE '{' idd '}' )
                        {
                            // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:462:19: ^( IM_DONTCARE '{' idd '}' )
                            {
                            object root_1 = (object)adaptor.GetNilNode();
                            root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(IM_DONTCARE, "IM_DONTCARE"), root_1);

                            adaptor.AddChild(root_1, stream_43.NextNode());
                            adaptor.AddChild(root_1, stream_idd.NextTree());
                            adaptor.AddChild(root_1, stream_44.NextNode());

                            adaptor.AddChild(root_0, root_1);
                            }

                        }

                        retval.Tree = root_0;retval.Tree = root_0;}
                    }
                    break;
                case 3 :
                    // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:4: ( idd '=' numberunit ( ',' )? )+
                    {
                        // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:4: ( idd '=' numberunit ( ',' )? )+
                        int cnt72 = 0;
                        do
                        {
                            int alt72 = 2;
                            int LA72_0 = input.LA(1);

                            if ( (LA72_0 == 78) )
                            {
                                int LA72_2 = input.LA(2);

                                if ( ((LA72_2 >= FLOAT_WO_EXP && LA72_2 <= INT)) )
                                {
                                    int LA72_4 = input.LA(3);

                                    if ( ((LA72_4 >= 57 && LA72_4 <= 62)) )
                                    {
                                        int LA72_5 = input.LA(4);

                                        if ( ((LA72_5 >= IM_PATH && LA72_5 <= 42) || (LA72_5 >= 45 && LA72_5 <= 46) || LA72_5 == 51 || (LA72_5 >= 57 && LA72_5 <= 94)) )
                                        {
                                            alt72 = 1;
                                        }

                                    }
                                    else if ( ((LA72_4 >= IM_PATH && LA72_4 <= 42) || (LA72_4 >= 45 && LA72_4 <= 46) || LA72_4 == 51 || (LA72_4 >= 63 && LA72_4 <= 94)) )
                                    {
                                        alt72 = 1;
                                    }

                                }
                                else if ( ((LA72_2 >= IM_PATH && LA72_2 <= COMMAND) || (LA72_2 >= WS && LA72_2 <= 42) || (LA72_2 >= 45 && LA72_2 <= 46) || LA72_2 == 51 || (LA72_2 >= 57 && LA72_2 <= 94)) )
                                {
                                    alt72 = 1;
                                }

                            }
                            else if ( ((LA72_0 >= IM_PATH && LA72_0 <= 42) || LA72_0 == 46 || LA72_0 == 51 || (LA72_0 >= 57 && LA72_0 <= 77) || (LA72_0 >= 79 && LA72_0 <= 94)) )
                            {
                                alt72 = 1;
                            }

                            switch (alt72)
                            {
                                case 1 :
                                    // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:5: idd '=' numberunit ( ',' )?
                                    {
                                        PushFollow(FOLLOW_idd_in_coord_part3047);
                                        idd288 = idd();
                                        state.followingStackPointer--;
                                        if (state.failed) return retval;
                                        if ( state.backtracking==0 ) stream_idd.Add(idd288.Tree);
                                        char_literal289=(IToken)Match(input,45,FOLLOW_45_in_coord_part3049); if (state.failed) return retval;
                                        if ( state.backtracking==0 ) stream_45.Add(char_literal289);

                                        PushFollow(FOLLOW_numberunit_in_coord_part3051);
                                        numberunit290 = numberunit();
                                        state.followingStackPointer--;
                                        if (state.failed) return retval;
                                        if ( state.backtracking==0 ) stream_numberunit.Add(numberunit290.Tree);
                                        // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:24: ( ',' )?
                                        int alt71 = 2;
                                        int LA71_0 = input.LA(1);

                                        if ( (LA71_0 == 47) )
                                        {
                                            alt71 = 1;
                                        }
                                        switch (alt71)
                                        {
                                            case 1 :
                                                // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:24: ','
                                                {
                                                    char_literal291=(IToken)Match(input,47,FOLLOW_47_in_coord_part3053); if (state.failed) return retval;
                                                    if ( state.backtracking==0 ) stream_47.Add(char_literal291);

                                                }
                                                break;

                                        }

                                    }
                                    break;

                                default:
                                    if ( cnt72 >= 1 ) goto loop72;
                                    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
                                        EarlyExitException eee =
                                            new EarlyExitException(72, input);
                                        throw eee;
                            }
                            cnt72++;
                        } while (true);

                        loop72:
                            ;	// Stops C# compiler whinging that label 'loop72' has no statements

                        // AST REWRITE
                        // elements:          47, numberunit, idd, 45
                        // token labels:
                        // rule labels:       retval
                        // token list labels:
                        // rule list labels:
                        if ( state.backtracking==0 ) {
                        retval.Tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));

                        root_0 = (object)adaptor.GetNilNode();
                        // 463:31: -> ^( IM_DONTCARE ( idd '=' numberunit ( ',' )? )+ )
                        {
                            // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:34: ^( IM_DONTCARE ( idd '=' numberunit ( ',' )? )+ )
                            {
                            object root_1 = (object)adaptor.GetNilNode();
                            root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(IM_DONTCARE, "IM_DONTCARE"), root_1);

                            if ( !(stream_numberunit.HasNext() || stream_idd.HasNext() || stream_45.HasNext()) ) {
                                throw new RewriteEarlyExitException();
                            }
                            while ( stream_numberunit.HasNext() || stream_idd.HasNext() || stream_45.HasNext() )
                            {
                                adaptor.AddChild(root_1, stream_idd.NextTree());
                                adaptor.AddChild(root_1, stream_45.NextNode());
                                adaptor.AddChild(root_1, stream_numberunit.NextTree());
                                // C:\\_TUHH\\SVN\\projects\\wsn\\dibus\\SvgMap\\SvgNaviMap\\bargraph\\tikzedt\\TikzParser\\simpletikz.g:463:69: ( ',' )?
                                if ( stream_47.HasNext() )
                                {
                                    adaptor.AddChild(root_1, stream_47.NextNode());

                                }
                                stream_47.Reset();

                            }
                            stream_numberunit.Reset();
                            stream_idd.Reset();
                            stream_45.Reset();

                            adaptor.AddChild(root_0, root_1);
                            }

                        }

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

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

            if ( state.backtracking==0 )
            {	retval.Tree = (object)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);}
        }

            catch (RecognitionException e) {
                throw e;
            }
        finally
        {
        }
        return retval;
    }
Ejemplo n.º 30
0
        // $ANTLR start "formalParameterList"
        // ES3.g3:1290:1: formalParameterList : LPAREN ( Identifier ( COMMA Identifier )* )? RPAREN -> ^( ARGS ( Identifier )* ) ;
        public ES3Parser.formalParameterList_return formalParameterList() // throws RecognitionException [1]
        {
            ES3Parser.formalParameterList_return retval = new ES3Parser.formalParameterList_return();
            retval.Start = input.LT(1);

            object root_0 = null;

            IToken LPAREN270 = null;
            IToken Identifier271 = null;
            IToken COMMA272 = null;
            IToken Identifier273 = null;
            IToken RPAREN274 = null;

            object LPAREN270_tree = null;
            object Identifier271_tree = null;
            object COMMA272_tree = null;
            object Identifier273_tree = null;
            object RPAREN274_tree = null;
            RewriteRuleTokenStream stream_RPAREN = new RewriteRuleTokenStream(adaptor, "token RPAREN");
            RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream(adaptor, "token COMMA");
            RewriteRuleTokenStream stream_Identifier = new RewriteRuleTokenStream(adaptor, "token Identifier");
            RewriteRuleTokenStream stream_LPAREN = new RewriteRuleTokenStream(adaptor, "token LPAREN");

            try
            {
                // ES3.g3:1291:2: ( LPAREN ( Identifier ( COMMA Identifier )* )? RPAREN -> ^( ARGS ( Identifier )* ) )
                // ES3.g3:1291:4: LPAREN ( Identifier ( COMMA Identifier )* )? RPAREN
                {
                    LPAREN270 = (IToken)Match(input, LPAREN, FOLLOW_LPAREN_in_formalParameterList5693);
                    stream_LPAREN.Add(LPAREN270);

                    // ES3.g3:1291:11: ( Identifier ( COMMA Identifier )* )?
                    int alt71 = 2;
                    int LA71_0 = input.LA(1);

                    if ((LA71_0 == Identifier))
                    {
                        alt71 = 1;
                    }
                    switch (alt71)
                    {
                        case 1:
                            // ES3.g3:1291:13: Identifier ( COMMA Identifier )*
                            {
                                Identifier271 = (IToken)Match(input, Identifier, FOLLOW_Identifier_in_formalParameterList5697);
                                stream_Identifier.Add(Identifier271);

                                // ES3.g3:1291:24: ( COMMA Identifier )*
                                do
                                {
                                    int alt70 = 2;
                                    int LA70_0 = input.LA(1);

                                    if ((LA70_0 == COMMA))
                                    {
                                        alt70 = 1;
                                    }


                                    switch (alt70)
                                    {
                                        case 1:
                                            // ES3.g3:1291:26: COMMA Identifier
                                            {
                                                COMMA272 = (IToken)Match(input, COMMA, FOLLOW_COMMA_in_formalParameterList5701);
                                                stream_COMMA.Add(COMMA272);

                                                Identifier273 = (IToken)Match(input, Identifier, FOLLOW_Identifier_in_formalParameterList5703);
                                                stream_Identifier.Add(Identifier273);


                                            }
                                            break;

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

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


                            }
                            break;

                    }

                    RPAREN274 = (IToken)Match(input, RPAREN, FOLLOW_RPAREN_in_formalParameterList5711);
                    stream_RPAREN.Add(RPAREN274);



                    // AST REWRITE
                    // elements:          Identifier
                    // 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 = (object)adaptor.GetNilNode();
                    // 1292:2: -> ^( ARGS ( Identifier )* )
                    {
                        // ES3.g3:1292:5: ^( ARGS ( Identifier )* )
                        {
                            object root_1 = (object)adaptor.GetNilNode();
                            root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(ARGS, "ARGS"), root_1);

                            // ES3.g3:1292:13: ( Identifier )*
                            while (stream_Identifier.HasNext())
                            {
                                adaptor.AddChild(root_1, stream_Identifier.NextNode());

                            }
                            stream_Identifier.Reset();

                            adaptor.AddChild(root_0, root_1);
                        }

                    }

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

                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;
        }