Beispiel #1
0
    // throws RecognitionException [1]
    // $ANTLR start lista_instrucciones
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:53:1: lista_instrucciones : ^( LISTAINSTRUCCIONES (i+= instruccion )* ) -> listainst(instr=$i);
    public lista_instrucciones_return lista_instrucciones()
    {
        lista_instrucciones_return retval = new lista_instrucciones_return();
        retval.start = input.LT(1);

        IList list_i = null;
        RuleReturnScope i = null;
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:53:21: ( ^( LISTAINSTRUCCIONES (i+= instruccion )* ) -> listainst(instr=$i))
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:53:23: ^( LISTAINSTRUCCIONES (i+= instruccion )* )
            {
                Match(input,LISTAINSTRUCCIONES,FOLLOW_LISTAINSTRUCCIONES_in_lista_instrucciones162);

                if ( input.LA(1) == Token.DOWN )
                {
                    Match(input, Token.DOWN, null);
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:53:44: (i+= instruccion )*
                    do
                    {
                        int alt2 = 2;
                        int LA2_0 = input.LA(1);

                        if ( (LA2_0 == DECLARACION || (LA2_0 >= ASIGNACION && LA2_0 <= MENOSUNARIO) || LA2_0 == LLAMADA || (LA2_0 >= IDENT && LA2_0 <= LIT_LOGICO) || LA2_0 == 33 || (LA2_0 >= 35 && LA2_0 <= 36) || (LA2_0 >= 44 && LA2_0 <= 54)) )
                        {
                            alt2 = 1;
                        }

                        switch (alt2)
                        {
                            case 1 :
                                // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:53:45: i+= instruccion
                                {
                                    PushFollow(FOLLOW_instruccion_in_lista_instrucciones167);
                                    i = instruccion();
                                    followingStackPointer_--;

                                    if (list_i == null) list_i = new ArrayList();
                                    list_i.Add(i.Template);

                                }
                                break;

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

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

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

                // TEMPLATE REWRITE
                // 53:63: -> listainst(instr=$i)
                {
                    retval.st = templateLib.GetInstanceOf("listainst",
                  new STAttrMap().Add("instr", list_i));
                }

            }

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
Beispiel #2
0
    // throws RecognitionException [1]
    // $ANTLR start lista_instrucciones
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:1: lista_instrucciones : (lista+= instruccion )* -> ^( LISTAINSTRUCCIONES ( $lista)* ) ;
    public lista_instrucciones_return lista_instrucciones()
    {
        lista_instrucciones_return retval = new lista_instrucciones_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        IList list_lista = null;
        RuleReturnScope lista = null;
        RewriteRuleSubtreeStream stream_instruccion = new RewriteRuleSubtreeStream(adaptor,"rule instruccion");
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:21: ( (lista+= instruccion )* -> ^( LISTAINSTRUCCIONES ( $lista)* ) )
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:23: (lista+= instruccion )*
            {
                // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:23: (lista+= instruccion )*
                do
                {
                    int alt2 = 2;
                    int LA2_0 = input.LA(1);

                    if ( ((LA2_0 >= IDENT && LA2_0 <= LIT_LOGICO) || LA2_0 == 25 || LA2_0 == 33 || (LA2_0 >= 35 && LA2_0 <= 41) || (LA2_0 >= 50 && LA2_0 <= 51) || LA2_0 == 54) )
                    {
                        alt2 = 1;
                    }

                    switch (alt2)
                    {
                        case 1 :
                            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:24: lista+= instruccion
                            {
                                PushFollow(FOLLOW_instruccion_in_lista_instrucciones213);
                                lista = instruccion();
                                followingStackPointer_--;

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

                            }
                            break;

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

                loop2:
                    ;	// Stops C# compiler whinging that label 'loop2' 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();
                // 74:45: -> ^( LISTAINSTRUCCIONES ( $lista)* )
                {
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:74:48: ^( LISTAINSTRUCCIONES ( $lista)* )
                    {
                    FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode();
                    root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(LISTAINSTRUCCIONES, "LISTAINSTRUCCIONES"), root_1);

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

                    }
                    stream_lista.Reset();

                    adaptor.AddChild(root_0, root_1);
                    }

                }

            }

            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;
    }