// $ANTLR start "atom"
    // Hql.g:544:1: atom : primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* ;
    public HqlParser.atom_return atom() // throws RecognitionException [1]
    {   
        HqlParser.atom_return retval = new HqlParser.atom_return();
        retval.Start = input.LT(1);

        IASTNode root_0 = null;

        IToken op = null;
        IToken lb = null;
        IToken DOT236 = null;
        IToken CLOSE239 = null;
        IToken CLOSE_BRACKET241 = null;
        HqlParser.primaryExpression_return primaryExpression235 = default(HqlParser.primaryExpression_return);

        HqlParser.identifier_return identifier237 = default(HqlParser.identifier_return);

        HqlParser.exprList_return exprList238 = default(HqlParser.exprList_return);

        HqlParser.expression_return expression240 = default(HqlParser.expression_return);


        IASTNode op_tree=null;
        IASTNode lb_tree=null;
        IASTNode DOT236_tree=null;
        IASTNode CLOSE239_tree=null;
        IASTNode CLOSE_BRACKET241_tree=null;

        try 
    	{
            // Hql.g:545:3: ( primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* )
            // Hql.g:545:5: primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            {
            	root_0 = (IASTNode)adaptor.GetNilNode();

            	PushFollow(FOLLOW_primaryExpression_in_atom2786);
            	primaryExpression235 = primaryExpression();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, primaryExpression235.Tree);
            	// Hql.g:546:3: ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            	do 
            	{
            	    int alt83 = 3;
            	    int LA83_0 = input.LA(1);

            	    if ( (LA83_0 == DOT) )
            	    {
            	        alt83 = 1;
            	    }
            	    else if ( (LA83_0 == OPEN_BRACKET) )
            	    {
            	        alt83 = 2;
            	    }


            	    switch (alt83) 
            		{
            			case 1 :
            			    // Hql.g:547:4: DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    {
            			    	DOT236=(IToken)Match(input,DOT,FOLLOW_DOT_in_atom2795); 
            			    		DOT236_tree = (IASTNode)adaptor.Create(DOT236);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(DOT236_tree, root_0);

            			    	PushFollow(FOLLOW_identifier_in_atom2798);
            			    	identifier237 = identifier();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, identifier237.Tree);
            			    	// Hql.g:548:5: ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    	int alt82 = 2;
            			    	int LA82_0 = input.LA(1);

            			    	if ( (LA82_0 == OPEN) )
            			    	{
            			    	    alt82 = 1;
            			    	}
            			    	switch (alt82) 
            			    	{
            			    	    case 1 :
            			    	        // Hql.g:549:6: (op= OPEN exprList CLOSE )
            			    	        {
            			    	        	// Hql.g:549:6: (op= OPEN exprList CLOSE )
            			    	        	// Hql.g:549:8: op= OPEN exprList CLOSE
            			    	        	{
            			    	        		op=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_atom2826); 
            			    	        			op_tree = (IASTNode)adaptor.Create(op);
            			    	        			root_0 = (IASTNode)adaptor.BecomeRoot(op_tree, root_0);

            			    	        		op.Type = METHOD_CALL; 
            			    	        		PushFollow(FOLLOW_exprList_in_atom2831);
            			    	        		exprList238 = exprList();
            			    	        		state.followingStackPointer--;

            			    	        		adaptor.AddChild(root_0, exprList238.Tree);
            			    	        		CLOSE239=(IToken)Match(input,CLOSE,FOLLOW_CLOSE_in_atom2833); 

            			    	        	}


            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;
            			case 2 :
            			    // Hql.g:550:5: lb= OPEN_BRACKET expression CLOSE_BRACKET
            			    {
            			    	lb=(IToken)Match(input,OPEN_BRACKET,FOLLOW_OPEN_BRACKET_in_atom2847); 
            			    		lb_tree = (IASTNode)adaptor.Create(lb);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(lb_tree, root_0);

            			    	lb.Type = INDEX_OP; 
            			    	PushFollow(FOLLOW_expression_in_atom2852);
            			    	expression240 = expression();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, expression240.Tree);
            			    	CLOSE_BRACKET241=(IToken)Match(input,CLOSE_BRACKET,FOLLOW_CLOSE_BRACKET_in_atom2854); 

            			    }
            			    break;

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

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


            }

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

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

        }
        finally 
    	{
        }
        return retval;
    }
