Example #1
0
    // throws RecognitionException [1]
    // $ANTLR start lista_expr
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:1: lista_expr : ^( LISTAEXPRESIONES (exp+= expresion )* ) -> listaparams(lp=$exp);
    public lista_expr_return lista_expr()
    {
        lista_expr_return retval = new lista_expr_return();
        retval.start = input.LT(1);

        IList list_exp = null;
        RuleReturnScope exp = null;
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:12: ( ^( LISTAEXPRESIONES (exp+= expresion )* ) -> listaparams(lp=$exp))
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:14: ^( LISTAEXPRESIONES (exp+= expresion )* )
            {
                Match(input,LISTAEXPRESIONES,FOLLOW_LISTAEXPRESIONES_in_lista_expr1009);

                if ( input.LA(1) == Token.DOWN )
                {
                    Match(input, Token.DOWN, null);
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:36: (exp+= expresion )*
                    do
                    {
                        int alt7 = 2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0 == MENOSUNARIO || LA7_0 == LLAMADA || (LA7_0 >= IDENT && LA7_0 <= LIT_LOGICO) || (LA7_0 >= 44 && LA7_0 <= 54)) )
                        {
                            alt7 = 1;
                        }

                        switch (alt7)
                        {
                            case 1 :
                                // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:117:36: exp+= expresion
                                {
                                    PushFollow(FOLLOW_expresion_in_lista_expr1013);
                                    exp = expresion();
                                    followingStackPointer_--;

                                    if (list_exp == null) list_exp = new ArrayList();
                                    list_exp.Add(exp.Template);

                                }
                                break;

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

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

                    Match(input, Token.UP, null);
                }

                // TEMPLATE REWRITE
                // 117:50: -> listaparams(lp=$exp)
                {
                    retval.st = templateLib.GetInstanceOf("listaparams",
                  new STAttrMap().Add("lp", list_exp));
                }

            }

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
Example #2
0
    // throws RecognitionException [1]
    // $ANTLR start lista_expr
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:1: lista_expr : (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) );
    public lista_expr_return lista_expr()
    {
        lista_expr_return retval = new lista_expr_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        IToken char_literal97 = null;
        IList list_lista = null;
        RuleReturnScope lista = null;
        FkvmAST char_literal97_tree=null;
        RewriteRuleTokenStream stream_31 = new RewriteRuleTokenStream(adaptor,"token 31");
        RewriteRuleSubtreeStream stream_expresion = new RewriteRuleSubtreeStream(adaptor,"rule expresion");
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:12: (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) )
            int alt20 = 2;
            int LA20_0 = input.LA(1);

            if ( ((LA20_0 >= IDENT && LA20_0 <= LIT_LOGICO) || LA20_0 == 25 || (LA20_0 >= 50 && LA20_0 <= 51) || LA20_0 == 54) )
            {
                alt20 = 1;
            }
            else if ( (LA20_0 == 26) )
            {
                alt20 = 2;
            }
            else
            {
                NoViableAltException nvae_d20s0 =
                    new NoViableAltException("143:1: lista_expr : (lista+= expresion ( ',' lista+= expresion )* -> ^( LISTAEXPRESIONES ( $lista)* ) | -> ^( LISTAEXPRESIONES ) );", 20, 0, input);

                throw nvae_d20s0;
            }
            switch (alt20)
            {
                case 1 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:14: lista+= expresion ( ',' lista+= expresion )*
                    {
                        PushFollow(FOLLOW_expresion_in_lista_expr851);
                        lista = expresion();
                        followingStackPointer_--;

                        stream_expresion.Add(lista.Tree);
                        if (list_lista == null) list_lista = new ArrayList();
                        list_lista.Add(lista);

                        // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:31: ( ',' lista+= expresion )*
                        do
                        {
                            int alt19 = 2;
                            int LA19_0 = input.LA(1);

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

                            switch (alt19)
                            {
                                case 1 :
                                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:32: ',' lista+= expresion
                                    {
                                        char_literal97 = (IToken)input.LT(1);
                                        Match(input,31,FOLLOW_31_in_lista_expr854);
                                        stream_31.Add(char_literal97);

                                        PushFollow(FOLLOW_expresion_in_lista_expr858);
                                        lista = expresion();
                                        followingStackPointer_--;

                                        stream_expresion.Add(lista.Tree);
                                        if (list_lista == null) list_lista = new ArrayList();
                                        list_lista.Add(lista);

                                    }
                                    break;

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

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

                        // AST REWRITE
                        // elements:          lista
                        // token labels:
                        // rule labels:       retval
                        // token list labels:
                        // rule list labels:  lista
                        retval.tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null));
                        RewriteRuleSubtreeStream stream_lista = new RewriteRuleSubtreeStream(adaptor, "token lista", list_lista);
                        root_0 = (FkvmAST)adaptor.GetNilNode();
                        // 143:55: -> ^( LISTAEXPRESIONES ( $lista)* )
                        {
                            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:58: ^( LISTAEXPRESIONES ( $lista)* )
                            {
                            FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode();
                            root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(LISTAEXPRESIONES, "LISTAEXPRESIONES"), root_1);

                            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:143:77: ( $lista)*
                            while ( stream_lista.HasNext() )
                            {
                                adaptor.AddChild(root_1, ((ParserRuleReturnScope)stream_lista.Next()).Tree);

                            }
                            stream_lista.Reset();

                            adaptor.AddChild(root_0, root_1);
                            }

                        }

                    }
                    break;
                case 2 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:144:15:
                    {

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

                        root_0 = (FkvmAST)adaptor.GetNilNode();
                        // 144:15: -> ^( LISTAEXPRESIONES )
                        {
                            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:144:18: ^( LISTAEXPRESIONES )
                            {
                            FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode();
                            root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(LISTAEXPRESIONES, "LISTAEXPRESIONES"), root_1);

                            adaptor.AddChild(root_0, root_1);
                            }

                        }

                    }
                    break;

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

                retval.tree = (FkvmAST)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop);

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }