public Tipos GetTipo(Entorno e) { Simbolo simbolo = e.Obtener(id); if (simbolo != null) { if (simbolo.IsObject()) { Objeto objeto = (Objeto)simbolo; Simbolo aux = null; foreach (string atributo in atributos) { aux = objeto.GetAtributo(atributo); if (aux == null) { return(Tipos.NULL); } if (aux.IsObject()) { objeto = (Objeto)aux; } } if (aux == null) { return(Tipos.NULL); } return(aux.tipo); } } return(Tipos.NULL); }
public void Ejecutar(Entorno e) { Simbolo s = e.Obtener(id); if (s == null) { Console.WriteLine("No existe el identificador " + id + " en este entorno"); return; } //Si existe el simbolo if (!s.IsObject()) { Console.WriteLine("No se puede acceder a los atributos de " + id + " porque no es un objeto"); return; } //Si es un objeto Objeto o = (Objeto)s; Simbolo aux = null; foreach (string atributo in atributos) { aux = o.GetAtributo(atributo); if (aux == null) { Console.WriteLine("No se puede acceder al atributo " + atributo); return; } //Si encontro el atributo verifico si es un objeto para actualizar mi objecto de acceso if (aux.IsObject()) { o = (Objeto)aux; } } //Una vez tengo el simbolo solicitado, actualizo su valor /****************************************** * AQUI ME FALTA LA COMPROBACION DE TIPOS *******************************************/ Object val = valor.GetValor(e); if (aux != null) { aux.valor = val; } }
public object GetValor(Entorno e) { Simbolo simbolo = e.Obtener(id); if (simbolo == null) { Console.WriteLine("No se encontro el identificador " + id + "en este entorno D:"); return(null); } //Si se encontro el simbolo if (!simbolo.IsObject()) { Console.WriteLine("El identificador " + id + " no es un objeto"); return(null); } //Si es un objeto Objeto objeto = (Objeto)simbolo; Simbolo aux = null; foreach (string atributo in atributos) { aux = objeto.GetAtributo(atributo); if (aux == null) { Console.WriteLine("El objeto " + id + " no contiene ningun atributo " + atributo); return(null); } if (aux.IsObject()) { objeto = (Objeto)aux; } } //Si nuestro auxiliar es null if (aux == null) { Console.WriteLine("Error al acceder a los atributos de " + id); return(null); } return(aux.valor); }