Exemplo n.º 1
0
    // throws RecognitionException [1]
    // $ANTLR start inst_while
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:77:1: inst_while : ^( 'while' expresion li= lista_instrucciones ) -> instwhile(cond=$expresion.stinstrucciones=$li.stet1=nEtiqueta++);
    public inst_while_return inst_while()
    {
        inst_while_return retval = new inst_while_return();
        retval.start = input.LT(1);

        lista_instrucciones_return li = null;

        expresion_return expresion16 = null;

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:77:12: ( ^( 'while' expresion li= lista_instrucciones ) -> instwhile(cond=$expresion.stinstrucciones=$li.stet1=nEtiqueta++))
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:77:14: ^( 'while' expresion li= lista_instrucciones )
            {
                Match(input,35,FOLLOW_35_in_inst_while436);

                Match(input, Token.DOWN, null);
                PushFollow(FOLLOW_expresion_in_inst_while438);
                expresion16 = expresion();
                followingStackPointer_--;

                PushFollow(FOLLOW_lista_instrucciones_in_inst_while442);
                li = lista_instrucciones();
                followingStackPointer_--;

                Match(input, Token.UP, null);

                // TEMPLATE REWRITE
                // 78:14: -> instwhile(cond=$expresion.stinstrucciones=$li.stet1=nEtiqueta++)
                {
                    retval.st = templateLib.GetInstanceOf("instwhile",
                  new STAttrMap().Add("cond", expresion16.st).Add("instrucciones", li.st).Add("et1", nEtiqueta++));
                }

            }

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
Exemplo n.º 2
0
    // throws RecognitionException [1]
    // $ANTLR start inst_while
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:105:1: inst_while : 'while' '(' expresion ')' '{' lista_instrucciones '}' ;
    public inst_while_return inst_while()
    {
        inst_while_return retval = new inst_while_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        IToken string_literal46 = null;
        IToken char_literal47 = null;
        IToken char_literal49 = null;
        IToken char_literal50 = null;
        IToken char_literal52 = null;
        expresion_return expresion48 = null;

        lista_instrucciones_return lista_instrucciones51 = null;

        FkvmAST string_literal46_tree=null;
        FkvmAST char_literal47_tree=null;
        FkvmAST char_literal49_tree=null;
        FkvmAST char_literal50_tree=null;
        FkvmAST char_literal52_tree=null;

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:105:12: ( 'while' '(' expresion ')' '{' lista_instrucciones '}' )
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:105:14: 'while' '(' expresion ')' '{' lista_instrucciones '}'
            {
                root_0 = (FkvmAST)adaptor.GetNilNode();

                string_literal46 = (IToken)input.LT(1);
                Match(input,35,FOLLOW_35_in_inst_while495);
                string_literal46_tree = (FkvmAST)adaptor.Create(string_literal46);
                root_0 = (FkvmAST)adaptor.BecomeRoot(string_literal46_tree, root_0);

                char_literal47 = (IToken)input.LT(1);
                Match(input,25,FOLLOW_25_in_inst_while498);
                PushFollow(FOLLOW_expresion_in_inst_while501);
                expresion48 = expresion();
                followingStackPointer_--;

                adaptor.AddChild(root_0, expresion48.Tree);
                char_literal49 = (IToken)input.LT(1);
                Match(input,26,FOLLOW_26_in_inst_while503);
                char_literal50 = (IToken)input.LT(1);
                Match(input,29,FOLLOW_29_in_inst_while506);
                PushFollow(FOLLOW_lista_instrucciones_in_inst_while509);
                lista_instrucciones51 = lista_instrucciones();
                followingStackPointer_--;

                adaptor.AddChild(root_0, lista_instrucciones51.Tree);
                char_literal52 = (IToken)input.LT(1);
                Match(input,30,FOLLOW_30_in_inst_while511);

            }

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