예제 #1
0
    // throws RecognitionException [1]
    // $ANTLR start inst_asig
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:67:1: inst_asig : ^( ASIGNACION IDENT expresion ) -> asignacion(op=opernv=$IDENT.symbol.numvarval=$expresion.st);
    public inst_asig_return inst_asig()
    {
        inst_asig_return retval = new inst_asig_return();
        retval.start = input.LT(1);

        FkvmAST ASIGNACION12 = null;
        FkvmAST IDENT13 = null;
        expresion_return expresion14 = null;

        string oper = "";

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:71:9: ( ^( ASIGNACION IDENT expresion ) -> asignacion(op=opernv=$IDENT.symbol.numvarval=$expresion.st))
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:71:11: ^( ASIGNACION IDENT expresion )
            {
                ASIGNACION12 = (FkvmAST)input.LT(1);
                Match(input,ASIGNACION,FOLLOW_ASIGNACION_in_inst_asig335);

                Match(input, Token.DOWN, null);
                IDENT13 = (FkvmAST)input.LT(1);
                Match(input,IDENT,FOLLOW_IDENT_in_inst_asig337);
                PushFollow(FOLLOW_expresion_in_inst_asig339);
                expresion14 = expresion();
                followingStackPointer_--;

                Match(input, Token.UP, null);
                oper = traducirTipo(ASIGNACION12.expType)+"store";

                // TEMPLATE REWRITE
                // 72:12: -> asignacion(op=opernv=$IDENT.symbol.numvarval=$expresion.st)
                {
                    retval.st = templateLib.GetInstanceOf("asignacion",
                  new STAttrMap().Add("op", oper).Add("nv", IDENT13.symbol.numvar).Add("val", expresion14.st));
                }

            }

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
예제 #2
0
    // throws RecognitionException [1]
    // $ANTLR start inst_asig
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:98:1: inst_asig : IDENT '=' expresion ';' -> ^( ASIGNACION IDENT expresion ) ;
    public inst_asig_return inst_asig()
    {
        inst_asig_return retval = new inst_asig_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        IToken IDENT30 = null;
        IToken char_literal31 = null;
        IToken char_literal33 = null;
        expresion_return expresion32 = null;

        FkvmAST IDENT30_tree=null;
        FkvmAST char_literal31_tree=null;
        FkvmAST char_literal33_tree=null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor,"token IDENT");
        RewriteRuleTokenStream stream_32 = new RewriteRuleTokenStream(adaptor,"token 32");
        RewriteRuleTokenStream stream_27 = new RewriteRuleTokenStream(adaptor,"token 27");
        RewriteRuleSubtreeStream stream_expresion = new RewriteRuleSubtreeStream(adaptor,"rule expresion");
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:98:11: ( IDENT '=' expresion ';' -> ^( ASIGNACION IDENT expresion ) )
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:98:13: IDENT '=' expresion ';'
            {
                IDENT30 = (IToken)input.LT(1);
                Match(input,IDENT,FOLLOW_IDENT_in_inst_asig406);
                stream_IDENT.Add(IDENT30);

                char_literal31 = (IToken)input.LT(1);
                Match(input,32,FOLLOW_32_in_inst_asig408);
                stream_32.Add(char_literal31);

                PushFollow(FOLLOW_expresion_in_inst_asig410);
                expresion32 = expresion();
                followingStackPointer_--;

                stream_expresion.Add(expresion32.Tree);
                char_literal33 = (IToken)input.LT(1);
                Match(input,27,FOLLOW_27_in_inst_asig412);
                stream_27.Add(char_literal33);

                // AST REWRITE
                // elements:          IDENT, expresion
                // 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();
                // 98:37: -> ^( ASIGNACION IDENT expresion )
                {
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:98:40: ^( ASIGNACION IDENT expresion )
                    {
                    FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode();
                    root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(ASIGNACION, "ASIGNACION"), root_1);

                    adaptor.AddChild(root_1, stream_IDENT.Next());
                    adaptor.AddChild(root_1, stream_expresion.Next());

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