Exemple #1
0
    // $ANTLR start "mathAtom"
    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:375:1: mathAtom : ( '(' conditionalExpression ')' | IntegerAtom | FloatAtom | BooleanAtom | 'new' Sprite '(' ( arguments )? ')' -> ^( Sprite ( arguments )? ) | 'new' Animation '(' ( arguments )? ')' -> ^( Animation ( arguments )? ) | Identifier | methodCall | stringQuote | Layer -> ^( STRINGNOQUOTES Layer ) | Origin -> ^( STRINGNOQUOTES Origin ) );
    public SGLParser.mathAtom_return mathAtom() // throws RecognitionException [1]
    {   
        SGLParser.mathAtom_return retval = new SGLParser.mathAtom_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken char_literal137 = null;
        IToken char_literal139 = null;
        IToken IntegerAtom140 = null;
        IToken FloatAtom141 = null;
        IToken BooleanAtom142 = null;
        IToken string_literal143 = null;
        IToken Sprite144 = null;
        IToken char_literal145 = null;
        IToken char_literal147 = null;
        IToken string_literal148 = null;
        IToken Animation149 = null;
        IToken char_literal150 = null;
        IToken char_literal152 = null;
        IToken Identifier153 = null;
        IToken Layer156 = null;
        IToken Origin157 = null;
        SGLParser.conditionalExpression_return conditionalExpression138 = default(SGLParser.conditionalExpression_return);

        SGLParser.arguments_return arguments146 = default(SGLParser.arguments_return);

        SGLParser.arguments_return arguments151 = default(SGLParser.arguments_return);

        SGLParser.methodCall_return methodCall154 = default(SGLParser.methodCall_return);

        SGLParser.stringQuote_return stringQuote155 = default(SGLParser.stringQuote_return);


        object char_literal137_tree=null;
        object char_literal139_tree=null;
        object IntegerAtom140_tree=null;
        object FloatAtom141_tree=null;
        object BooleanAtom142_tree=null;
        object string_literal143_tree=null;
        object Sprite144_tree=null;
        object char_literal145_tree=null;
        object char_literal147_tree=null;
        object string_literal148_tree=null;
        object Animation149_tree=null;
        object char_literal150_tree=null;
        object char_literal152_tree=null;
        object Identifier153_tree=null;
        object Layer156_tree=null;
        object Origin157_tree=null;
        RewriteRuleTokenStream stream_Layer = new RewriteRuleTokenStream(adaptor,"token Layer");
        RewriteRuleTokenStream stream_Animation = new RewriteRuleTokenStream(adaptor,"token Animation");
        RewriteRuleTokenStream stream_52 = new RewriteRuleTokenStream(adaptor,"token 52");
        RewriteRuleTokenStream stream_53 = new RewriteRuleTokenStream(adaptor,"token 53");
        RewriteRuleTokenStream stream_Origin = new RewriteRuleTokenStream(adaptor,"token Origin");
        RewriteRuleTokenStream stream_84 = new RewriteRuleTokenStream(adaptor,"token 84");
        RewriteRuleTokenStream stream_Sprite = new RewriteRuleTokenStream(adaptor,"token Sprite");
        RewriteRuleSubtreeStream stream_arguments = new RewriteRuleSubtreeStream(adaptor,"rule arguments");
        try 
    	{
            // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:376:5: ( '(' conditionalExpression ')' | IntegerAtom | FloatAtom | BooleanAtom | 'new' Sprite '(' ( arguments )? ')' -> ^( Sprite ( arguments )? ) | 'new' Animation '(' ( arguments )? ')' -> ^( Animation ( arguments )? ) | Identifier | methodCall | stringQuote | Layer -> ^( STRINGNOQUOTES Layer ) | Origin -> ^( STRINGNOQUOTES Origin ) )
            int alt36 = 11;
            alt36 = dfa36.Predict(input);
            switch (alt36) 
            {
                case 1 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:376:7: '(' conditionalExpression ')'
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	char_literal137=(IToken)Match(input,52,FOLLOW_52_in_mathAtom1580); 
                    	PushFollow(FOLLOW_conditionalExpression_in_mathAtom1583);
                    	conditionalExpression138 = conditionalExpression();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, conditionalExpression138.Tree);
                    	char_literal139=(IToken)Match(input,53,FOLLOW_53_in_mathAtom1585); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:377:9: IntegerAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	IntegerAtom140=(IToken)Match(input,IntegerAtom,FOLLOW_IntegerAtom_in_mathAtom1596); 
                    		IntegerAtom140_tree = (object)adaptor.Create(IntegerAtom140);
                    		adaptor.AddChild(root_0, IntegerAtom140_tree);


                    }
                    break;
                case 3 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:378:7: FloatAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	FloatAtom141=(IToken)Match(input,FloatAtom,FOLLOW_FloatAtom_in_mathAtom1604); 
                    		FloatAtom141_tree = (object)adaptor.Create(FloatAtom141);
                    		adaptor.AddChild(root_0, FloatAtom141_tree);


                    }
                    break;
                case 4 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:379:9: BooleanAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	BooleanAtom142=(IToken)Match(input,BooleanAtom,FOLLOW_BooleanAtom_in_mathAtom1614); 
                    		BooleanAtom142_tree = (object)adaptor.Create(BooleanAtom142);
                    		adaptor.AddChild(root_0, BooleanAtom142_tree);


                    }
                    break;
                case 5 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:381:9: 'new' Sprite '(' ( arguments )? ')'
                    {
                    	string_literal143=(IToken)Match(input,84,FOLLOW_84_in_mathAtom1625);  
                    	stream_84.Add(string_literal143);

                    	Sprite144=(IToken)Match(input,Sprite,FOLLOW_Sprite_in_mathAtom1627);  
                    	stream_Sprite.Add(Sprite144);

                    	char_literal145=(IToken)Match(input,52,FOLLOW_52_in_mathAtom1629);  
                    	stream_52.Add(char_literal145);

                    	// C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:381:26: ( arguments )?
                    	int alt34 = 2;
                    	int LA34_0 = input.LA(1);

                    	if ( (LA34_0 == Identifier || (LA34_0 >= IntegerAtom && LA34_0 <= BooleanAtom) || (LA34_0 >= Layer && LA34_0 <= StringAtom) || LA34_0 == 52 || LA34_0 == 78 || LA34_0 == 84) )
                    	{
                    	    alt34 = 1;
                    	}
                    	switch (alt34) 
                    	{
                    	    case 1 :
                    	        // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:381:26: arguments
                    	        {
                    	        	PushFollow(FOLLOW_arguments_in_mathAtom1631);
                    	        	arguments146 = arguments();
                    	        	state.followingStackPointer--;

                    	        	stream_arguments.Add(arguments146.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal147=(IToken)Match(input,53,FOLLOW_53_in_mathAtom1634);  
                    	stream_53.Add(char_literal147);



                    	// AST REWRITE
                    	// elements:          Sprite, arguments
                    	// 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();
                    	// 381:41: -> ^( Sprite ( arguments )? )
                    	{
                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:381:44: ^( Sprite ( arguments )? )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot(stream_Sprite.NextNode(), root_1);

                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:381:53: ( arguments )?
                    	    if ( stream_arguments.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_arguments.NextTree());

                    	    }
                    	    stream_arguments.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;
                case 6 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:382:9: 'new' Animation '(' ( arguments )? ')'
                    {
                    	string_literal148=(IToken)Match(input,84,FOLLOW_84_in_mathAtom1653);  
                    	stream_84.Add(string_literal148);

                    	Animation149=(IToken)Match(input,Animation,FOLLOW_Animation_in_mathAtom1655);  
                    	stream_Animation.Add(Animation149);

                    	char_literal150=(IToken)Match(input,52,FOLLOW_52_in_mathAtom1657);  
                    	stream_52.Add(char_literal150);

                    	// C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:382:29: ( arguments )?
                    	int alt35 = 2;
                    	int LA35_0 = input.LA(1);

                    	if ( (LA35_0 == Identifier || (LA35_0 >= IntegerAtom && LA35_0 <= BooleanAtom) || (LA35_0 >= Layer && LA35_0 <= StringAtom) || LA35_0 == 52 || LA35_0 == 78 || LA35_0 == 84) )
                    	{
                    	    alt35 = 1;
                    	}
                    	switch (alt35) 
                    	{
                    	    case 1 :
                    	        // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:382:29: arguments
                    	        {
                    	        	PushFollow(FOLLOW_arguments_in_mathAtom1659);
                    	        	arguments151 = arguments();
                    	        	state.followingStackPointer--;

                    	        	stream_arguments.Add(arguments151.Tree);

                    	        }
                    	        break;

                    	}

                    	char_literal152=(IToken)Match(input,53,FOLLOW_53_in_mathAtom1662);  
                    	stream_53.Add(char_literal152);



                    	// AST REWRITE
                    	// elements:          arguments, Animation
                    	// 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();
                    	// 382:44: -> ^( Animation ( arguments )? )
                    	{
                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:382:47: ^( Animation ( arguments )? )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot(stream_Animation.NextNode(), root_1);

                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:382:59: ( arguments )?
                    	    if ( stream_arguments.HasNext() )
                    	    {
                    	        adaptor.AddChild(root_1, stream_arguments.NextTree());

                    	    }
                    	    stream_arguments.Reset();

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;
                case 7 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:384:4: Identifier
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	Identifier153=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_mathAtom1678); 
                    		Identifier153_tree = (object)adaptor.Create(Identifier153);
                    		adaptor.AddChild(root_0, Identifier153_tree);


                    }
                    break;
                case 8 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:385:4: methodCall
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_methodCall_in_mathAtom1683);
                    	methodCall154 = methodCall();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, methodCall154.Tree);

                    }
                    break;
                case 9 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:386:4: stringQuote
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_stringQuote_in_mathAtom1688);
                    	stringQuote155 = stringQuote();
                    	state.followingStackPointer--;

                    	adaptor.AddChild(root_0, stringQuote155.Tree);

                    }
                    break;
                case 10 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:387:4: Layer
                    {
                    	Layer156=(IToken)Match(input,Layer,FOLLOW_Layer_in_mathAtom1693);  
                    	stream_Layer.Add(Layer156);



                    	// AST REWRITE
                    	// elements:          Layer
                    	// 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();
                    	// 387:10: -> ^( STRINGNOQUOTES Layer )
                    	{
                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:387:13: ^( STRINGNOQUOTES Layer )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(STRINGNOQUOTES, "STRINGNOQUOTES"), root_1);

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

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

                    	retval.Tree = root_0;retval.Tree = root_0;
                    }
                    break;
                case 11 :
                    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:388:4: Origin
                    {
                    	Origin157=(IToken)Match(input,Origin,FOLLOW_Origin_in_mathAtom1706);  
                    	stream_Origin.Add(Origin157);



                    	// AST REWRITE
                    	// elements:          Origin
                    	// 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();
                    	// 388:11: -> ^( STRINGNOQUOTES Origin )
                    	{
                    	    // C:\\Users\\Dominik Halfkann\\Documents\\Visual Studio 2010\\Projects\\SGLParserTester\\SGL\\AntlrParser\\SGL.g:388:14: ^( STRINGNOQUOTES Origin )
                    	    {
                    	    object root_1 = (object)adaptor.GetNilNode();
                    	    root_1 = (object)adaptor.BecomeRoot((object)adaptor.Create(STRINGNOQUOTES, "STRINGNOQUOTES"), root_1);

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

                    	    adaptor.AddChild(root_0, root_1);
                    	    }

                    	}

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

            }
            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;
    }
Exemple #2
0
    // $ANTLR start "mathAtom"
    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:341:1: mathAtom : ( '(' expression ')' | IntAtom | FloatAtom | BooleanAtom | stringAtom | LayerAtom | OriginAtom | LoopTypeAtom | LoopTriggerAtom | ColorAtom | Null | lookup );
    public SGLParser.mathAtom_return mathAtom() // throws RecognitionException [1]
    {   
        SGLParser.mathAtom_return retval = new SGLParser.mathAtom_return();
        retval.Start = input.LT(1);
        int mathAtom_StartIndex = input.Index();
        object root_0 = null;

        IToken char_literal110 = null;
        IToken char_literal112 = null;
        IToken IntAtom113 = null;
        IToken FloatAtom114 = null;
        IToken BooleanAtom115 = null;
        IToken LayerAtom117 = null;
        IToken OriginAtom118 = null;
        IToken LoopTypeAtom119 = null;
        IToken LoopTriggerAtom120 = null;
        IToken ColorAtom121 = null;
        IToken Null122 = null;
        SGLParser.expression_return expression111 = default(SGLParser.expression_return);

        SGLParser.stringAtom_return stringAtom116 = default(SGLParser.stringAtom_return);

        SGLParser.lookup_return lookup123 = default(SGLParser.lookup_return);


        object char_literal110_tree=null;
        object char_literal112_tree=null;
        object IntAtom113_tree=null;
        object FloatAtom114_tree=null;
        object BooleanAtom115_tree=null;
        object LayerAtom117_tree=null;
        object OriginAtom118_tree=null;
        object LoopTypeAtom119_tree=null;
        object LoopTriggerAtom120_tree=null;
        object ColorAtom121_tree=null;
        object Null122_tree=null;

        try 
    	{
    	    if ( (state.backtracking > 0) && AlreadyParsedRule(input, 30) ) 
    	    {
    	    	return retval; 
    	    }
            // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:342:2: ( '(' expression ')' | IntAtom | FloatAtom | BooleanAtom | stringAtom | LayerAtom | OriginAtom | LoopTypeAtom | LoopTriggerAtom | ColorAtom | Null | lookup )
            int alt34 = 12;
            switch ( input.LA(1) ) 
            {
            case 59:
            	{
                alt34 = 1;
                }
                break;
            case IntAtom:
            	{
                alt34 = 2;
                }
                break;
            case FloatAtom:
            	{
                alt34 = 3;
                }
                break;
            case BooleanAtom:
            	{
                alt34 = 4;
                }
                break;
            case StringAtom:
            	{
                alt34 = 5;
                }
                break;
            case LayerAtom:
            	{
                alt34 = 6;
                }
                break;
            case OriginAtom:
            	{
                alt34 = 7;
                }
                break;
            case LoopTypeAtom:
            	{
                alt34 = 8;
                }
                break;
            case LoopTriggerAtom:
            	{
                alt34 = 9;
                }
                break;
            case ColorAtom:
            	{
                alt34 = 10;
                }
                break;
            case Null:
            	{
                alt34 = 11;
                }
                break;
            case Identifier:
            	{
                alt34 = 12;
                }
                break;
            	default:
            	    if ( state.backtracking > 0 ) {state.failed = true; return retval;}
            	    NoViableAltException nvae_d34s0 =
            	        new NoViableAltException("", 34, 0, input);

            	    throw nvae_d34s0;
            }

            switch (alt34) 
            {
                case 1 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:342:4: '(' expression ')'
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	char_literal110=(IToken)Match(input,59,FOLLOW_59_in_mathAtom1319); if (state.failed) return retval;
                    	PushFollow(FOLLOW_expression_in_mathAtom1322);
                    	expression111 = expression();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, expression111.Tree);
                    	char_literal112=(IToken)Match(input,60,FOLLOW_60_in_mathAtom1324); if (state.failed) return retval;

                    }
                    break;
                case 2 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:343:7: IntAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	IntAtom113=(IToken)Match(input,IntAtom,FOLLOW_IntAtom_in_mathAtom1336); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{IntAtom113_tree = (object)adaptor.Create(IntAtom113);
                    		adaptor.AddChild(root_0, IntAtom113_tree);
                    	}

                    }
                    break;
                case 3 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:344:7: FloatAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	FloatAtom114=(IToken)Match(input,FloatAtom,FOLLOW_FloatAtom_in_mathAtom1351); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{FloatAtom114_tree = (object)adaptor.Create(FloatAtom114);
                    		adaptor.AddChild(root_0, FloatAtom114_tree);
                    	}

                    }
                    break;
                case 4 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:345:9: BooleanAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	BooleanAtom115=(IToken)Match(input,BooleanAtom,FOLLOW_BooleanAtom_in_mathAtom1367); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{BooleanAtom115_tree = (object)adaptor.Create(BooleanAtom115);
                    		adaptor.AddChild(root_0, BooleanAtom115_tree);
                    	}

                    }
                    break;
                case 5 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:346:4: stringAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_stringAtom_in_mathAtom1378);
                    	stringAtom116 = stringAtom();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, stringAtom116.Tree);

                    }
                    break;
                case 6 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:347:4: LayerAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	LayerAtom117=(IToken)Match(input,LayerAtom,FOLLOW_LayerAtom_in_mathAtom1389); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{LayerAtom117_tree = (object)adaptor.Create(LayerAtom117);
                    		adaptor.AddChild(root_0, LayerAtom117_tree);
                    	}

                    }
                    break;
                case 7 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:348:4: OriginAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	OriginAtom118=(IToken)Match(input,OriginAtom,FOLLOW_OriginAtom_in_mathAtom1400); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{OriginAtom118_tree = (object)adaptor.Create(OriginAtom118);
                    		adaptor.AddChild(root_0, OriginAtom118_tree);
                    	}

                    }
                    break;
                case 8 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:349:4: LoopTypeAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	LoopTypeAtom119=(IToken)Match(input,LoopTypeAtom,FOLLOW_LoopTypeAtom_in_mathAtom1411); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{LoopTypeAtom119_tree = (object)adaptor.Create(LoopTypeAtom119);
                    		adaptor.AddChild(root_0, LoopTypeAtom119_tree);
                    	}

                    }
                    break;
                case 9 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:350:4: LoopTriggerAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	LoopTriggerAtom120=(IToken)Match(input,LoopTriggerAtom,FOLLOW_LoopTriggerAtom_in_mathAtom1424); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{LoopTriggerAtom120_tree = (object)adaptor.Create(LoopTriggerAtom120);
                    		adaptor.AddChild(root_0, LoopTriggerAtom120_tree);
                    	}

                    }
                    break;
                case 10 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:351:4: ColorAtom
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	ColorAtom121=(IToken)Match(input,ColorAtom,FOLLOW_ColorAtom_in_mathAtom1434); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{ColorAtom121_tree = (object)adaptor.Create(ColorAtom121);
                    		adaptor.AddChild(root_0, ColorAtom121_tree);
                    	}

                    }
                    break;
                case 11 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:352:4: Null
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	Null122=(IToken)Match(input,Null,FOLLOW_Null_in_mathAtom1445); if (state.failed) return retval;
                    	if ( state.backtracking == 0 )
                    	{Null122_tree = (object)adaptor.Create(Null122);
                    		adaptor.AddChild(root_0, Null122_tree);
                    	}

                    }
                    break;
                case 12 :
                    // E:\\SGL\\sgl4c#\\NewSGLGramma\\SGL.g:354:4: lookup
                    {
                    	root_0 = (object)adaptor.GetNilNode();

                    	PushFollow(FOLLOW_lookup_in_mathAtom1459);
                    	lookup123 = lookup();
                    	state.followingStackPointer--;
                    	if (state.failed) return retval;
                    	if ( state.backtracking == 0 ) adaptor.AddChild(root_0, lookup123.Tree);

                    }
                    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 
    	{
            if ( state.backtracking > 0 ) 
            {
            	Memoize(input, 30, mathAtom_StartIndex); 
            }
        }
        return retval;
    }