Пример #1
0
    // throws RecognitionException [1]
    // $ANTLR start expresion
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:99:1: expresion : ( ^(opc= opComparacion e1= expresion e2= expresion ) -> op_comparacion(opc=opercop=$opc.ste1=$e1.ste2=$e2.stet1=nEtiqueta++) | ^(opa= opAritmetico e1= expresion e2= expresion ) -> op_aritmetico(op=opere1=$e1.ste2=$e2.st) | ^( MENOSUNARIO e1= expresion ) -> opmenosunario(e1=$e1.st) | ^( '!' e1= expresion ) -> opno(e1=$e1.st) | IDENT -> ident(op=opernv=$IDENT.symbol.numvar) | literal -> {$literal.st} | llamada -> {$llamada.st});
    public expresion_return expresion()
    {
        expresion_return retval = new expresion_return();
        retval.start = input.LT(1);

        FkvmAST IDENT22 = null;
        opComparacion_return opc = null;

        expresion_return e1 = null;

        expresion_return e2 = null;

        opAritmetico_return opa = null;

        literal_return literal23 = null;

        llamada_return llamada24 = null;

        string oper = "";
        string operc = "";

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:104:11: ( ^(opc= opComparacion e1= expresion e2= expresion ) -> op_comparacion(opc=opercop=$opc.ste1=$e1.ste2=$e2.stet1=nEtiqueta++) | ^(opa= opAritmetico e1= expresion e2= expresion ) -> op_aritmetico(op=opere1=$e1.ste2=$e2.st) | ^( MENOSUNARIO e1= expresion ) -> opmenosunario(e1=$e1.st) | ^( '!' e1= expresion ) -> opno(e1=$e1.st) | IDENT -> ident(op=opernv=$IDENT.symbol.numvar) | literal -> {$literal.st} | llamada -> {$llamada.st})
            int alt6 = 7;
            switch ( input.LA(1) )
            {
            case 44:
            case 45:
            case 46:
            case 47:
            case 48:
            case 49:
                {
                alt6 = 1;
                }
                break;
            case 50:
            case 51:
            case 52:
            case 53:
                {
                alt6 = 2;
                }
                break;
            case MENOSUNARIO:
                {
                alt6 = 3;
                }
                break;
            case 54:
                {
                alt6 = 4;
                }
                break;
            case IDENT:
                {
                alt6 = 5;
                }
                break;
            case LIT_ENTERO:
            case LIT_REAL:
            case LIT_CADENA:
            case LIT_LOGICO:
                {
                alt6 = 6;
                }
                break;
            case LLAMADA:
                {
                alt6 = 7;
                }
                break;
                default:
                    NoViableAltException nvae_d6s0 =
                        new NoViableAltException("99:1: expresion : ( ^(opc= opComparacion e1= expresion e2= expresion ) -> op_comparacion(opc=opercop=$opc.ste1=$e1.ste2=$e2.stet1=nEtiqueta++) | ^(opa= opAritmetico e1= expresion e2= expresion ) -> op_aritmetico(op=opere1=$e1.ste2=$e2.st) | ^( MENOSUNARIO e1= expresion ) -> opmenosunario(e1=$e1.st) | ^( '!' e1= expresion ) -> opno(e1=$e1.st) | IDENT -> ident(op=opernv=$IDENT.symbol.numvar) | literal -> {$literal.st} | llamada -> {$llamada.st});", 6, 0, input);

                    throw nvae_d6s0;
            }

            switch (alt6)
            {
                case 1 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:104:13: ^(opc= opComparacion e1= expresion e2= expresion )
                    {
                        PushFollow(FOLLOW_opComparacion_in_expresion710);
                        opc = opComparacion();
                        followingStackPointer_--;

                        Match(input, Token.DOWN, null);
                        PushFollow(FOLLOW_expresion_in_expresion714);
                        e1 = expresion();
                        followingStackPointer_--;

                        PushFollow(FOLLOW_expresion_in_expresion718);
                        e2 = expresion();
                        followingStackPointer_--;

                        Match(input, Token.UP, null);
                        operc = operadorComparacion(opc.opSecType);

                        // TEMPLATE REWRITE
                        // 105:14: -> op_comparacion(opc=opercop=$opc.ste1=$e1.ste2=$e2.stet1=nEtiqueta++)
                        {
                            retval.st = templateLib.GetInstanceOf("op_comparacion",
                          new STAttrMap().Add("opc", operc).Add("op", opc.st).Add("e1", e1.st).Add("e2", e2.st).Add("et1", nEtiqueta++));
                        }

                    }
                    break;
                case 2 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:106:13: ^(opa= opAritmetico e1= expresion e2= expresion )
                    {
                        PushFollow(FOLLOW_opAritmetico_in_expresion780);
                        opa = opAritmetico();
                        followingStackPointer_--;

                        Match(input, Token.DOWN, null);
                        PushFollow(FOLLOW_expresion_in_expresion784);
                        e1 = expresion();
                        followingStackPointer_--;

                        PushFollow(FOLLOW_expresion_in_expresion788);
                        e2 = expresion();
                        followingStackPointer_--;

                        Match(input, Token.UP, null);
                        oper = traducirTipo(opa.opType)+opa.st.ToString();

                        // TEMPLATE REWRITE
                        // 107:14: -> op_aritmetico(op=opere1=$e1.ste2=$e2.st)
                        {
                            retval.st = templateLib.GetInstanceOf("op_aritmetico",
                          new STAttrMap().Add("op", oper).Add("e1", e1.st).Add("e2", e2.st));
                        }

                    }
                    break;
                case 3 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:108:13: ^( MENOSUNARIO e1= expresion )
                    {
                        Match(input,MENOSUNARIO,FOLLOW_MENOSUNARIO_in_expresion839);

                        Match(input, Token.DOWN, null);
                        PushFollow(FOLLOW_expresion_in_expresion843);
                        e1 = expresion();
                        followingStackPointer_--;

                        Match(input, Token.UP, null);

                        // TEMPLATE REWRITE
                        // 108:41: -> opmenosunario(e1=$e1.st)
                        {
                            retval.st = templateLib.GetInstanceOf("opmenosunario",
                          new STAttrMap().Add("e1", e1.st));
                        }

                    }
                    break;
                case 4 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:109:13: ^( '!' e1= expresion )
                    {
                        Match(input,54,FOLLOW_54_in_expresion868);

                        Match(input, Token.DOWN, null);
                        PushFollow(FOLLOW_expresion_in_expresion872);
                        e1 = expresion();
                        followingStackPointer_--;

                        Match(input, Token.UP, null);

                        // TEMPLATE REWRITE
                        // 109:33: -> opno(e1=$e1.st)
                        {
                            retval.st = templateLib.GetInstanceOf("opno",
                          new STAttrMap().Add("e1", e1.st));
                        }

                    }
                    break;
                case 5 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:110:13: IDENT
                    {
                        IDENT22 = (FkvmAST)input.LT(1);
                        Match(input,IDENT,FOLLOW_IDENT_in_expresion896);
                        oper = traducirTipo(IDENT22.expType)+"load";

                        // TEMPLATE REWRITE
                        // 110:65: -> ident(op=opernv=$IDENT.symbol.numvar)
                        {
                            retval.st = templateLib.GetInstanceOf("ident",
                          new STAttrMap().Add("op", oper).Add("nv", IDENT22.symbol.numvar));
                        }

                    }
                    break;
                case 6 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:111:13: literal
                    {
                        PushFollow(FOLLOW_literal_in_expresion926);
                        literal23 = literal();
                        followingStackPointer_--;

                        // TEMPLATE REWRITE
                        // 111:21: -> {$literal.st}
                        {
                            retval.st = literal23.st;
                        }

                    }
                    break;
                case 7 :
                    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVMGen.g:112:13: llamada
                    {
                        PushFollow(FOLLOW_llamada_in_expresion944);
                        llamada24 = llamada();
                        followingStackPointer_--;

                        // TEMPLATE REWRITE
                        // 112:21: -> {$llamada.st}
                        {
                            retval.st = llamada24.st;
                        }

                    }
                    break;

            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        }
        finally
        {
        }
        return retval;
    }
Пример #2
0
    // throws RecognitionException [1]
    // $ANTLR start expresion
    // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:116:1: expresion : expOr ;
    public expresion_return expresion()
    {
        expresion_return retval = new expresion_return();
        retval.start = input.LT(1);

        FkvmAST root_0 = null;

        expOr_return expOr58 = null;

        try
        {
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:116:11: ( expOr )
            // D:\\Proyectos\\ProyectosVS\\FKVM\\FKVM\\src\\antlr\\FKVM.g:116:13: expOr
            {
                root_0 = (FkvmAST)adaptor.GetNilNode();

                PushFollow(FOLLOW_expOr_in_expresion598);
                expOr58 = expOr();
                followingStackPointer_--;

                adaptor.AddChild(root_0, expOr58.Tree);

            }

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