示例#1
0
    // $ANTLR start "index_column"
    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:24:1: index_column[IndexConstraint index] : name= id (opsclass= id )? ;
    public PostgreSQLParser.index_column_return index_column(IndexConstraint index) // throws RecognitionException [1]
    {
        PostgreSQLParser.index_column_return retval = new PostgreSQLParser.index_column_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        PostgreSQLParser.id_return name = default(PostgreSQLParser.id_return);

        PostgreSQLParser.id_return opsclass = default(PostgreSQLParser.id_return);



        try
        {
            // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:24:36: (name= id (opsclass= id )? )
            // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:25:5: name= id (opsclass= id )?
            {
                root_0 = (object)adaptor.GetNilNode();

                PushFollow(FOLLOW_id_in_index_column127);
                name = id();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, name.Tree);
                index.Columns.Add(new ColumnReference(UnquoteName(((name != null) ? input.ToString((IToken)(name.Start), (IToken)(name.Stop)) : null))));
                // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:26:13: (opsclass= id )?
                int alt5  = 2;
                int LA5_0 = input.LA(1);

                if (((LA5_0 >= T_IDENT && LA5_0 <= T_QUOTED_IDENT)))
                {
                    alt5 = 1;
                }
                switch (alt5)
                {
                case 1:
                    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:26:13: opsclass= id
                {
                    PushFollow(FOLLOW_id_in_index_column137);
                    opsclass = id();
                    state.followingStackPointer--;

                    adaptor.AddChild(root_0, opsclass.Tree);
                }
                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);
    }
示例#2
0
    // $ANTLR start "create_index"
    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:14:1: create_index[IndexConstraint index] : CREATE ( UNIQUE )? INDEX ( CONCURRENTLY )? name= index_name ON table_name ( USING id )? LPAREN index_column[index] ( COMMA index_column[index] )* RPAREN ;
    public PostgreSQLParser.create_index_return create_index(IndexConstraint index) // throws RecognitionException [1]
    {
        PostgreSQLParser.create_index_return retval = new PostgreSQLParser.create_index_return();
        retval.Start = input.LT(1);

        object root_0 = null;

        IToken CREATE1       = null;
        IToken UNIQUE2       = null;
        IToken INDEX3        = null;
        IToken CONCURRENTLY4 = null;
        IToken ON5           = null;
        IToken USING7        = null;
        IToken LPAREN9       = null;
        IToken COMMA11       = null;
        IToken RPAREN13      = null;

        PostgreSQLParser.index_name_return name = default(PostgreSQLParser.index_name_return);

        PostgreSQLParser.table_name_return table_name6 = default(PostgreSQLParser.table_name_return);

        PostgreSQLParser.id_return id8 = default(PostgreSQLParser.id_return);

        PostgreSQLParser.index_column_return index_column10 = default(PostgreSQLParser.index_column_return);

        PostgreSQLParser.index_column_return index_column12 = default(PostgreSQLParser.index_column_return);


        object CREATE1_tree       = null;
        object UNIQUE2_tree       = null;
        object INDEX3_tree        = null;
        object CONCURRENTLY4_tree = null;
        object ON5_tree           = null;
        object USING7_tree        = null;
        object LPAREN9_tree       = null;
        object COMMA11_tree       = null;
        object RPAREN13_tree      = null;

        try
        {
            // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:14:36: ( CREATE ( UNIQUE )? INDEX ( CONCURRENTLY )? name= index_name ON table_name ( USING id )? LPAREN index_column[index] ( COMMA index_column[index] )* RPAREN )
            // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:15:5: CREATE ( UNIQUE )? INDEX ( CONCURRENTLY )? name= index_name ON table_name ( USING id )? LPAREN index_column[index] ( COMMA index_column[index] )* RPAREN
            {
                root_0 = (object)adaptor.GetNilNode();

                CREATE1      = (IToken)Match(input, CREATE, FOLLOW_CREATE_in_create_index37);
                CREATE1_tree = (object)adaptor.Create(CREATE1);
                adaptor.AddChild(root_0, CREATE1_tree);

                // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:16:5: ( UNIQUE )?
                int alt1  = 2;
                int LA1_0 = input.LA(1);

                if ((LA1_0 == UNIQUE))
                {
                    alt1 = 1;
                }
                switch (alt1)
                {
                case 1:
                    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:16:6: UNIQUE
                {
                    UNIQUE2      = (IToken)Match(input, UNIQUE, FOLLOW_UNIQUE_in_create_index44);
                    UNIQUE2_tree = (object)adaptor.Create(UNIQUE2);
                    adaptor.AddChild(root_0, UNIQUE2_tree);

                    index.IsUnique = true;
                }
                break;
                }

                INDEX3      = (IToken)Match(input, INDEX, FOLLOW_INDEX_in_create_index54);
                INDEX3_tree = (object)adaptor.Create(INDEX3);
                adaptor.AddChild(root_0, INDEX3_tree);

                // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:18:5: ( CONCURRENTLY )?
                int alt2  = 2;
                int LA2_0 = input.LA(1);

                if ((LA2_0 == CONCURRENTLY))
                {
                    alt2 = 1;
                }
                switch (alt2)
                {
                case 1:
                    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:18:5: CONCURRENTLY
                {
                    CONCURRENTLY4      = (IToken)Match(input, CONCURRENTLY, FOLLOW_CONCURRENTLY_in_create_index60);
                    CONCURRENTLY4_tree = (object)adaptor.Create(CONCURRENTLY4);
                    adaptor.AddChild(root_0, CONCURRENTLY4_tree);
                }
                break;
                }

                PushFollow(FOLLOW_index_name_in_create_index70);
                name = index_name();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, name.Tree);
                index.Name = UnquoteName(((name != null) ? input.ToString((IToken)(name.Start), (IToken)(name.Stop)) : null));
                ON5        = (IToken)Match(input, ON, FOLLOW_ON_in_create_index79);
                ON5_tree   = (object)adaptor.Create(ON5);
                adaptor.AddChild(root_0, ON5_tree);

                PushFollow(FOLLOW_table_name_in_create_index81);
                table_name6 = table_name();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, table_name6.Tree);
                index.SetDummyTable(((table_name6 != null) ? table_name6.result : default(NameWithSchema)));
                // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:21:5: ( USING id )?
                int alt3  = 2;
                int LA3_0 = input.LA(1);

                if ((LA3_0 == USING))
                {
                    alt3 = 1;
                }
                switch (alt3)
                {
                case 1:
                    // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:21:6: USING id
                {
                    USING7      = (IToken)Match(input, USING, FOLLOW_USING_in_create_index90);
                    USING7_tree = (object)adaptor.Create(USING7);
                    adaptor.AddChild(root_0, USING7_tree);

                    PushFollow(FOLLOW_id_in_create_index92);
                    id8 = id();
                    state.followingStackPointer--;

                    adaptor.AddChild(root_0, id8.Tree);
                }
                break;
                }

                LPAREN9      = (IToken)Match(input, LPAREN, FOLLOW_LPAREN_in_create_index100);
                LPAREN9_tree = (object)adaptor.Create(LPAREN9);
                adaptor.AddChild(root_0, LPAREN9_tree);

                PushFollow(FOLLOW_index_column_in_create_index102);
                index_column10 = index_column(index);
                state.followingStackPointer--;

                adaptor.AddChild(root_0, index_column10.Tree);
                // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:22:32: ( COMMA index_column[index] )*
                do
                {
                    int alt4  = 2;
                    int LA4_0 = input.LA(1);

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


                    switch (alt4)
                    {
                    case 1:
                        // ..\\Plugin.postgre\\AntlrParser\\PostgreSQL.g:22:33: COMMA index_column[index]
                    {
                        COMMA11      = (IToken)Match(input, COMMA, FOLLOW_COMMA_in_create_index106);
                        COMMA11_tree = (object)adaptor.Create(COMMA11);
                        adaptor.AddChild(root_0, COMMA11_tree);

                        PushFollow(FOLLOW_index_column_in_create_index108);
                        index_column12 = index_column(index);
                        state.followingStackPointer--;

                        adaptor.AddChild(root_0, index_column12.Tree);
                    }
                    break;

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

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

                RPAREN13      = (IToken)Match(input, RPAREN, FOLLOW_RPAREN_in_create_index113);
                RPAREN13_tree = (object)adaptor.Create(RPAREN13);
                adaptor.AddChild(root_0, RPAREN13_tree);
            }

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

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