public decimal Calcular(decimal operando1, decimal operando2, int operador = 1)
        {
            if (operador < 1 || operador > 4)
            {
                operador = 1;
            }

            Operacion miOperacion = new Operacion {
                Operando1 = operando1,
                Operando2 = operando2,
                Operador  = operador
            };

            return(miOperacion.Ejecutar());
        }
Beispiel #2
0
        public List <Tipo_Objeto> buildObject(string id, List <Tipo_Collection> objeto, TablaDeSimbolos ts)
        {
            List <Tipo_Objeto> lst_valores = new List <Tipo_Objeto>();
            Objeto             proto       = getTipo(id);

            if (proto.Atributos.Count == objeto.Count)
            {
                for (int i = 0; i < objeto.Count; i++)
                {
                    if (objeto.ElementAt(i).Real_type == Tipo.USER_TYPES)
                    {
                        List <Tipo_Collection> lst = (List <Tipo_Collection>)objeto.ElementAt(i).Valor;
                        lst_valores.Add(new Tipo_Objeto(proto.Atributos.ElementAt(i).Name.ToLower(), buildObject(id, lst, ts)));
                    }
                    else
                    {
                        try
                        {
                            Operacion valor = (Operacion)objeto.ElementAt(i).Valor;
                            lst_valores.Add(new Tipo_Objeto(proto.Atributos.ElementAt(i).Name.ToLower(), valor.Ejecutar(ts)));
                        }
                        catch
                        {
                            lst_valores.Add(new Tipo_Objeto(proto.Atributos.ElementAt(i).Name.ToLower(), objeto.ElementAt(i).Valor));
                        }
                    }
                }
                return(lst_valores);
            }
            return(null);
        }
Beispiel #3
0
        public static object getValor(Tipo tipo, string id, object valor, TablaDeSimbolos ts)
        {
            switch (tipo)
            {
            case Tipo.MAP:
                Map             map_actual = (Map)ts.getValor(id);
                Variable_Metodo aux        = (Variable_Metodo)valor;
                string          clave;
                if (aux.Metodo.ToLower().Equals("get"))
                {
                    clave = aux.Clave.Ejecutar(ts).ToString();

                    if (map_actual.containsKey(clave))
                    {
                        Tipo_Collection val = (Tipo_Collection)map_actual.Get(clave);

                        if (val.Real_type == Tipo.OPERACION)
                        {
                            Operacion op = (Operacion)val.Valor;
                            return(op.Ejecutar(ts));
                        }
                    }
                }
                else if (aux.Metodo.ToLower().Equals("insert"))
                {
                    clave = aux.Clave.Ejecutar(ts).ToString();
                    bool salida = map_actual.insert(clave, aux.Valor);
                    ts.setValor(id, map_actual.Mapita);
                    return(salida);
                }
                else if (aux.Metodo.ToLower().Equals("set"))
                {
                    clave = aux.Clave.Ejecutar(ts).ToString();
                    bool salida = map_actual.Set(clave, aux.Valor);
                    ts.setValor(id, map_actual.Mapita);
                    return(salida);
                }
                else if (aux.Metodo.ToLower().Equals("remove"))
                {
                    clave = aux.Clave.Ejecutar(ts).ToString();
                    bool salida = map_actual.Remove(clave);
                    ts.setValor(id, map_actual.Mapita);
                    return(salida);
                }
                else if (aux.Metodo.ToLower().Equals("clear"))
                {
                    map_actual.clear();
                    ts.setValor(id, map_actual.Mapita);
                    return(true);
                }
                else if (aux.Metodo.ToLower().Equals("size"))
                {
                    return(Convert.ToDouble(map_actual.Size()));
                }
                else if (aux.Metodo.ToLower().Equals("contains"))
                {
                    clave = aux.Clave.Ejecutar(ts).ToString();
                    return(map_actual.containsKey(clave));
                }
                break;

            case Tipo.LIST:
                Lista lista_actual = (Lista)ts.getValor(id);
                aux = (Variable_Metodo)valor;
                if (aux.Metodo.ToLower().Equals("get"))
                {
                    int clave2 = Convert.ToInt32(aux.Clave.Ejecutar(ts).ToString());


                    Tipo_Collection val = (Tipo_Collection)lista_actual.Get(clave2);
                    if (val != null)
                    {
                        if (val.Real_type == Tipo.OPERACION)
                        {
                            Operacion op = (Operacion)val.Valor;
                            return(op.Ejecutar(ts));
                        }
                    }
                }
                else if (aux.Metodo.ToLower().Equals("insert"))
                {
                    lista_actual.Insert(aux.Valor);
                    ts.setValor(id, lista_actual.Lista_valores);
                    return(true);
                }
                else if (aux.Metodo.ToLower().Equals("set"))
                {
                    int  clave2 = Convert.ToInt32(aux.Clave.Ejecutar(ts).ToString());
                    bool salida = lista_actual.Set(clave2, aux.Valor);
                    ts.setValor(id, lista_actual.Lista_valores);
                    return(salida);
                }
                else if (aux.Metodo.ToLower().Equals("remove"))
                {
                    int  clave2 = Convert.ToInt32(aux.Clave.Ejecutar(ts).ToString());
                    bool salida = lista_actual.Remove(clave2);
                    ts.setValor(id, lista_actual.Lista_valores);
                    return(salida);
                }
                else if (aux.Metodo.ToLower().Equals("clear"))
                {
                    lista_actual.Clear();
                    ts.setValor(id, lista_actual.Lista_valores);
                }
                else if (aux.Metodo.ToLower().Equals("size"))
                {
                    return(Convert.ToDouble(lista_actual.Size()));
                }
                else if (aux.Metodo.ToLower().Equals("contains"))
                {
                    return(lista_actual.Contains(aux.Valor));
                }
                break;

            default:
                return(null);
            }
            return(null);
        }