public override Objeto ejecutar() { Objeto valor = tablaDeSimbolos.Valor(id); if (valor == null) { throw new LanguageException(string.Format("La variable {0} no ha sido definida. Verifique si ya creó la variable y que no cometió ningún error en la escritura.", id)); } return(valor); }
protected internal override object ObtenerElObjeto() { if (!tablaDeSimbolos.ExisteLaVariable(instancia_Renamed)) { throw new LanguageException("La variable '" + instancia_Renamed + "' es desconocida"); } Objeto objetoInstancia = tablaDeSimbolos.Valor(instancia_Renamed); return((object)objetoInstancia); }
public override void Ejecutar() { if (lValue is IdConPunto) { IdConPunto referencia = (IdConPunto)lValue; string instancia = referencia.instancia(); if (!tablaDeSimbolos.ExisteLaVariable(instancia)) { throw new LanguageException(string.Format("No se ha definido la variable {0}. Verifique el nombre", instancia)); } Objeto objeto = tablaDeSimbolos.Valor(instancia); Objeto valorDeLaExpresionDerecha = rValue.ejecutar(); FieldInfo fieldInfo = ObtenerElFieldDelObjetoSiExiste(); if (fieldInfo != null) { fieldInfo.SetValue(objeto, ImplicitCast(UnBoxing(valorDeLaExpresionDerecha), fieldInfo.FieldType)); return; } PropertyInfo propertyInfo = ObtenerElPropertyDelObjetoSiExiste(); if (propertyInfo != null) { propertyInfo.SetValue(objeto, ImplicitCast(UnBoxing(valorDeLaExpresionDerecha), propertyInfo.PropertyType)); return; } else { objeto.setAtributo(referencia.Propiedad(), valorDeLaExpresionDerecha); } } else if (lValue is PuntoConPunto) { } else { string nuevaVariable = ((Id)lValue).Valor; Objeto valorDeLaExpresionDerecha = rValue.ejecutar(); tablaDeSimbolos.GuardarVariable(nuevaVariable, valorDeLaExpresionDerecha); } }