示例#1
0
        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;
        }
示例#2
0
        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);
            }
        }