public override Valor Clonar() { ValorArreglo arr = new ValorArreglo((Arreglo)Tipo); for (int i = 0; i < elementos.Count; i++) { Valor tmpcl = ((Valor) Elementos[i]).Clonar(); arr.Elementos[i] = tmpcl; //arr.getElementos().set(i, elementos.get(i).Clonar()); } return arr; }
protected override void interpretarSentencia() { if (Valor == null) { if (Tip is Arreglo) { Arreglo tmptip = (Arreglo)Tip; ValorArreglo tmp = new ValorArreglo(tmptip); InfInterpretador.getInstance().asignarValor(Var.id, tmp); } else if (Tip is Class) { Dictionary<string, Valor> miembrosc = new Dictionary<string, Valor>(); Class tmpclass = (Class) Tip; foreach (var VARIABLE in tmpclass.Campos) { miembrosc.Add(VARIABLE.Key,null); } ValorClase valorClase = new ValorClase(miembrosc); InfInterpretador.getInstance().asignarValor(Var.id, valorClase); } else if (Tip is Struct) { Tipo TipTemp = InfSemantica.getInstance().tblTipos[((Struct) Tip).nombre]; Struct TipReg = (Struct) TipTemp; Dictionary<string, Valor> miembrosStr = new Dictionary<string, Valor>(); foreach (var VARIABLE in TipReg.Campos) { miembrosStr.Add(VARIABLE.Key, null); } ValorRegistro valorReg = new ValorRegistro(miembrosStr); InfInterpretador.getInstance().asignarValor(Var.id, valorReg); } else { InfInterpretador.getInstance().asignarValor(Var.id, null); } } else { Valor tmp = Valor.interpretar(); InfInterpretador.getInstance().asignarValor(Var.id, tmp); } }