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