Exemple #1
0
    // throws RecognitionException [1]
    // $ANTLR start inst_decl
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:65:1: inst_decl : ^( DECLARACION tipo IDENT ) -> declaracion(tipo=$tipo.textid=$IDENT.text);
    public inst_decl_return inst_decl()
    {
        inst_decl_return retval = new inst_decl_return();
        retval.start = input.LT(1);

        FkvmAST IDENT11 = null;
        tipo_return tipo10 = null;

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:65:11: ( ^( DECLARACION tipo IDENT ) -> declaracion(tipo=$tipo.textid=$IDENT.text))
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:65:13: ^( DECLARACION tipo IDENT )
            {
                Match(input,DECLARACION,FOLLOW_DECLARACION_in_inst_decl293);

                Match(input, Token.DOWN, null);
                PushFollow(FOLLOW_tipo_in_inst_decl295);
                tipo10 = tipo();
                followingStackPointer_--;

                IDENT11 = (FkvmAST)input.LT(1);
                Match(input,IDENT,FOLLOW_IDENT_in_inst_decl297);

                Match(input, Token.UP, null);

                // TEMPLATE REWRITE
                // 65:39: -> declaracion(tipo=$tipo.textid=$IDENT.text)
                {
                    retval.st = templateLib.GetInstanceOf("declaracion",
                  new STAttrMap().Add("tipo", input.TokenStream.ToString(
                  input.TreeAdaptor.GetTokenStartIndex(tipo10.start),
                  input.TreeAdaptor.GetTokenStopIndex(tipo10.start) )).Add("id", IDENT11.Text));
                }

            }

        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
Exemple #2
0
    // throws RecognitionException [1]
    // $ANTLR start inst_decl
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:85:1: inst_decl : tipo IDENT ';' -> ^( DECLARACION tipo IDENT ) ;
    public inst_decl_return inst_decl()
    {
        inst_decl_return retval = new inst_decl_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        IToken IDENT25 = null;
        IToken char_literal26 = null;
        tipo_return tipo24 = null;

        FkvmAST IDENT25_tree=null;
        FkvmAST char_literal26_tree=null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor,"token IDENT");
        RewriteRuleTokenStream stream_27 = new RewriteRuleTokenStream(adaptor,"token 27");
        RewriteRuleSubtreeStream stream_tipo = new RewriteRuleSubtreeStream(adaptor,"rule tipo");
        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:85:11: ( tipo IDENT ';' -> ^( DECLARACION tipo IDENT ) )
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:85:13: tipo IDENT ';'
            {
                PushFollow(FOLLOW_tipo_in_inst_decl295);
                tipo24 = tipo();
                followingStackPointer_--;

                stream_tipo.Add(tipo24.Tree);
                IDENT25 = (IToken)input.LT(1);
                Match(input,IDENT,FOLLOW_IDENT_in_inst_decl297);
                stream_IDENT.Add(IDENT25);

                char_literal26 = (IToken)input.LT(1);
                Match(input,27,FOLLOW_27_in_inst_decl299);
                stream_27.Add(char_literal26);

                     if(!symtable.ContainsKey(IDENT25.Text))
                     {
                           symtable.Add(IDENT25.Text, new Symbol(input.ToString(tipo24.start,tipo24.stop), numVars++));
                     }

                // AST REWRITE
                // elements:          tipo, IDENT
                // 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();
                // 90:8: -> ^( DECLARACION tipo IDENT )
                {
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:90:11: ^( DECLARACION tipo IDENT )
                    {
                    FkvmAST root_1 = (FkvmAST)adaptor.GetNilNode();
                    root_1 = (FkvmAST)adaptor.BecomeRoot(adaptor.Create(DECLARACION, "DECLARACION"), root_1);

                    adaptor.AddChild(root_1, stream_tipo.Next());
                    adaptor.AddChild(root_1, stream_IDENT.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;
    }