示例#2
0
    // $ANTLR start "atom"
    // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:526:1: atom : primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* ;
    public HqlParser.atom_return atom() // throws RecognitionException [1]
    {   
        HqlParser.atom_return retval = new HqlParser.atom_return();
        retval.Start = input.LT(1);

        IASTNode root_0 = null;

        IToken op = null;
        IToken lb = null;
        IToken DOT223 = null;
        IToken CLOSE226 = null;
        IToken CLOSE_BRACKET228 = null;
        HqlParser.primaryExpression_return primaryExpression222 = default(HqlParser.primaryExpression_return);

        HqlParser.identifier_return identifier224 = default(HqlParser.identifier_return);

        HqlParser.exprList_return exprList225 = default(HqlParser.exprList_return);

        HqlParser.expression_return expression227 = default(HqlParser.expression_return);


        IASTNode op_tree=null;
        IASTNode lb_tree=null;
        IASTNode DOT223_tree=null;
        IASTNode CLOSE226_tree=null;
        IASTNode CLOSE_BRACKET228_tree=null;

        try 
    	{
            // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:527:3: ( primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* )
            // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:527:5: primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            {
            	root_0 = (IASTNode)adaptor.GetNilNode();

            	PushFollow(FOLLOW_primaryExpression_in_atom2687);
            	primaryExpression222 = primaryExpression();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, primaryExpression222.Tree);
            	// /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:528:3: ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            	do 
            	{
            	    int alt77 = 3;
            	    int LA77_0 = input.LA(1);

            	    if ( (LA77_0 == DOT) )
            	    {
            	        alt77 = 1;
            	    }
            	    else if ( (LA77_0 == OPEN_BRACKET) )
            	    {
            	        alt77 = 2;
            	    }


            	    switch (alt77) 
            		{
            			case 1 :
            			    // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:529:4: DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    {
            			    	DOT223=(IToken)Match(input,DOT,FOLLOW_DOT_in_atom2696); 
            			    		DOT223_tree = (IASTNode)adaptor.Create(DOT223);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(DOT223_tree, root_0);

            			    	PushFollow(FOLLOW_identifier_in_atom2699);
            			    	identifier224 = identifier();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, identifier224.Tree);
            			    	// /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:530:5: ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    	int alt76 = 2;
            			    	int LA76_0 = input.LA(1);

            			    	if ( (LA76_0 == OPEN) )
            			    	{
            			    	    alt76 = 1;
            			    	}
            			    	switch (alt76) 
            			    	{
            			    	    case 1 :
            			    	        // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:531:6: (op= OPEN exprList CLOSE )
            			    	        {
            			    	        	// /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:531:6: (op= OPEN exprList CLOSE )
            			    	        	// /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:531:8: op= OPEN exprList CLOSE
            			    	        	{
            			    	        		op=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_atom2727); 
            			    	        			op_tree = (IASTNode)adaptor.Create(op);
            			    	        			root_0 = (IASTNode)adaptor.BecomeRoot(op_tree, root_0);

            			    	        		op.Type = METHOD_CALL; 
            			    	        		PushFollow(FOLLOW_exprList_in_atom2732);
            			    	        		exprList225 = exprList();
            			    	        		state.followingStackPointer--;

            			    	        		adaptor.AddChild(root_0, exprList225.Tree);
            			    	        		CLOSE226=(IToken)Match(input,CLOSE,FOLLOW_CLOSE_in_atom2734); 

            			    	        	}


            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;
            			case 2 :
            			    // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:532:5: lb= OPEN_BRACKET expression CLOSE_BRACKET
            			    {
            			    	lb=(IToken)Match(input,OPEN_BRACKET,FOLLOW_OPEN_BRACKET_in_atom2748); 
            			    		lb_tree = (IASTNode)adaptor.Create(lb);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(lb_tree, root_0);

            			    	lb.Type = INDEX_OP; 
            			    	PushFollow(FOLLOW_expression_in_atom2753);
            			    	expression227 = expression();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, expression227.Tree);
            			    	CLOSE_BRACKET228=(IToken)Match(input,CLOSE_BRACKET,FOLLOW_CLOSE_BRACKET_in_atom2755); 

            			    }
            			    break;

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

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


            }

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

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

        }
        finally 
    	{
        }
        return retval;
    }
示例#3
0
    // $ANTLR start "atom"
    // Hql.g:539:1: atom : primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* ;
    public HqlParser.atom_return atom() // throws RecognitionException [1]
    {   
        HqlParser.atom_return retval = new HqlParser.atom_return();
        retval.Start = input.LT(1);

        IASTNode root_0 = null;

        IToken op = null;
        IToken lb = null;
        IToken DOT230 = null;
        IToken CLOSE233 = null;
        IToken CLOSE_BRACKET235 = null;
        HqlParser.primaryExpression_return primaryExpression229 = default(HqlParser.primaryExpression_return);

        HqlParser.identifier_return identifier231 = default(HqlParser.identifier_return);

        HqlParser.exprList_return exprList232 = default(HqlParser.exprList_return);

        HqlParser.expression_return expression234 = default(HqlParser.expression_return);


        IASTNode op_tree=null;
        IASTNode lb_tree=null;
        IASTNode DOT230_tree=null;
        IASTNode CLOSE233_tree=null;
        IASTNode CLOSE_BRACKET235_tree=null;

        try 
    	{
            // Hql.g:540:3: ( primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )* )
            // Hql.g:540:5: primaryExpression ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            {
            	root_0 = (IASTNode)adaptor.GetNilNode();

            	PushFollow(FOLLOW_primaryExpression_in_atom2749);
            	primaryExpression229 = primaryExpression();
            	state.followingStackPointer--;

            	adaptor.AddChild(root_0, primaryExpression229.Tree);
            	// Hql.g:541:3: ( DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )? | lb= OPEN_BRACKET expression CLOSE_BRACKET )*
            	do 
            	{
            	    int alt79 = 3;
            	    int LA79_0 = input.LA(1);

            	    if ( (LA79_0 == DOT) )
            	    {
            	        alt79 = 1;
            	    }
            	    else if ( (LA79_0 == OPEN_BRACKET) )
            	    {
            	        alt79 = 2;
            	    }


            	    switch (alt79) 
            		{
            			case 1 :
            			    // Hql.g:542:4: DOT identifier ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    {
            			    	DOT230=(IToken)Match(input,DOT,FOLLOW_DOT_in_atom2758); 
            			    		DOT230_tree = (IASTNode)adaptor.Create(DOT230);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(DOT230_tree, root_0);

            			    	PushFollow(FOLLOW_identifier_in_atom2761);
            			    	identifier231 = identifier();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, identifier231.Tree);
            			    	// Hql.g:543:5: ( options {greedy=true; } : (op= OPEN exprList CLOSE ) )?
            			    	int alt78 = 2;
            			    	int LA78_0 = input.LA(1);

            			    	if ( (LA78_0 == OPEN) )
            			    	{
            			    	    alt78 = 1;
            			    	}
            			    	switch (alt78) 
            			    	{
            			    	    case 1 :
            			    	        // Hql.g:544:6: (op= OPEN exprList CLOSE )
            			    	        {
            			    	        	// Hql.g:544:6: (op= OPEN exprList CLOSE )
            			    	        	// Hql.g:544:8: op= OPEN exprList CLOSE
            			    	        	{
            			    	        		op=(IToken)Match(input,OPEN,FOLLOW_OPEN_in_atom2789); 
            			    	        			op_tree = (IASTNode)adaptor.Create(op);
            			    	        			root_0 = (IASTNode)adaptor.BecomeRoot(op_tree, root_0);

            			    	        		op.Type = METHOD_CALL; 
            			    	        		PushFollow(FOLLOW_exprList_in_atom2794);
            			    	        		exprList232 = exprList();
            			    	        		state.followingStackPointer--;

            			    	        		adaptor.AddChild(root_0, exprList232.Tree);
            			    	        		CLOSE233=(IToken)Match(input,CLOSE,FOLLOW_CLOSE_in_atom2796); 

            			    	        	}


            			    	        }
            			    	        break;

            			    	}


            			    }
            			    break;
            			case 2 :
            			    // Hql.g:545:5: lb= OPEN_BRACKET expression CLOSE_BRACKET
            			    {
            			    	lb=(IToken)Match(input,OPEN_BRACKET,FOLLOW_OPEN_BRACKET_in_atom2810); 
            			    		lb_tree = (IASTNode)adaptor.Create(lb);
            			    		root_0 = (IASTNode)adaptor.BecomeRoot(lb_tree, root_0);

            			    	lb.Type = INDEX_OP; 
            			    	PushFollow(FOLLOW_expression_in_atom2815);
            			    	expression234 = expression();
            			    	state.followingStackPointer--;

            			    	adaptor.AddChild(root_0, expression234.Tree);
            			    	CLOSE_BRACKET235=(IToken)Match(input,CLOSE_BRACKET,FOLLOW_CLOSE_BRACKET_in_atom2817); 

            			    }
            			    break;

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

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


            }

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

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

        }
        finally 
    	{
        }
        return retval;
    }